Перейти к содержанию

Бизнес-логика и сценарии

Генерация ТЗ (основной сценарий)

Полный цикл создания технического задания.

Пользователь вводит описание закупки
1. Извлечение позиций (parse_items)
   • LLM парсит текст → список товаров/услуг
   • Определяется тип каждой позиции (товар / услуга / работа)
2. Генерация глав (chapters)
   • Для каждой позиции создаётся техническая глава
   • Генерируются опциональные разделы (гарантии, упаковка и т.д.)
3. Генерация характеристик (chars)
   • Классификация по ОКПД2 (Qdrant RAG)
   • Генерация основных характеристик (LLM)
   • Генерация дополнительных характеристик (при RANGE)
   • [Опционально] Поиск нормативных документов (при GOSTS)
4. Заполнение и нормализация (fulfill + cleanup)
   • Проставление количества, сроков, адресов
   • Нормализация форматов значений
5. Формирование спецификации (spec_ch)
   • Сборка таблицы спецификации
6. Финальная сборка (assemble + finish)
   • Объединение всех компонентов в итоговый документ
   • Сохранение результата в Redis

Отслеживание прогресса:

  • Каждая стадия обновляет прогресс в Redis.
  • Клиент опрашивает GET /api/progress/{job_id} для отображения прогресс-бара.

Редактирование характеристик

Два режима редактирования:

Редактирование ячейки:

  1. Пользователь выбирает характеристику и вводит комментарий.
  2. LLM анализирует текущее значение и инструкцию.
  3. Возвращает новое значение с описанием изменения.

Редактирование таблицы:

  1. Пользователь выделяет набор характеристик и даёт текстовую инструкцию.
  2. LLM определяет тип операции: объяснение или модификация.
  3. При модификации — возвращает список действий (add/remove/update/rename).
  4. Клиент применяет действия к таблице.

Инкрементальное обновление документа

При изменении параметров существующего ТЗ (замена товара, изменение количества и т.д.):

  1. Клиент формирует deep diff изменений.
  2. POST /api/chapters/update-by-changes отправляет diff и текущее содержимое.
  3. LLM определяет, какие главы и характеристики затронуты.
  4. Затронутые компоненты перегенерируются с учётом изменений.
  5. Результат сливается с существующим документом.

Диалог с AI-агентом

Интерактивное взаимодействие с TZAgent в контексте текущего документа:

  1. Пользователь задаёт вопрос или даёт инструкцию в чате.
  2. Intent Classifier определяет намерение.
  3. Агент выбирает подходящий инструмент (или отвечает текстом).
  4. При вызове инструмента — модифицирует документ и возвращает обновлённый результат.

Примеры взаимодействий:

  • «Добавь раздел о гарантийных обязательствах» → chapter_tool
  • «Замени процессор на AMD EPYC» → swap_tool → перегенерация характеристик
  • «Увеличь количество до 20 штук» → basic_params_tool
  • «Какие ГОСТы применимы к этому оборудованию?» → текстовый ответ

Классификация ОКПД2

  1. Пользователь вводит наименование товара/услуги.
  2. Гибридный поиск (векторный + BM25) по базе ОКПД2 в Qdrant.
  3. Результаты ранжируются по score (порог — 0.20).
  4. Подсказки кэшируются в Redis (15 минут).
  5. Rate limiting: 60 запросов/мин, burst — 30.