feat(bot): med_qa answers about the drug only from ГРЛС excerpts
CI / ruff · pytest (pull_request) Successful in 21s

Topic from engine or keyword classifier, section via integrations.drug_info,
sentence retrieval by keyword overlap (dosing sentences dropped), LLM only
rephrases the excerpt through gateway.phrase("med_answer") with forbidden-output
and added-content guards; dose questions and missing answers -> None + fallback text.

Refs #15

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 15:32:48 +03:00
co-authored by Claude Opus 5.5
parent df1956c493
commit 51cc259002
4 changed files with 491 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
# Тексты ответов о препарате (med_qa, SPEC §7 п.5). Зона clinical вычитывает формулировки.
# Сам ответ берётся ТОЛЬКО из выдержки инструкции ГРЛС; здесь — лишь обрамление и запасной текст.
# Правила: без советов по дозам, без рекомендаций препаратов, решение об изменениях — за врачом.
# Если в инструкции нет ответа (нет раздела / нет подходящего фрагмента / вопрос о дозе).
fallback: "В инструкции к препарату нет ответа на этот вопрос. Уточните, пожалуйста, у вашего врача."
# Вступление перед выдержкой — пациент должен понимать, что это текст инструкции, а не совет бота.
intro: "По инструкции к препарату:"
# Всегда добавляется в конце ответа (не проходит через LLM).
doctor_note: "Не меняйте схему приёма и не прекращайте его самостоятельно — любые изменения решает ваш врач."
+2
View File
@@ -19,6 +19,8 @@ phrases:
sleep_support: "Спасибо, что рассказали про сон. Я отмечу это, и ваш врач увидит, как вы спите."
book_visit_offer: "Предлагаю записаться к врачу пораньше. Выбрать удобное время можно кнопкой ниже."
doctor_notified: "Я передал информацию вашему врачу. Он свяжется с вами."
# med_qa: базовый смысл = выдержка из инструкции ГРЛС; LLM только упрощает её, ничего не добавляя.
med_answer: "{excerpt}"
# Шаблон саммари для врача (только по структурированным данным).
summary: