diff --git a/static/docs.html b/static/docs.html index 02717b4..81ed401 100644 --- a/static/docs.html +++ b/static/docs.html @@ -311,6 +311,30 @@
suspended_intent, resumable_step_code, resumable_slots. Когда маршрутизатор увидит, что пациент возвращается к исходной теме («ладно, продолжаем запись»), мы автоматически восстановим шаг и слоты.Правило, которое блокирует переход шага вперёд, пока не заполнены нужные слоты. Хранится в поле guards каждого шага (Настройки → Шаги → поле Guards). Проверяется после того, как модель вернула корректный state_after — то есть даже если модель «захотела» перейти, валидатор не пустит без нужных данных.
Формат — JSON-объект, где каждый ключ — имя guard'а:
+{
+ "require_legal_rep": {
+ "description": "Для записи ребёнка нужны ФИО и телефон законного представителя",
+ "trigger_slot": "is_child",
+ "trigger_value": true,
+ "required_slots": ["legal_rep_name", "legal_rep_phone"]
+ }
+}
+ Поля:
+trigger_slot — слот, при значении которого guard активируется. Если опущен — guard активен всегда.trigger_value — значение, которое должен иметь trigger_slot для активации (например, true).required_slots — список слотов, которые должны быть заполнены для разрешения перехода.description — пояснение для операторов; показывается в «Состоянии диалога» в Песочнице при срабатывании.Сейчас guard задан на шаге qualify ветки new_booking: при is_child: true нельзя перейти в present, пока не заполнены legal_rep_name и legal_rep_phone. В Песочнице при срабатывании появляется красный блок: «🔒 guard require_legal_rep не пройден — ждём: legal_rep_name, legal_rep_phone».
handoff_count в состоянии диалога считает все переключения ветки. При превышении 3 переключений за диалог следующее переключение блокируется: диалог автоматически уходит в escalate_human с шаблонным ответом «Уточню детали с администратором клиники, свяжемся с вами в течение ближайшего часа». Это страховка от циклов вроде «запись ↔ цены ↔ запись ↔ цены».intro сразу в book.qualify, пока не указаны ФИО и телефон родителя.