2.6 KiB
2.6 KiB
Final Answer Composer Spec
1. Назначение
answerComposer преобразует нормализованные retrieval results в один user-facing ответ на русском языке.
Реализация:
backend/src/services/answerComposer.ts
Вход:
userMessagerouteSummaryretrievalResults[](уже в unified schema)
Выход:
assistant_reply(текст для пользователя)reply_typefallback_type
2. Приоритеты ответа
Порядок разрешения:
out_of_scopefallback.clarificationfallback (если factual результатов нет).error, если есть только ошибки retrieval.empty, если запрос валиден, но найдено 0 результатов.partial, если есть полезные данные, но покрытие неполное.factual, если есть корректные результаты без fallback-конфликта.
3. Типы ответов
factual
- данные найдены;
- даётся краткий итог + компактная сводка.
empty
- корректный запрос, но выдача пустая.
partial
- часть вопроса обработана;
- часть недоступна/пустая/ошибочная.
clarification
- нужно уточнение периода/документа/счёта/контрагента.
out_of_scope
- запрос не относится к учётному контуру компании.
error
- техническая ошибка retrieval.
4. Контентные правила
User-facing текст:
- только русский;
- без route names;
- без
trace,fallback_type,planned routes; - без служебного planner/debug языка.
Технические детали живут только в debug payload.
5. Форматирование factual-ответа
Composer умеет кратко форматировать несколько типов retrieval:
chain: акцент на цепочки контрагент/документы/операции.ranking: топ/ранжирование.list: список записей (в т.ч. риск-объекты).object/summary: компактный факт-блок.
Если результатов много, выдаётся только верхняя часть (top-N), остальное остаётся в debug payload.