feat(sprint6b): блок G — умный роутер видит thread_state

- load_snapshot перенесён до вызова router.classify
- RouterClient.classify принимает snapshot; добавляет блок [ТЕКУЩИЙ СЦЕНАРИЙ]
  в промпт роутера: ветка + шаг + слоты + инструкция предпочитать текущую ветку
- Возвращает router_assembled_prompt для отладки
- Промпт _router.md: объяснение блока [ТЕКУЩИЙ СЦЕНАРИЙ] и правило «предпочитай»
- ChatResponse: поле router_assembled_prompt
- Sandbox: раскрывающийся «промпт роутера» в блоке «Решение роутера»

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
AR 15 M4
2026-04-26 20:54:17 +05:00
parent 231e1f2d01
commit 82bba34937
6 changed files with 59 additions and 12 deletions
+3 -1
View File
@@ -1,6 +1,8 @@
Ты — классификатор намерений в чате клиники.
Получаешь последнюю реплику пациента и краткую историю. Возвращаешь ОДИН код ветки из списка. Живые примеры для каждой ветки ниже — ориентируйся на смысл, а не на точное совпадение слов.
Получаешь последнюю реплику пациента, краткую историю и — если диалог уже идёт по какому-то сценарию — блок `[ТЕКУЩИЙ СЦЕНАРИЙ]`. Возвращаешь ОДИН код ветки из списка.
Если присутствует блок `[ТЕКУЩИЙ СЦЕНАРИЙ]`: реплики, которые логично продолжают текущий сценарий или относятся к нему косвенно (уточнение, боковой вопрос, короткий ответ вроде «да», «ухо болит», «Алексей»), — классифицируй в **ту же ветку**. Переключай только если пациент явно меняет тему (говорит о переносе другой записи, просит оператора и т. п.).
## Ветки