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. Когда маршрутизатор увидит, что пациент возвращается к исходной теме («ладно, продолжаем запись»), мы автоматически восстановим шаг и слоты.
+
+
Guard (условие перехода) (guard)
+
+

Правило, которое блокирует переход шага вперёд, пока не заполнены нужные слоты. Хранится в поле 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"]
+  }
+}
+

Поля:

+ +

Сейчас guard задан на шаге qualify ветки new_booking: при is_child: true нельзя перейти в present, пока не заполнены legal_rep_name и legal_rep_phone. В Песочнице при срабатывании появляется красный блок: «🔒 guard require_legal_rep не пройден — ждём: legal_rep_name, legal_rep_phone».

+
+
+
Защита от петли (routing loop guard)
Счётчик handoff_count в состоянии диалога считает все переключения ветки. При превышении 3 переключений за диалог следующее переключение блокируется: диалог автоматически уходит в escalate_human с шаблонным ответом «Уточню детали с администратором клиники, свяжемся с вами в течение ближайшего часа». Это страховка от циклов вроде «запись ↔ цены ↔ запись ↔ цены».
@@ -391,6 +415,7 @@
- Документ описывает текущее состояние после Спринта 6b (блок D): удержание в ветке, боковые вопросы, структурированный ответ. Следующее: guards в сценарии записи (блок F), причина эскалации (блок E), умный маршрутизатор, видящий состояние диалога (блок G). + Документ описывает текущее состояние после Спринта 6b (блоки D + F): удержание в ветке, боковые вопросы, структурированный ответ, guards. Следующее: причина эскалации с reason (блок E), умный маршрутизатор, видящий состояние диалога (блок G).