# Как оформлять задания и счета для самозанятых и ИП

> Сценарий Пачки. Бот «Кадровик» за три дня до конца задания присылает в беседу «Самозанятые и ИП» карточку с кнопкой «Сгенерировать задание» и собирает docx по шаблону. Бухгалтер проверяет документ в треде, менеджер отправляет его на подписание в КЭДО, а счёт, акт и чек бот приносит в тот же тред.

> Это Markdown-версия страницы https://pachca.com/scenarios/samozanyatye-i-ip для ИИ-агентов. Методы API, которые здесь названы, описаны в https://dev.pachca.com/llms.txt — открой его, прежде чем вызывать API. Остальные сценарии — в https://pachca.com/llms.txt.

## Что получится

1. Обработчик раз в день читает таблицу исполнителей и находит задания, которые кончаются через три дня. Бот публикует в беседе карточку с кнопкой «Сгенерировать задание».
2. По нажатию кнопки обработчик заполняет docx-шаблон: даты, сумма и сумма прописью. Файл приходит в тред. Бот зовёт в тред исполнителя, бухгалтера и менеджера.
3. После «ок» бухгалтера менеджер нажимает «Отправить на подписание». Обработчик вызывает API КЭДО.
4. Исполнитель загружает счёт, акт и чек из «Мой налог» в КЭДО. КЭДО шлёт уведомление на входящий вебхук бота, бот публикует в треде кнопку-ссылку на документ и упоминает бухгалтера.

Сроки заданий, шаблон документа и отправка в КЭДО живут в обработчике. Вариантов три:

- А. Без обработчика. В беседе закреплены шаблон задания в docx и таблица исполнителей со сроками. Бухгалтер ставит на сообщение с заданием напоминание: меню сообщения → «Напомнить» → за три дня до конца срока. Подписание, счёт и чек идут через КЭДО руками. Кнопок из демо здесь нет.
- Б. Без кода через n8n. Два воркфлоу. Первый по Schedule Trigger раз в день читает таблицу исполнителей (Google Sheets или своя база) и узлом Пачки шлёт карточку с кнопкой. Второй принимает нажатие через Webhook. По «Сгенерировать задание» он заполняет docx-шаблон (HTTP Request к сервису шаблонов, например Carbone, или Google Docs) и кладёт файл в тред. По «Отправить на подписание» он вызывает API КЭДО.
- В. Свой код. Обработчик с таблицей исполнителей, напоминанием по расписанию, генерацией задания из docx-шаблона с расчётом суммы с учётом налога, кнопками «Отправить на подписание» и «Редактировать», интеграцией с HR-Link или другим КЭДО и приёмом счетов и чеков.

## Что нужно до начала

- Доступ к Пачке от имени администратора со скоупами `chats:create`, `chat_members:write`, `bots:write`. Для шагов настройки и проверки нужны ещё `search:users`, `messages:create`, `messages:read`. Вход описан в правилах ниже.
- Доступ к API КЭДО: HR-Link, Контур.Сайн или другого сервиса.
- Для варианта Б — n8n с узлом Пачки: https://pachca.com/help-center/integrations/avtomatizacii-v-pachke-s-pomoshchyu-n8n

## Если ты ИИ-агент: правила работы

### Кто что делает

- Всё, для чего в инструкции назван метод API, делаешь ты. Не проси пользователя создать беседу, бота или сообщение руками.
- Пользователя проси только о входе в Пачку и о том, что есть в разделе «Попроси пользователя сделать руками».
- Если терминала у тебя нет, скажи об этом сразу и не делай вид, что настроил. Проведи пользователя по шагам для человека со страницы сценария и помоги с шаблоном или кодом обработчика.

### Как говорить с пользователем

- Пользователь не разработчик. Пиши коротко и простыми словами. Не называй методы API, скоупы, коды ответов, `id` и профили CLI. Вместо «скоупы» говори «права», вместо «обработчик» — «программа, которая отвечает за бота».
- О своих проверках не рассказывай. В сообщении только три вещи: что уже готово, что нужно от пользователя, что ты сделаешь дальше.
- Не спрашивай то, что можешь узнать сам через API или что легко поменять позже. Возьми значение из инструкции и назови его.
- Тексты сообщений бота бери из инструкции или напиши сам и продолжай. Покажи их в итоговом сообщении и предложи поменять. Подтверждения не жди.
- Вопросы из раздела «Спроси у пользователя» задавай теми же словами.

### Первое сообщение пользователю

Оно состоит из трёх частей. Первые две вместе занимают не больше пяти строк.

1. Что получится: одна-две строки.
2. Что ты создашь сам: беседа, бот, сообщения с названиями из инструкции. То, что зависит от выбора пользователя, называй условно: «если выберете бота, создам ещё…».
3. «От вас нужно»: вход в Пачку, если его ещё нет, и вопросы из раздела «Спроси у пользователя». Если сценарию или одному из вариантов нужен n8n, здесь же спроси, есть ли он у пользователя, и сразу попроси доступ словами из раздела «n8n» ниже: «если n8n есть, пришлите…».

Если часть результата появится только после ручного шага пользователя, скажи об этом одной строкой: «вопросы ретро по расписанию настроите сами, я подскажу как».

Ответ пользователя на вопросы — это согласие с планом. После него настраивай сразу, второго подтверждения не проси.

### Доступ к Пачке

- Токен выпускать и присылать в чат не нужно. Перед первым сообщением проверь вход: `npx -y @pachca/cli@latest auth status`. Если входа нет, попроси пользователя выполнить в своём терминале `npx -y @pachca/cli@latest auth login`. CLI покажет код, пользователь введёт его в браузере и подтвердит доступ. Пиши команды с `@latest`: без него может запуститься старая версия CLI из кэша, она вместо входа через браузер просит вставить токен.
- Права такого входа равны правам роли пользователя. Сам сверь их со скоупами из раздела «Что нужно до начала»: скоупы показывает `npx -y @pachca/cli@latest api GET /oauth/token/info`. Если прав не хватает, скажи простыми словами, чего ты не сможешь сделать, например «не смогу отправлять сообщения». Путей два: добавить это право токену в Пачке, в разделе «Автоматизации» → «API», или войти заново под владельцем или администратором пространства.
- Если `auth status` показывает `scopes: null`, это не значит, что прав нет: смотри `GET /oauth/token/info`. Для проверок из этих правил нужны ещё `search:chats`, `bots:read` и `profile:read`.
- Когда пользователь говорит «я», это владелец входа. Его `id` и ник отдаёт `GET /profile`.
- API вызывай через `npx -y @pachca/cli@latest api <МЕТОД> <путь> -o json`. Команду пиши целиком в каждом вызове, в переменную оболочки её не клади.
- Параметры запроса передавай как `--query ключ=значение`, например `--query query=Закупки`. Параметр без ключа CLI молча отбрасывает и возвращает весь список: легко решить, что нужная беседа уже есть.
- Тело запроса передавай через `--data` или `--input`. Почти у каждого метода записи тело обёрнуто в объект: `chat` у `POST /chats`, `message` у `POST /messages`, `task` у `POST /tasks`, `group_tag` у `POST /group_tags`, `user` у `PUT /users/{id}`, `webhook` у ботов. Обёртку показывает `--describe`, путь в нём пиши с `{id}`, а не с числом. Без обёртки `POST /chats` создаст беседу, но молча не добавит участников.
- Токены и адреса входящих вебхуков ботов в чат не выводи. Токен бота показывают один раз, при создании: сохрани его в файл.

### n8n

- Если n8n у пользователя нет, скажи, что его берут в облаке n8n Cloud или ставят на свой сервер, и дай ссылку на установку узлов Пачки: https://dev.pachca.com/guides/n8n/setup.md. Как ставить n8n, эта инструкция не описывает. Если в ней есть вариант без n8n, предложи начать с него, а к боту вернуться, когда n8n появится.
- Если n8n есть, попроси доступ к нему этими словами: «Пришлите адрес вашего n8n: ссылку, по которой вы открываете его в браузере. Ключ в чат не присылайте. В n8n откройте Settings → n8n API → Create an API key и скопируйте ключ. Сразу после этого выполните в терминале команду ниже как есть, вписывать в неё ничего не нужно. Она сохранит скопированный ключ в файл, на экране ничего не появится. Потом напишите мне „ключ сохранил“». Команда для macOS: `pbpaste > ~/n8n-key.txt`. Для другой системы подбери свою.
- Всё, что собираешь в n8n, делай на официальных узлах Пачки `n8n-nodes-pachca`. Узел `HTTP Request` для вызовов API Пачки не бери.

### Настройка

- Методы API бери из https://dev.pachca.com/llms.txt, на память не полагайся. Схему метода показывает команда `npx -y @pachca/cli@latest api <МЕТОД> <путь> --describe`.
- Порядок вызовов и разбор ошибок для чатов, ботов и форм есть в скиллах Пачки: `npx skills add pachca/openapi`. Ставь их, когда понадобятся, пользователя об этом не спрашивай.
- Перед созданием проверь, нет ли уже такой беседы и такого бота: `GET /search/chats`, `GET /bots`. Если есть, спроси, настраивать их или создать новые.
- `POST /group_tags` создаёт пустой тег. Сотруднику его назначает `PUT /users/{id}` с `list_tags`, нужен скоуп `users:update`. Поле заменяет набор тегов целиком: сначала прочитай текущие теги сотрудника через `GET /users/{id}` и передай их вместе с новым. Пока в теге никого нет, его упоминание никого не уведомит.
- Если метод ответил ошибкой, остановись и скажи пользователю простыми словами, что не получилось и что нужно, чтобы продолжить.
- Сообщения, которые публикуешь сам или которые отправляет бот, должны легко читаться с экрана, без перебора с отступами и выделением. Заголовок выдели жирным, текст под ним начинай со следующей строки. Связный текст пиши одним абзацем. Правила и шаги ставь нумерованными строками одна под другой и отдели их от вступления одной пустой строкой. Больше пустых строк в коротком сообщении не нужно. В карточке подписи полей выдели жирным, поля ставь строка под строкой. Жирным выделяй только заголовок и подписи полей. Списков и таблиц в разметке Пачки нет: цифры в начале строк остаются обычным текстом. Образец:

  ```text
  **Правила ретро**
  В последний день спринта сюда приходит сообщение с вопросами. Отвечаем в треде под ним.

  1. Каждый пункт пишем отдельным сообщением.
  2. Ставим 👍 тому, что важно обсудить.
  3. Итоги ведущий пишет одним сообщением и закрепляет его.
  ```
- Закрепление через API не проверить: его подтверждает только успешный ответ `POST /messages/{id}/pin`.
- Если для проверки бота ты отправлял в беседу служебные сообщения, например `/start`, удали их: `DELETE /messages/{id}`. Сообщения с правилами и шаблонами не удаляй.
- В конце напиши, что создано, что осталось сделать пользователю руками и как проверить, что сценарий работает.
- Откатить настройку: `DELETE /bots/{id}` удаляет бота, `PUT /chats/{id}/archive` отправляет беседу в архив.

## Как настроить сценарий вместе с пользователем

### 1. Спроси у пользователя

Задай эти вопросы этими словами:

1. Как вести задания исполнителям? Вручную, по закреплённым шаблону и таблице сроков: заработает сразу. Или бот «Кадровик» сам напомнит о сроках и подготовит задание: для него нужен n8n. У вас есть n8n? Если нет или не уверены, начнём с простого варианта, а бота добавим потом.
2. Кто бухгалтер и какие менеджеры работают с исполнителями? Напишите имена, добавлю их в беседу «Самозанятые и ИП».
3. Каких исполнителей пригласить в беседу гостями? Пришлите их почту.
4. Каким сервисом КЭДО вы пользуетесь: HR-Link, Контур.Сайн или другим?
5. Где лежат таблица исполнителей со сроками и шаблон задания в docx?

### 2. Сделай сам через API Пачки

1. Найди `id` бухгалтера и менеджеров: `GET /search/users` или `GET /users`.
2. Создай беседу: `POST /chats` с `name: "Самозанятые и ИП"` и `member_ids` бухгалтера и менеджеров. Сохрани `id` беседы, он нужен обработчику.
3. Для варианта А спроси пользователя, нужен ли ему бот: кнопок из демо в этом варианте нет. Если бот не нужен, перейди к шагу 7.
4. Для вариантов Б и В создай бота: `POST /bots` с `name: "Кадровик"`, ником на `_bot` и `events: ["button_click"]`. Если пользователь показал формат уведомления КЭДО, задай `template` и `template_engine`. Шаблон со страницы:

   ```
   📄 Новый {{document_type}} от {{employee_name}}
   @бухгалтер @менеджер
   Открыть документ: {{document_url}}
   ```

   Замени `@бухгалтер` и `@менеджер` на ники сотрудников, а поля — на поля из JSON КЭДО. Как писать шаблон: https://dev.pachca.com/guides/incoming-webhooks.md. Из ответа сохрани `id` бота и `access_token`: токен показывают один раз, он нужен обработчику.
5. Добавь бота в беседу: `POST /chats/{id}/members` с `id` бота в `member_ids`.
6. Когда у обработчика будет адрес, пропиши его в исходящий вебхук: `PUT /bots/{id}` с `outgoing_url` личным токеном или `PUT /bot/webhook` токеном бота. Для n8n это Production URL второго воркфлоу.
7. Предложи опубликовать в беседе правила: `POST /messages`.
   - Для вариантов Б и В. Бухгалтер сверяет даты и сумму до отправки. Менеджер нажимает «Отправить на подписание» только после её «ок» в треде. Исполнитель после оплаты загружает счёт, акт и чек из «Мой налог» в КЭДО. Реакцию ✅ на карточке ставят, когда получены все три документа.
   - Для варианта А. Бухгалтер проверяет новое задание в треде и ставит на сообщение напоминание. Подписание, счёт и чек идут через КЭДО руками, ссылку на документ кладут в тот же тред.

### 3. Обработчик

Спецификация для вариантов Б и В:

- Раз в день найти в таблице исполнителей задания, которые кончаются через три дня. Опубликовать от имени бота в беседе «Самозанятые и ИП» карточку с кнопкой «Сгенерировать задание».
- Событие `button_click` по «Сгенерировать задание»: заполнить docx-шаблон датами, суммой и суммой прописью, положить файл в тред задания, позвать в тред исполнителя, бухгалтера и менеджера. Кнопки «Отправить на подписание» и «Редактировать» (вариант В).
- Событие `button_click` по «Отправить на подписание»: вызвать API КЭДО.
- Карточка статусов в треде показывает, какие из документов (счёт, акт, чек) получены.

Кнопки и события: https://dev.pachca.com/guides/buttons.md и https://dev.pachca.com/guides/webhook/events.md

### 4. Попроси пользователя сделать руками

- Пригласить исполнителей гостями: в беседе «Информация» → «Добавить участника» → email. Гость видит только эту беседу.
- Для варианта А закрепить в беседе шаблон задания в docx и таблицу исполнителей и ставить напоминания на сообщения с заданиями.
- Для вариантов Б и В включить входящий вебхук бота и скопировать Webhook URL на вкладке «Входящий Webhook». В ответах API этого адреса нет.
- Для вариантов Б и В вставить Webhook URL в настройки уведомлений КЭДО о новых счетах и чеках.
- Для вариантов Б и В на вкладке «Исходящий Webhook» проверить, что отмечено событие «Нажатие кнопок».

### 5. Проверь

1. Попроси пользователя запустить напоминание вручную. В беседе должна появиться карточка с кнопкой «Сгенерировать задание»: `GET /messages` по беседе «Самозанятые и ИП».
2. Попроси нажать «Сгенерировать задание» и убедиться, что docx пришёл в тред.

## Если не работает

- Напоминание не приходит. В таблице исполнителей нет даты конца задания, воркфлоу по расписанию выключен или бот не добавлен в беседу.
- Кнопка «Сгенерировать задание» ничего не делает. В исходящем вебхуке не отмечено «Нажатие кнопок» или обработчик выключен. В n8n нужен Production URL, Test URL не подойдёт.
- Счёт и чек не приходят в беседу. КЭДО шлёт уведомление не на тот Webhook URL, или в шаблоне сообщения не подставляется ссылка на документ.

## Ссылки

- Страница сценария с демо и инструкцией для человека: https://pachca.com/scenarios/samozanyatye-i-ip
- n8n в Пачке: https://pachca.com/help-center/integrations/avtomatizacii-v-pachke-s-pomoshchyu-n8n
- Кнопки в чат-ботах: https://pachca.com/help-center/integrations/knopki-v-chat-botah
- Исходящие вебхуки: https://pachca.com/help-center/integrations/ishodyashchie-webhook-kak-nastroit
- Гостевые аккаунты: https://pachca.com/help-center/features/gosti-v-pachke
