Files
RAG_helper/data/datasets/medical_question.md
T
AR 15 M4 52b46bc53e feat(sprint6c+sprint7): терминология, сверка примеров с кодом, мульти-RAG (часть A)
Спринт 6c — терминология и сверка документации с реальным кодом:
- Словарь терминов в static/docs.html: «маршрутизатор» вместо «роутер»,
  «защитное условие» вместо «guard», «пошаговая ветка» вместо «многошаговая».
  Разделены концепты «намерение» (intent) и «ветка» (branch) с пометкой,
  что в коде они хранятся как одна сущность 1:1.
- Песочница: «Решение маршрутизатора» виден всегда (зелёный/жёлтый),
  счётчик переключений «N из 3» отдельной плашкой, бейджи под словарь.
- Настройки: «Условия перехода» → «Защитные условия (guards, JSON)».
- GRAPH_ARCHITECTURE_v4.md: имена полей thread_state и слоты приведены
  к реальной БД (db/models/thread_state.py) и таксономии промптов шагов
  (prompts/intents/new_booking/steps/). Ссылки на *_v2 примеры. На v3
  поставлена шапка «устарело».
- 4 примера переписаны как *_v2: реальные current_intent_code/
  current_step_code/slots_json, реальные allowed_next без двойных переходов,
  реальная таксономия слотов name/reason/specialist/preferred_time/confirmed.
  Удалены вымышленные CRM tool calls и слоты, которых нет в коде.
- static/example.html — параметризованная страница с навигацией между
  4 примерами; роут GET /api/docs/examples/{name} в main.py отдаёт
  markdown без дублирования файлов.
- Редактирование документов в Отладке: GET/PUT /documents/{id}/raw,
  textarea с переразметкой и обновлением Chroma при сохранении.

Спринт 7, часть A — мульти-RAG через подписку ветка↔документы:
- Миграция: таблица intent_documents (M:N), модель IntentDocument,
  индекс по document_id для обратного поиска.
- API: GET/PUT /intents/{code}/documents и GET/PUT /documents/{id}/intents
  с PUT-семантикой «полный список», атомарно. Сервис
  services/intent_document_service.py.
- Retrieval-фильтр в chat_service: подтягивает document_ids активной
  ветки и передаёт в vectorstore.query(). Дефолт пустой подписки —
  document_ids=[] (= 0 чанков), не «вся коллекция»: пустая подписка
  означает «ветка не настроена», подмешивать случайное хуже, чем
  ничего. vectorstore.query() различает None (нет фильтра) и [] (0).
- UI Настроек: блок «Документы базы знаний» в правом сайдбаре,
  всегда видим независимо от вкладки, сортировка по имени, счётчик
  «N из M», PUT при сохранении.
- UI Отладки: третья кнопка «привязка» рядом с «удалить» —
  раскрывашка со списком веток (галочки), быстрая привязка прямо
  на странице загрузки.
- Песочница: блок «Срез RAG» с подпиской/найдено, ворнинг при пустой
  подписке. Поле rag_subscription в QueryResponse и ChatResponse.
- Системный промпт страницы Отладки переехал в обычную ветку _debug
  («Страница отладки»). Удалён prompts/system_prompt.md и логика
  DEFAULT_SYSTEM_PROMPT в llm_client. routers/query.py подтягивает
  активный конфиг ветки _debug и её подписки. Дефолт пустой подписки
  для _debug — None (вся коллекция), не [] как для пациентских — чтобы
  Отладка работала «из коробки». На странице Отладки info-bar показывает
  активную версию и счётчик подписок, ссылка → Настройки.
- Тест-блок «Тест-вопрос» в центре Настроек: расширил /query
  параметрами intent_code (default _debug), system_prompt (override
  для теста черновика из textarea), disable_rag (для _router).
  Редактор промпта обёрнут в <details open> — можно свернуть до
  одной строки. Под ним — три колонки результата (RAG / промпт /
  ответ). Для _router показывается подсказка про отсутствие RAG.

Документы:
- data/datasets/*.md — наработки по 6 веткам (рабочие материалы оператора).
- docs/BRANCH_MAP_AND_PROMPTS_v1.md, docs/OPTIMIZATION_CONVERSION_v1.md,
  docs/guides/state_machine_and_slots.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 20:00:44 +05:00

263 lines
35 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
intent: medical_question
title: Медицинские вопросы (датасет для ветки medical_question)
purpose: |
Источник для РАГа в ветке medical_question. Контент — это конверсионная навигация: как отличить запрос на медконсультацию от обычной жалобы (которая идёт в new_booking), как ответить содержательно (с гипотезами по причинам жалобы — как в new_booking.qualify), не сорваться в назначение лечения, и довести пациента до записи или эскалации.
sources_wiki:
- homepage/udalennyjj-kontakt-centr/medicinskie-voprosy.md
- homepage/udalennyjj-kontakt-centr/rechevye-moduli-dlja-slozhnyx-situacijj/jekstrennyjj-priem-bez-zapisi.md
- homepage/udalennyjj-kontakt-centr/rechevye-moduli-dlja-slozhnyx-situacijj/priem-malomobilnyx-pacientov.md
- homepage/udalennyjj-kontakt-centr/organizacionnye-voprosy/chasto-sprashivaemye-procedury-kotorye-v-klinike-n.md
- homepage/udalennyjj-kontakt-centr/organizacionnye-voprosy/operacionnye-vmeshatelstva/organizacionnye-voprosy.md
note: |
Файл собран только из официальной выгрузки Yandex Wiki клиники.
Прежние «временные» сводные документы (skripty-vozrazhenija-chavo-obshhijj-spravochnik.md,
vrachi-kliniki-polnaja-informacija.md) для этой ветки не источник.
Связки «жалоба → возможные ЛОР-причины → специалист → услуга» в датасете НЕ дублируются —
они в new_booking.md, здесь они используются по ссылке.
Конверсионная логика: бот в этой ветке даёт гипотезы по жалобе («может быть связано с …»),
как в new_booking.qualify — это разрешено и нужно для конверсии. Запрет — на лекарства,
дозировки, схемы лечения, прогноз и советы по самолечению (см. раздел «Чего бот НЕ делает»).
---
# Медицинские вопросы
## Идея ветки
Задача `medical_question` — превратить медицинский вопрос пациента в шанс на запись, а не отбить его стеной «диагноз — на приёме у врача». Это та же конверсионная логика, что в ТЗ оптимизации (`docs/OPTIMIZATION_CONVERSION_v1.md`): бот-конкурент даёт пациенту содержательный ответ с возможными причинами жалобы и сразу предлагает запись — мы делаем то же самое.
Бот — не врач, и это ограничение остаётся. Граница чёткая: бот **может** называть 2–3 возможные ЛОР-причины формулировкой «может быть связано с …», но **не может** назначать лечение, лекарства и дозировки.
### Что бот делает в этой ветке
- Даёт 2–3 возможные ЛОР-причины жалобы — как в `new_booking.qualify`. Связки «жалоба → возможные причины → специалист → услуга и цена» берутся из `new_booking.md` (раздел «Связки …»).
- Рекомендует профильного специалиста.
- Озвучивает профильную услугу и её ориентировочную цену.
- Закрывает реплику бинарным CTA «Помочь записаться?». При согласии — `[INTENT_CHANGE: new_booking]`.
### Что бот НЕ делает (короткий список, подробно — ниже)
- Не ставит диагноз в утвердительной форме («у вас гайморит», «скорее всего, отит»).
- Не оценивает тяжесть и не даёт прогноз («не страшно», «может перейти в…», «это серьёзно»).
- Не называет лекарств, мазей, спреев, дозировок, схем лечения.
- Не предлагает домашних процедур (промывания, ингаляции, прогревания).
- Не оценивает чужие назначения или анализы.
### Как соотносится с другими ветками
- Бытовая жалоба без запроса консультации («болит ухо», «насморк», «плохо слышу») идёт в `new_booking`, а не сюда. Внутри `new_booking` бот фиксирует жалобу в слот `reason` и проходит шаги воронки.
- Запрос «что у меня может быть?» — это тот же содержательный ответ с гипотезами, что и в `new_booking.qualify`, но без обязательного сбора слотов; задача — довести до согласия на запись.
- Запрос «какую таблетку выпить / какая дозировка / можно ли мне с моей болезнью» — это «медицинская консультация» в узком смысле; бот мягко обозначает границу и предлагает запись.
- Острое состояние, операция, явная просьба оператора — `escalate_human`.
## Как распознать «медицинский вопрос» и какого типа
Триггеры ветки делятся на два типа — поведение бота отличается.
### Тип A. «Что у меня может быть?» — запрос гипотезы / маршрутизации
Сюда попадают вопросы вида:
- «Что у меня может быть, болит ухо?»
- «Это похоже на гайморит?»
- «Может это аллергия?»
- «К кому мне идти, я не понимаю?»
- «У меня заложенность ушей и шум — что это вообще?»
Поведение бота — **тот же 5-пунктовый шаблон, что в `new_booking.qualify`**: эмпатия → 2–3 возможные ЛОР-причины формулировкой «может быть связано с» → специалист → профильная услуга и её ориентировочная цена → CTA «Помочь записаться?». Гипотезы здесь не запрещены — это часть конверсионного ответа. См. раздел «Содержательный ответ».
### Тип B. «Какую таблетку выпить?» — запрос лечения
Сюда попадают вопросы:
- «Что капать?», «какие таблетки?», «что пить?»
- «Какая дозировка?», «по сколько капель?», «сколько раз в день?»
- «Можно ли мне попарить ноги?», «промывать чем?»
- «Опасно ли это?», «это серьёзно?», «может это перейти в…?»
- «Правильно ли мне назначили?», «почему лечение не помогает?»
- «Можно ли мне с моей болезнью / с моим лекарством…»
Поведение бота — **мягкая граница + предложение записи**. Гипотезу здесь давать тоже можно (она не лечение, а ориентация по жалобе), но основная часть ответа — «диагноз, схему лечения и совместимость препаратов может назначить только врач на приёме после осмотра». См. раздел «Граница: что отвечать при запросе лечения».
### Тип C. Острое состояние
Прямой handoff в `escalate_human` с `reason=acute_pain`, без гипотез и обсуждения. Признаки — в разделе «Острое состояние».
### Что не относится сюда
Бытовая жалоба без запроса консультации («болит горло», «насморк», «плохо слышу») — это `new_booking`, а не `medical_question`. Признак: пациент описывает жалобу и/или прямо или косвенно идёт к записи. Если в ту же реплику добавлено «что у меня может быть?» — это уже Тип A, поведение тоже близко к `new_booking.qualify`, разница только в моменте, когда бот собирает слоты (в `medical_question` слоты не обязательны до явного согласия).
## Острое состояние — немедленный handoff
Острое состояние — это всегда `[INTENT_CHANGE: escalate_human]` с `reason=acute_pain`, без попытки продолжать диалог в `medical_question`.
Признаки острого состояния:
- Сильная боль, которую пациент описывает как «не могу терпеть», «очень сильно», «выкручивает», «до слёз», «до обморока».
- Высокая температура (особенно у ребёнка): 39°+, «горит», «не сбивается».
- Кровотечение: «течёт кровь из уха», «течёт кровь из носа и не останавливается», «кровь в горле», «кровь при кашле».
- Одышка, нехватка воздуха: «не могу дышать», «задыхаюсь», «синеют губы», «частое поверхностное дыхание».
- Ребёнок плохо дышит, ребёнок без сознания, ребёнок не реагирует.
- Отёк лица, шеи, языка, губ — может быть признаком острой аллергической реакции.
- Резкое головокружение с потерей сознания, обморок.
- Травма головы, удар, падение с высоты, удар током — особенно если есть тошнота или нарушение координации.
В таких случаях бот:
1. Признаёт ситуацию одной короткой фразой («понимаю, состояние тревожное»).
2. Сразу `[INTENT_CHANGE: escalate_human]` с `reason=acute_pain`.
3. Полную обработку (включая упоминание 103) делает уже ветка `escalate_human`.
Если есть упоминание операции, наркоза, стационара — это `[INTENT_CHANGE: escalate_human]` с `reason=surgery`, не `medical_question`. Хирургические темы всегда выходят сразу к оператору.
## Содержательный ответ (Тип A — «что у меня может быть»)
Шаблон — тот же 5-пунктовый, что в `new_booking.qualify`:
1. **Эмпатия** — одна фраза («понимаю, неприятно», «понимаю, хочется разобраться»).
2. **2–3 возможные ЛОР-причины** формулировкой «может быть связано с …» (без диагноза в утвердительной форме, без процентов и оценок тяжести). Связки берутся из раздела `new_booking.md` «Связки жалоба → возможные ЛОР-причины → специалист → услуга → ориентир по цене»: для боли в ухе — серная пробка / отит / евстахиит; для шума в ушах — серная пробка / нейросенсорная тугоухость / болезнь Меньера; и т. д.
3. **Рекомендация специалиста** — один профиль (ЛОР, сурдолог, отоневролог, аллерголог, пульмонолог, фониатр).
4. **Профильная услуга и её ориентировочная цена** формулировкой «при необходимости врач назначит … — это около … рублей». Цена — ориентир из `new_booking.md`; полный прайс — в `price_question.md`.
5. **CTA** — бинарный вопрос: «Хотите, помогу записаться?». Не «возможно, стоит подумать о записи», а прямой вопрос с «да/нет».
Если пациент отвечает «да» / «давайте» / «запишите» — сразу `[INTENT_CHANGE: new_booking]`. В `new_booking` шаг `intro` пропускается (пациент уже описал жалобу), сценарий продолжается с `qualify`/`book`.
Если пациент после ответа не реагирует или продолжает уточнять — допустимо ответить ещё раз с тем же шаблоном (другая формулировка эмпатии и CTA), но не углублять обсуждение симптомов. Бесконечная медицинская беседа внутри `medical_question` — типичная ошибка ассистента.
Если в гипотезах нет уверенного материала из вики — шаблон деградирует мягко: эмпатия + рекомендация ЛОР-врача + CTA. Это всё ещё лучше, чем стена «не могу обсуждать».
Пример (для жалобы «болит ухо, что у меня может быть?»):
> Понимаю, неприятная ситуация. Боль в ухе может быть связана с серной пробкой, наружным отитом или воспалением слуховой трубы — точнее скажет ЛОР-врач после осмотра. На приёме врач сделает эндоскопическую диагностику (около 900 ₽) и при необходимости тут же удалит серную пробку, если она и есть причина. Стоимость приёма ЛОР-врача — 1900 ₽ (или 2300 ₽ у кандидата медицинских наук). Хотите, помогу записаться?
## Граница: что отвечать при запросе лечения (Тип B)
Когда пациент спрашивает про лекарство, дозировку, схему лечения, безопасность — шаблон смещается:
1. **Эмпатия** — одна фраза.
2. **Гипотезу можно дать**, но коротко (одно предложение). Гипотеза помогает пациенту понять, что бот его услышал, и переключает фокус с «дайте мне лекарство» на «есть смысл показаться врачу».
3. **Граница** — «диагноз, схему лечения и подбор лекарств делает врач на приёме после осмотра. Я не могу назначать препараты или дозировки в чате — это небезопасно».
4. **Предложение записи** — назвать профиль и цену, как в Типе A.
5. **CTA** — «Помочь записаться?».
Пример (для «какие капли в ухо при отите?»):
> Понимаю, хочется быстрее снять боль. Боль в ухе может быть связана с разными причинами — отит, серная пробка, воспаление слуховой трубы — и капли при них нужны разные, иногда они вообще противопоказаны. Назначить препарат и дозировку может только ЛОР-врач после осмотра. Приём — 1900 ₽, эндоскопия около 900 ₽. Хотите, помогу записаться к ближайшему свободному врачу?
Что в Типе B **нельзя** даже с осторожными формулировками:
- «Можно попробовать [действие / средство]» — это рекомендация самолечения.
- «У вас, скорее всего, [диагноз]» — это диагноз в утвердительной форме (от «может быть связано с» отличается тоном уверенности).
- «Это нормально / не страшно» / «ничего опасного» — оценка состояния, которую делает врач.
- «Обычно назначают [препарат / схему]» — это лечение чужими руками.
- «Купите [препарат]» / «есть безрецептурные капли» — продажа лечения.
- «Можно ли вам это с вашим [хроническим заболеванием] / с вашим [препаратом]» — оценка совместимости. Только врач.
## Типовые «маршрутные» вопросы из вики (мини-справочник)
Это ситуации, которые не являются ни жалобой-поводом для записи, ни острым состоянием — пациент задаёт вопрос «куда мне с этим». Все формулировки взяты из выгрузки вики (раздел «Сложные медицинские вопросы») и адаптированы под чат.
### Болезнь Меньера / подозрение на неё
Пациенту, который спрашивает «как исключить болезнь Меньера»: сначала к сурдологу. Сурдолог сделает аудиометрию и при необходимости перенаправит к отоневрологу. Прямой записи к отоневрологу с этим вопросом «с улицы» не происходит.
### Кровотечение из носа (хроническое или повторяющееся)
Если пациент пишет про **острое** кровотечение прямо сейчас — это `escalate_human` с `reason=acute_pain`. Если речь идёт о повторяющихся эпизодах в прошлом и пациент хочет понять, что делать — уместно предложить запись к ЛОР-хирургу. В клинике делают эндоскопическую диатермокоагуляцию сосудов носовой перегородки (прижигание); конкретные показания и стоимость — на приёме у врача.
### «Болит корень языка», «болит зуб», «странное ощущение во рту»
Если жалоба может быть ЛОР-этиологии (корень языка, ощущение комка в горле, дискомфорт при глотании) — предложить ЛОР-врача: «он проведёт полный осмотр уха, горла и носа с целью исключить ЛОР-заболевание как причину». Если пациент явно описывает зубную боль / десну — это к стоматологу, клиника не лечит.
### Прививки и вакцинация
Клиника прививок и вакцин для пациентов **не делает** — только для сотрудников. Если пациент спрашивает про прививку (от папилломы, столбняка, гриппа и т. д.) — честно ответить «у нас не делают» и порекомендовать обратиться в свою поликлинику или специализированный центр.
### Аллергопробы на пенициллин
В клинике пробы на пенициллин **не делают**. Делают только пыльцевые скарификационные пробы (с октября по март). Если пациент спрашивает про пенициллин — предложить обратиться в специализированный центр аллергологии, иммунологии или к лечащему врачу.
### Замена / удаление трахеостомы
Удаление (закрытие) трахеостомы клиника **не делает**. Замену трубки сделать могут — приходить нужно со своей трубкой, запись к Синдяеву А. В. с пометкой «замена трубки в трахее». Это один из немногих узких случаев, когда сразу указывается фамилия конкретного врача.
### Электрофорез
В клинике **не проводится**. Если пациент спрашивает «делают ли электрофорез на ухо?»:
- Уточнить, есть ли назначение врача и какие жалобы.
- Сказать, что в клинике есть более эффективные методики (например, фонофорез) и предложить запись к ЛОР-врачу для подбора подходящего лечения.
- Не настаивать — если пациенту нужен именно электрофорез, направить в физиотерапевтический центр.
### Прижигание сосудов носа лазером (по поводу частого ринита)
В клинике делают, но только после консультации с врачом — врач сам решит, нужно ли. Предложить запись к ЛОР-врачу.
### Резекция уздечки языка
Это стоматологическая операция. Стоматолог нашей клиники Ефимова Е. О. ведёт приём в Центре Медиум (Шоссе Космонавтов, 86а; ул. Снайперов, 6). Может провести операцию как в КУГН на Цеткин 9, так и в Центре Медиум. Запись по телефону 258-07-06 (это уже не основной номер клиники — отдельный канал).
### Маломобильный пациент / коляска / лежачий
Если пациент сообщает, что нуждается в помощи при входе или перемещении по клинике — это не медицинский вопрос, но требует отдельной маршрутизации. Бот мягко обозначает, что ассистент клиники свяжется заранее и согласует помощь, и переходит в `[INTENT_CHANGE: escalate_human]` с `reason=explicit_request`. Внутренняя логика приёма МП (рекомендуемые врачи Зыкин О. В., Юрков В. С., Осадчий А. П., оповещение заведующих и т. д.) — это работа администраторов; бот её не симулирует.
## Что в клинике не лечат / не делают (общий справочник)
Не проводятся: бронхоскопия, кардиореспираторный мониторинг (КРМ), КСВП (коротколатентные слуховые вызванные потенциалы), риноманометрия, электрофорез, абляция (криодеструкция миндалин), барофункция уха и придаточных пазух, прививки, сдача анализов «с улицы» без направления нашего врача.
Не лечат: гемангиомы (направить к сосудистым хирургам), назальную ликворею, сиалоаденит, чисто стоматологические заболевания, неврологические заболевания (если нет связки с ЛОР), офтальмологические, психиатрические состояния.
В таких случаях бот честно говорит «у нас этим не занимаются», по возможности подсказывает профиль (стоматолог, невролог, физиотерапевт), и **не пытается** продать ничего «вместо». Краткая гипотеза («это похоже на …») допустима, если она помогает пациенту понять, к какому профилю идти, — но без диагноза и без рекомендаций по лечению.
## Условия выхода в другие ветки
- Острое состояние, упоминание операции/наркоза, явная просьба «дайте человека», сильное раздражение → `[INTENT_CHANGE: escalate_human]` с соответствующим `reason`.
- Пациент согласился записаться (после мягкого ответа) → `[INTENT_CHANGE: new_booking]`.
- Пациент перевёл разговор на адрес/часы/как добраться → `[INTENT_CHANGE: general_info]` (но это редкость).
- Пациент перевёл разговор на цену → `[INTENT_CHANGE: price_question]`.
Если пациент после короткого ответа в `medical_question` не реагирует или повторяет тот же вопрос другими словами — допустимо ответить ещё раз тем же шаблоном (эмпатия + граница + предложение записи), но не углубляться в обсуждение симптомов. Бесконечное обсуждение медицинской темы внутри `medical_question` — типичная ошибка; задача — закрыть либо в `new_booking`, либо в `escalate_human`.
## Чего бот НЕ делает в этой ветке
Гипотезы по жалобе («может быть связано с серной пробкой, отитом, евстахиитом») — **разрешены** и нужны для конверсии (см. шаблон выше). Запреты ниже касаются конкретно лечения, прогноза и оценки состояния.
- Не ставит диагноз в утвердительной форме («у вас гайморит», «скорее всего, отит»). Допустимо только «может быть связано с …».
- Не оценивает тяжесть состояния («это серьёзно», «это не страшно», «срочное») и не даёт прогноза («может перейти в хроническое», «если запустить — будет осложнение»).
- Не называет лекарств, мазей, капель, спреев, БАДов — никаких торговых названий и действующих веществ.
- Не называет дозировок, кратности приёма, длительности курса.
- Не предлагает домашних процедур (промывания, ингаляции, прогревания, компрессы) — даже «безопасных».
- Не оценивает результаты чужих анализов и назначений других врачей.
- Не оценивает совместимость препаратов («можно ли вам это с вашим…»).
- Не сравнивает свои услуги с другими клиниками («у нас лучше / у них хуже»).
- Не транслирует пациенту внутренние клинические рекомендации врачей и презентации с конференций.
## Что нужно дополнить вручную в вики
В выгрузке вики на тему «медицинские вопросы» нашлись только отдельные кейсы (Меньер, трахеостома, электрофорез, прививки, пенициллин). Этого достаточно для работы ветки, но в перспективе стоит добавить:
- **Список «частых вопросов про симптомы»** с шаблонами «куда направлять» — чтобы покрыть типовые «болит горло у ребёнка», «продолжается насморк после ОРВИ», «звон в ушах после концерта», «вода попала в ухо», «инородное тело в ухе/носу/горле». Сейчас часть таких сценариев обрабатывается через `new_booking`, но имеет смысл явно прописать триаж.
- **Чёткие критерии острого состояния от лица клиники.** Сейчас бот опирается на общие медицинские понятия. Если у клиники есть свой внутренний регламент «когда сразу скорая, когда экстренно к нам без записи» — пропишите. Это повлияет на формулировку при handoff в `escalate_human`.
- **Маршруты «не наша тема»** — стоматолог, невролог, офтальмолог, дерматолог-узкий профиль. Сейчас известен только стоматолог через Центр Медиум. Если есть устоявшиеся партнёры — назовите явно, чтобы бот не отправлял пациента «в никуда».
- **Тема психологической помощи / тревоги вокруг состояния.** Иногда пациент пишет «мне страшно», «не могу спать от тревоги, что у меня». Прямого ответа в вики нет; в эскалации reason `acute_pain` это не подходит, `explicit_request` — натянуто. Стоит явно сформулировать политику.
## Что НЕ должно попадать в датасет ветки `medical_question`
- Конкретные диагнозы и их клинические признаки — в РАГ для ассистента это создаёт соблазн «угадать диагноз».
- Списки препаратов — даже под формулировкой «врач может назначить». Любое название препарата в ответе бота — потенциальная рекомендация.
- Внутренние клинические рекомендации врачей и презентации с конференций (раздел `vrachi/klinicheskie-rekomendacii/...` и `prezentacii-s-konferencijj/...`) — это материалы для врачей, не для пациента.
- Внутренние добавочные номера, пароли, доступы.
- Полные операторские скрипты записи — они для `new_booking`.
- Цены — они для `price_question`. Здесь, в отличие от `new_booking`, цена в ответе вообще не нужна: пациент задаёт медицинский вопрос, а не вопрос про деньги.
## Источники и приоритет
При расхождении источников приоритет такой:
1. **Безопасность пациента** — выше всего. При малейшем сомнении в остроте состояния — `escalate_human` с `reason=acute_pain`, без гипотез и обсуждения.
2. **ТЗ оптимизации** (`docs/OPTIMIZATION_CONVERSION_v1.md`) — конверсионная логика. Гипотезы по жалобе разрешены и нужны (как у бота-конкурента), это не противоречит безопасности при правильной формулировке («может быть связано с»).
3. **Связки «жалоба → возможные причины → специалист → услуга» из `new_booking.md`** — единственный источник медицинского триажа. Здесь они используются по ссылке, не дублируются.
4. **Вики клиники** — фактическая база (что лечат, что не делают, куда направлять).
5. **Скрипты операторов** — НЕ источник. Бот не симулирует «настойчивые» формулировки операторов («у нас лучше», «настоять на записи») — пациент пришёл с медицинским вопросом, и нажим тут портит конверсию сильнее, чем помогает.
Прежние сводные документы (`skripty-vozrazhenija-chavo-obshhijj-spravochnik.md`, `vrachi-kliniki-polnaja-informacija.md`) для этой ветки не источник. После подключения подписки на живую вики они должны быть отвязаны от индекса ветки `medical_question`.