Files
RAG_helper/data/datasets/reschedule.md
T
AR 15 M4 dc9538027c chore(data): чистка датасетов под чанкер v2 + кейсы регрессии 4 веток
- data/datasets/*.md: вынесены служебные блоки (мета, источники, что доделать)
  в отдельные docs/wiki_meta_<branch>.md по конвенции ТЗ 8.5 — парсер
  индексирует только то, что физически лежит в data/datasets/
- data/datasets/doctors.md: новый датасет (список врачей по специальностям)
- eval/branch_cases_<intent_code>.jsonl: новые наборы для price_question,
  medical_question, escalate_human, reschedule (база для Спринта 8.6)
- eval/branch_cases_general_info.jsonl: точечная правка кейсов

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

17 KiB
Raw Blame History

Перенос и отмена записи

Когда срабатывает эта ветка

Триггеры, которые бот узнаёт как реплики ветки reschedule:

  • «я сегодня не смогу подойти», «не получится прийти на приём», «не смогу быть в назначенное время»;
  • «перенесите запись на другой день», «можно перенести на вечер?»;
  • «отмените мой визит на завтра», «снимите запись», «удалите запись»;
  • «мне отменили приём, что делать?» — это особый подвид (отмена со стороны клиники, см. ниже).

Ключевой признак: пациент говорит, что не придёт или хочет поменять время — значит запись уже была сделана ранее. Если пациент хочет записаться впервые или на новый приём, это new_booking.

Что бот должен собрать у пациента

Минимальный набор данных, чтобы администратор мог найти и обработать запись:

  • ФИО пациента, на кого оформлена запись (особенно если пишет родственник).
  • Дата и время текущей записи.
  • Врач или специальность (если пациент помнит).
  • Что хочет — отменить или перенести.
  • Если хочет перенести — желаемый интервал нового времени: «утро / день / вечер», «будни / выходные», конкретные дни. Конкретные слоты бот не подтверждает — реальный календарь к ветке не подключён.
  • Контактный телефон для подтверждения, если он отличается от номера, с которого пишет пациент.

Если пациент изначально написал кратко («не приду сегодня»), нужно мягко уточнить хотя бы ФИО и время — без этого администратор не найдёт запись в Полимеде.

Базовое поведение бота

  • Извинение за неудобство одной короткой фразой («Понимаю, планы меняются»).
  • Уточнение, какую именно запись надо изменить.
  • Уточнение — отмена или перенос.
  • Если перенос — желаемый интервал нового времени.
  • Финал: «Сейчас уточню расписание у администратора и вернусь с вариантами» (или «Передам ваш запрос администратору, он свяжется с вами для уточнения нового времени»).

Бот не называет конкретные новые даты и часы как доступные. Реальный календарь подключается отдельно, а до этого формулировка только обещающая.

Готовые формулировки для отмены

Из шаблонов вики, минимально подогнанные под чат-формат:

  • «Информацию получили, спасибо, что сообщили. Запись отменена. Если хотите подобрать другое удобное время — напишите, я передам администратору».
  • «Запись на приём отменили. Чтобы перенести на другую дату и время — напишите желаемый интервал, и я передам администратору».
  • «Запись на приём удалена. Хотели бы перенести её на другой день?» (после ответа «нет» на напоминание о приёме).

Главное в формулировке — благодарность за то, что предупредили (а не просто «не пришёл»), и предложение перенести.

Готовые формулировки для переноса

  • «Хорошо, перенесу — подскажите желаемый день и время, чтобы я передал администратору. Конкретное время он подтвердит сам».
  • «Понял, передам администратору, что нужен перенос с {старая_дата} на {желаемый_интервал}. Он свяжется с вами в течение дня и подтвердит новое время».
  • Если пациент не определился с новым временем: «Без проблем, давайте сделаем так — отменим текущий приём, а когда захотите подобрать новое время, напишите сюда. Я передам администратору».

Стандартная фраза-резерв (пока нет интеграции с календарём): «Сейчас уточню у администратора и вернусь с вариантами».

Особые ситуации

Отмена со стороны клиники (пациенту отменили приём)

Триггеры: «мне отменили приём», «врач отменил смену», «клиника прислала, что приёма не будет».

Ситуация: смена врача отменилась по объективной причине. Из вики, шаблон-уведомление: «По объективным причинам рабочая смена у доктора отменена. Приносим извинения и предлагаем перенести приём на другое удобное время. Свяжитесь с нами по телефону (342) 207-03-03 для уточнения новой даты».

Поведение бота: подтвердить факт, извиниться от лица клиники, предложить перенести. Если пациент раздражён — [INTENT_CHANGE: escalate_human] с reason=angry или explicit_request.

Пациент заболел перед операцией

Триггеры: «мне завтра операция, но я заболел», «температура перед операцией».

Поведение бота: подтвердить, что в этой ситуации операция переносится. Цитата из вики: «Доктор решение о проведении операции принимает после осмотра ребёнка перед операцией. Необходимо подойти, сообщить доктору жалобы. Он посмотрит, если пациент болен, перенесёт операцию, назначит лечение».

То есть пациент всё равно приезжает в день операции — врач осматривает и решает. Если пациент хочет отменить заранее (за день, за два) — это уже escalate_human с reason=surgery, потому что отмена операции — не рутинный перенос, тут участвует и хирург, и анестезиолог, и предоперационная подготовка.

Опоздание на текущий приём

Триггеры: «я опаздываю на 10 минут», «застрял в пробке, успею к 16:00 вместо 15:30».

В вики прямого правила «допустимое опоздание» нет. Поведение бота: поблагодарить за предупреждение, передать в чат администраторам, чтобы держали место. Если опоздание серьёзное (>20–30 минут) и непонятно, успевает ли пациент — мягко предупредить, что администратор может предложить перенос на другое время. Если пациент уверенно говорит «доеду» — фиксируем как «опоздание, держим запись».

Технически это пограничный случай между reschedule и обычным служебным сообщением. Если бот видит фразу «опоздаю», по умолчанию остаётся в reschedule — администратор всё равно решает, держать запись или переносить.

Запрос на перенос к конкретному врачу с ограниченным расписанием

Триггеры: упоминание Ворончихиной Н. В., сурдологов, врача в отпуске.

Из вики: запись к Ворончихиной Н. В. ведётся только через лист ожидания; сурдологов записывают надолго вперёд, есть лист ожидания «вдруг освободится». Если пациент хочет перенести приём у такого врача на более раннюю дату — честно сказать: «Запись к {врач} ведётся через лист ожидания. Я передам администратору, он внесёт вас в лист и свяжется, когда появится подходящее окно».

Особый случай — Лебединская Е. А.: запись и переносы ведёт только её личный ассистент Медведева Н. В. Бот в этом случае собирает данные и передаёт.

Перенос приёма по ДМС

Триггеры: «у меня запись по ДМС, нужно перенести».

Логика: сама запись в системе переносится администратором как обычно. Особенность — гарантийное письмо страховой может иметь срок действия. Из вики: в гарантийном письме указан срок (для Адониса — 30 дней с даты исходящего), и если новая дата не укладывается, пациенту нужно запросить новое гарантийное письмо в страховой. Бот в чате об этом мягко предупреждает: «При переносе по ДМС обратите внимание — у гарантийного письма страховой есть срок действия. Если новая дата за пределами срока, нужно будет запросить у страховой новое письмо. Администратор уточнит детали при подтверждении переноса».

Пациент хочет перенести, но фактически рассказывает про другую жалобу или запись

Триггеры: «не пойду к ЛОРу — лучше запишите к сурдологу», «отмените приём, и хочу записаться к аллергологу».

Это уже new_booking[INTENT_CHANGE: new_booking]. Старую запись можно зафиксировать слотом «отменить» в реплике перед переключением, но всю сборку нового приёма ведёт ветка new_booking.

Когда переключать в другие ветки

  • Острая боль, кровотечение, высокая температура → [INTENT_CHANGE: escalate_human] с reason=acute_pain. Перенос подождёт — пациента сначала надо вывести из острой ситуации.
  • Упоминание операции, наркоза, стационара → [INTENT_CHANGE: escalate_human] с reason=surgery. Касается и записи на операцию, и переноса операции.
  • Пациент явно злится из-за отмены/переноса (включая отмену со стороны клиники) → [INTENT_CHANGE: escalate_human] с reason=angry.
  • Пациент спрашивает «вернёте ли деньги», «штраф за неявку» → [INTENT_CHANGE: price_question] (там должен быть отдельный блок про возвраты, см. датасет price_question.md).
  • Пациент решил записаться на новый приём, не связанный со старым → [INTENT_CHANGE: new_booking].

Чего бот НЕ делает в этой ветке

  • Не подтверждает конкретные новые слоты («во вторник в 14:00») как доступные. Расписание уточняет администратор.
  • Не отменяет реальную запись в Полимеде. Бот собирает данные и передаёт в чат «Администраторы». Реальное действие — на стороне человека.
  • Не озвучивает штрафов, неустойки за неявку. В вики таких правил нет, см. раздел «Что нужно дополнить».
  • Не обсуждает медицинскую тему — если пациент по ходу переноса жалуется на симптомы, это не повод уходить в medical_question. Жалоба фиксируется только если она объясняет причину переноса (например, «перенесите, у меня температура» — это не диагноз, это причина).
  • Не переадресует на конкретный внутренний добавочный — пациенту озвучивается только основной номер клиники: 8 (342) 207-03-03 (КУГН), 8 (342) 200-02-03 (Г. Звезда), 8 (342) 207-03-00 (Пирогов).

Контекст: как клиника обычно узнаёт об отмене

Это нужно боту скорее как фон, чтобы понимать поведение пациентов:

  • За 4 часа до приёма пациент получает автоматическое напоминание в WhatsApp (утренние приёмы — с вечера). В Полимеде у администратора это отображается «зелёным квадратиком».
  • Пациент отвечает «да» (придёт) или «нет» (отменяет).
  • При «нет» запись в системе удаляется, пациенту предлагают перенести.
  • Если пациент пишет «перенести», это уже не автоматическая отмена — оператор перезванивает по телефону.

Поэтому, когда бот отвечает на отмену, имеет смысл предлагать перенос сразу — это типовой сценарий «нет → давайте на другой день».

Связанные практики (для контекста)

  • Лист ожидания — отдельная сущность в Полимеде. Пациента вносят, если: запись к врачу полная, врач в отпуске, к врачу записывают только через лист ожидания (Ворончихина Н. В., сурдологи). Бот в ветке reschedule упоминает лист ожидания, только когда пациент явно хочет на конкретного врача с ограниченным расписанием. В обычном переносе про лист ожидания не говорим — это создаёт лишнее ощущение «у вас всё плохо со слотами».
  • Заявка операторам — внутренний механизм у администраторов. Бот в чате воспроизводит этот механизм неявно: собирает в реплику пациента всю информацию, которая нужна по шаблону «ФИО, какой врач, со скольки до скольки, что делать с освободившимся временем». Сам пациент эту структуру не видит — для него это обычный диалог.