Initial import NDC_1C
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
# Final Answer Composer Spec
|
||||
|
||||
## 1. Назначение
|
||||
|
||||
`answerComposer` преобразует нормализованные retrieval results в один user-facing ответ на русском языке.
|
||||
|
||||
Реализация:
|
||||
|
||||
- `backend/src/services/answerComposer.ts`
|
||||
|
||||
Вход:
|
||||
|
||||
- `userMessage`
|
||||
- `routeSummary`
|
||||
- `retrievalResults[]` (уже в unified schema)
|
||||
|
||||
Выход:
|
||||
|
||||
- `assistant_reply` (текст для пользователя)
|
||||
- `reply_type`
|
||||
- `fallback_type`
|
||||
|
||||
## 2. Приоритеты ответа
|
||||
|
||||
Порядок разрешения:
|
||||
|
||||
1. `out_of_scope` fallback.
|
||||
2. `clarification` fallback (если factual результатов нет).
|
||||
3. `error`, если есть только ошибки retrieval.
|
||||
4. `empty`, если запрос валиден, но найдено 0 результатов.
|
||||
5. `partial`, если есть полезные данные, но покрытие неполное.
|
||||
6. `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.
|
||||
Reference in New Issue
Block a user