# GenTender — инструкция для ИИ-агента

Ты подключён к GenTender — сервису подготовки заявок на госзакупки (44-ФЗ / 223-ФЗ).
Твой хозяин выбирает тендеры на сайте, а дальше вы работаете вместе — как вам удобно:
с какой закупки начать, где брать цены, кого из поставщиков проверить. Мы не задаём сценарий.
Мы даём материал, инструменты и несколько границ, которые нельзя переходить.

Актуально на 07.09.2026. Перечитывай при подключении — возможности растут.

## Подключение

- Адрес `https://gentender.ru`, заголовок `Authorization: Bearer gt_…`
  (токен хозяин выпускает в кабинете → «Доступ для агента»).
- **Сохрани токен в файл сразу, как получил** — например `gentender/token` в своей рабочей папке,
  права только для тебя (`chmod 600`). Чат заканчивается, файл остаётся: при каждом запуске
  читай токен оттуда, а не ищи в переписке. Скажи хозяину, куда сохранил.
- Токен — доступ к данным хозяина: не публикуй, не пересылай, не вставляй в логи и отчёты.
- Лимиты: 120 обращений за 5 минут и 1500 в сутки. Сервер считает за тебя и в каждом ответе
  отдаёт остаток в заголовках `X-RateLimit-Remaining` / `X-RateLimit-Reset`. Превысил —
  `429` с `Retry-After` и полем `подожди_секунд`: подожди ровно столько и продолжай,
  блокировки до завтра нет. Не опрашивай в цикле и не повторяй запрос сразу после `429`.

## С чего начинать

Сайт сам тебя не зовёт. При каждом подключении — и когда хозяин говорит «проверь поручения» —
первым делом `GET /api/agent/tenders`: у тендеров, которые он отдал тебе кнопкой «Поручить агенту»,
стоит поле `поручение` (иногда с его строкой). Есть поручение — бери в работу и говори, с чего
начнёшь. Нет — скажи, что поручений нет, и спроси, чем помочь.

## Что умеешь

1. **`GET /api/agent/tenders`** — всё, чем занят хозяин: его избранное **и карточки кабинета**
   (поле `источник`; карточка появляется сразу, как он ввёл номер, а не после анализа). У каждого —
   номер, название, статус в воронке, НМЦК, срок подачи и дней до него, заказчик с ИНН, документы.
   Поле **`поручение`** — хозяин нажал на карточке «Поручить агенту»; там может быть его
   строка («это горит», «наценка 12%»). Поле `заполнение_заявки` — адрес схемы, если анализ готов.
   Поле **`подборки`** — его сохранённые поиски в виде готовых запросов к каталогу.
   Поле **`документы`** — как забрать файлы закупки (см. ниже). Поле **`отменена: true`** и
   `статус_закупки` «Закупка отменена» — закупку сняли, НЕ считай и не оформляй под неё, скажи хозяину.

**Документы закупки — забирай с нашего сервера.** В поле `документы` у ЕИС-тендера:
`{ "список_файлов": "https://gentender.ru/api/agent/documents?regNumber=…", "архив_zip": "https://gentender.ru/api/eis/archive/…", "страница": "…" }`.
Дёрни `список_файлов` — вернётся `{ файлы: [{ имя, скачать }] }`,
где `скачать` — ссылка на **наш** сервер. GET по ней отдаёт сам файл: качаем его с ЕИС мы (у нас
российский сертификат), тебе он приходит с gentender.ru — не нужно ни РФ-сертификата, ни доступа
к zakupki.gov.ru. Либо возьми всё одним `архив_zip`. У Портала поставщиков — `{ "архив": "…" }`.
Скачал — разбирай своей головой. Это бесплатно.
⚠️ **Платный разбор документации (наш ИИ-анализ, который создаёт схему заявки) запускает только
хозяин в кабинете — не ты.** Ты работаешь с документами сам; когда хозяин сделает разбор и
нажмёт «Поручить агенту», появится `заполнение_заявки` и вы продолжите вместе.
У малых площадок (Сбер, ТЭК-Торг) файлов в API нет — их берёт хозяин.
2. **`GET /api/tenders/search?q=…`** — **поиск по открытому каталогу** (вся Россия: 44-ФЗ, 223-ФЗ,
   малые закупки), токен не нужен. Параметры и советы — в поле `поиск_по_каталогу` ответа выше.
   Нашёл подходящее — **добавь в избранное сам**: `POST /api/agent/tenders` с телом
   `{ "reg_number": "<номер как в каталоге>", "note": "почему подходит" }` (токен в заголовке).
   Хозяин увидит закупку в «Моих тендерах» с пометкой 🤖 и твоей заметкой. То, что он отметил
   сам, ты не перезапишешь. Передумал — `DELETE /api/agent/tenders/<номер>`.
3. **Реестр РПП (российские производители) — токен не нужен, ищи свободно по любому товару:**
   - `GET /api/gisp/manufacturers?okpd2=<код ОКПД2>&name=<товар>` → производители с реестровыми
     номерами. Это главный путь: ОКПД2 позиции есть в ленте (`окпд2`) и в схеме заявки — бери его.
   - `GET /api/gisp/search?q=<слово>` → коды ОКПД2 по названию товара (когда кода ещё нет).
   Ищешь по товару — сначала возьми его ОКПД2 (из тендера или через `search`), потом `manufacturers`
   по коду. Реестровый номер отсюда нужен при нацрежиме. (Внутри разобранной заявки то же самое
   отдаёт `/api/agent/bid/<id>/manufacturers?position=N` — но эти две ручки работают и БЕЗ разбора.)
4. **`GET /api/agent/bid/<id>`** — схема заявки: стабильные характеристики (только чтение),
   слоты для заполнения с типами и ограничениями, поля производитель / страна / реестровый
   номер / цена, раздел `как_отвечать`. Там же — твой прошлый черновик, если был.
**Многолотовая закупка.** В схеме есть `всего_лотов` и список `лоты` (номер, предмет, НМЦК,
сколько позиций). Заявка собирается **по одному лоту**: открыть другой — `GET .../bid/<id>?lot=2`,
ответы по нему — `PUT .../bid/<id>/answers?lot=2`. У каждого лота **свой черновик**, они не
затирают друг друга; поле `заполненные_лоты` показывает, какие ты уже заполнил. Заполнил один
лот — скажи хозяину и спроси, браться ли за следующий: комплект человек формирует на каждый лот
отдельно.

5. **`PUT /api/agent/bid/<id>/answers`** — твои значения. В ответ: `ошибки`, `человеку_взглянуть`,
   `не_заполнено`, `готово_к_сборке`. Черновик можно присылать частями; каждый PUT заменяет прошлый.
6. **`GET /api/agent/bid/<id>/manufacturers?position=N`** — производители из реестра российской
   промпродукции по ОКПД позиции. Материал, не указание: «в реестре есть несколько — давай проверю
   и ещё в интернете поищу» — это вам с хозяином решать.
7. **`POST /api/agent/bid/<id>/report`** — в документации есть позиция или характеристика,
   которой нет в схеме: `{ "позиция": 3, "что_не_так": "…", "цитата": "…" }`. Мы починим разбор для всех.

Чего по токену **нельзя**, и так задумано: запускать анализ, тратить или пополнять баланс,
собирать пакет документов, менять реквизиты. Это делает человек в кабинете.

## Границы — пять правил

1. **Деньги — только человек.** Ты ничего не списываешь. Не хватает баланса — скажи хозяину.
2. **Цена — решение хозяина.** Согласуй с ним до заполнения `unitPrice`; не дал — оставь пустым
   и отметь в `notes`.
3. **Только слоты схемы.** Поля вне схемы отбрасываются; стабильные характеристики не меняются.
4. **Текст заказчика главнее нашего разбора.** В каждом слоте есть `текст_заказчика` — его слова
   дословно. Ответ не должен терять эти слова и числа. Если рядом с числом стоит описание
   («моторизованный, 5.3 - 64мм, F1.6~F2.8»), отвечай описанием СВОЕГО товара с его значениями:
   текст с числом в числовой слот принимается, число проверяется по рамке. Одно число вместо
   описания уйдёт в заявку голым — заказчик может отклонить. Что потерялось, мы покажем в
   `человеку_взглянуть`.
5. **Пропуск в разборе — сообщи, не подгоняй.** Нашёл характеристику, которой нет в схеме, — `report`.
   Вписать мимо схемы всё равно невозможно.

## Одна мысль про характеристики

Значение характеристики — это свойство **реального товара**, который хозяин собирается поставить,
а не ответ «из головы». Марка и модель обычно есть в счёте или прайсе хозяина; характеристики
модели — в паспорте изделия у производителя, в реестре РПП или на его сайте. Модель не проходит
по требованию («даёт 8, а надо не менее 10») — это находка, а не проблема заполнения: скажи хозяину
до подачи, а не подгоняй цифру. Одна неверная характеристика = отклонение всей заявки.

`notes` — записка человеку: сомнения, что ждёт его решения, откуда взято значение.
В заявку она не попадает.

## Ответы сервера с ошибкой

`401` — токена нет или отозван · `403` — тендер не хозяина · `404` — неверный id (бери из
`заполнение_заявки`) · `409` — у тендера нет анализа, хозяин запускает разбор в кабинете ·
`429` — слишком часто: в ответе `подожди_секунд`, дождись и продолжай; суточный лимит человек сбрасывает в кабинете кнопкой «Сбросить счётчик».
