База знаний по КР (#60, #62) готова, но бот её не использует. Пациент между визитами спрашивает о своём состоянии и лечении («что такое флэшбек?», «помогает ли психотерапия при ПТСР?»), а сейчас получает только нейтральную фразу поддержки.
Желаемый результат
Кнопка меню «Вопрос о лечении» → бот просит вопрос → ответ из rag.answer(audience="patient") с цитатой и источником, либо «в КР ответа нет, уточните у врача».
Свободный текст в idle, похожий на вопрос, без сигналов чек-ина и не о препарате → ответ из базы знаний; если ответа нет — прежняя фраза поддержки.
Порядок не меняется: safety и consent до FSM; вопрос о препарате → med_qa (только инструкция ГРЛС, SPEC §7 п.5); побочки / бросить / алкоголь → чек-ин и правила.
Признаки вопроса и тексты — в config/texts/knowledge.yaml.
Подзадачи
app/dialog/flows/knowledge.py — кнопка, состояние kb.question, knowledge_answer()
veteran_daily._idle_text — ветка базы знаний перед фразой поддержки
кнопка в menu_reply, IdleButtons, config/texts/dialog.yaml
тесты tests/test_dialog_knowledge.py
Анализ
Ограничения и риски
В RAG уходит только ctx.text (уже после scrub()), safety проверено движком (acute сюда не доходит).
Пациенту — только экстрактивные цитаты без доз (#60); вопросы о дозе → к врачу.
Не путать с med_qa: вопросы о собственном препарате по-прежнему только из инструкции.
Как проверить
make lint && make test; демо-консоль/Telegram: меню → «Вопрос о лечении» → «что такое флэшбек?».
Лог выполнения
2026-10-04
Что сделано: флоу app/dialog/flows/knowledge.py (кнопка «Вопрос о лечении», состояние kb.question, ответ о дозе → врач); ветка базы знаний в veteran_daily._idle_text перед фразой поддержки; признаки вопроса, бытовые фразы и тексты в config/texts/knowledge.yaml; метки scrub перед «что такое X» больше не ломают вопрос-определение.
Результат: 22 теста диалога (маршрутизация: safety → чек-ин → препарат → КР → поддержка), полный набор 779 passed, сценарий Андрея не изменился.
Ограничения: разговорные вопросы без общих слов с КР получают фразу поддержки; индекс строится при первом вопросе (~1–5 с).
## Описание
База знаний по КР (#60, #62) готова, но бот её не использует. Пациент между визитами спрашивает о своём состоянии и лечении («что такое флэшбек?», «помогает ли психотерапия при ПТСР?»), а сейчас получает только нейтральную фразу поддержки.
## Желаемый результат
- Кнопка меню «Вопрос о лечении» → бот просит вопрос → ответ из `rag.answer(audience="patient")` с цитатой и источником, либо «в КР ответа нет, уточните у врача».
- Свободный текст в `idle`, похожий на вопрос, без сигналов чек-ина и не о препарате → ответ из базы знаний; если ответа нет — прежняя фраза поддержки.
- Порядок не меняется: safety и consent до FSM; вопрос о препарате → `med_qa` (только инструкция ГРЛС, SPEC §7 п.5); побочки / бросить / алкоголь → чек-ин и правила.
- Признаки вопроса и тексты — в `config/texts/knowledge.yaml`.
## Подзадачи
- [ ] `app/dialog/flows/knowledge.py` — кнопка, состояние `kb.question`, `knowledge_answer()`
- [ ] `veteran_daily._idle_text` — ветка базы знаний перед фразой поддержки
- [ ] кнопка в `menu_reply`, `IdleButtons`, `config/texts/dialog.yaml`
- [ ] тесты `tests/test_dialog_knowledge.py`
## Анализ
### Ограничения и риски
- В RAG уходит только `ctx.text` (уже после `scrub()`), safety проверено движком (acute сюда не доходит).
- Пациенту — только экстрактивные цитаты без доз (#60); вопросы о дозе → к врачу.
- Не путать с `med_qa`: вопросы о собственном препарате по-прежнему только из инструкции.
## Как проверить
`make lint && make test`; демо-консоль/Telegram: меню → «Вопрос о лечении» → «что такое флэшбек?».
---
## Лог выполнения
### 2026-10-04
- **Что сделано:** флоу `app/dialog/flows/knowledge.py` (кнопка «Вопрос о лечении», состояние `kb.question`, ответ о дозе → врач); ветка базы знаний в `veteran_daily._idle_text` перед фразой поддержки; признаки вопроса, бытовые фразы и тексты в `config/texts/knowledge.yaml`; метки scrub перед «что такое X» больше не ломают вопрос-определение.
- **Результат:** 22 теста диалога (маршрутизация: safety → чек-ин → препарат → КР → поддержка), полный набор 779 passed, сценарий Андрея не изменился.
- **Ограничения:** разговорные вопросы без общих слов с КР получают фразу поддержки; индекс строится при первом вопросе (~1–5 с).
Eleboba
added this to the Этап 1 · Ветераны СВО milestone 2026-10-04 11:20:55 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Описание
База знаний по КР (#60, #62) готова, но бот её не использует. Пациент между визитами спрашивает о своём состоянии и лечении («что такое флэшбек?», «помогает ли психотерапия при ПТСР?»), а сейчас получает только нейтральную фразу поддержки.
Желаемый результат
rag.answer(audience="patient")с цитатой и источником, либо «в КР ответа нет, уточните у врача».idle, похожий на вопрос, без сигналов чек-ина и не о препарате → ответ из базы знаний; если ответа нет — прежняя фраза поддержки.med_qa(только инструкция ГРЛС, SPEC §7 п.5); побочки / бросить / алкоголь → чек-ин и правила.config/texts/knowledge.yaml.Подзадачи
app/dialog/flows/knowledge.py— кнопка, состояниеkb.question,knowledge_answer()veteran_daily._idle_text— ветка базы знаний перед фразой поддержкиmenu_reply,IdleButtons,config/texts/dialog.yamltests/test_dialog_knowledge.pyАнализ
Ограничения и риски
ctx.text(уже послеscrub()), safety проверено движком (acute сюда не доходит).med_qa: вопросы о собственном препарате по-прежнему только из инструкции.Как проверить
make lint && make test; демо-консоль/Telegram: меню → «Вопрос о лечении» → «что такое флэшбек?».Лог выполнения
2026-10-04
app/dialog/flows/knowledge.py(кнопка «Вопрос о лечении», состояниеkb.question, ответ о дозе → врач); ветка базы знаний вveteran_daily._idle_textперед фразой поддержки; признаки вопроса, бытовые фразы и тексты вconfig/texts/knowledge.yaml; метки scrub перед «что такое X» больше не ломают вопрос-определение.