feat: уточнение адреса — место происшествия не равно адресу заявителя (lct-35)

Главный предмет проверки в билетах заказчика — адрес: названный заявителем
часто неверен, а настоящий добывается переспросом («ул. Станционная, 28»
оказывается Королёвом). Памятка АРМ-112 называет это обычным делом.

До этой правки оценка работала наоборот: ground_truth.address сравнивался
с единственным значением факта, поэтому курсант, правильно переспросивший
и записавший настоящий адрес, получал расхождение с эталоном, а записавший
ориентир — зачёт.

- Схема: у факта появились refined и refine_on, задаются только вместе.
- Слот-автомат различает уточнение и повтор: повтор раздражает звонящего,
  уточнение — нет, оператор спросил о другом и получил другое.
- Звонящий поправляется отдельной репликой, а не повторяет прежнее значение;
  офлайн-таблица получила секцию refine.
- Оценка: метрика address_refined (E1, опрос). Сделана отдельной, а не правкой
  метрики address: «записал не тот адрес» и «не спросил» — разные навыки
  и разные компетенции в радаре.
- Общие пункты чек-листа подключаются по требованию сценария: формулировки
  в checklists/common.yaml, сценарий объявляет пункт с тем же id без текста.
  Добавлять «уточните адрес» во все сценарии нельзя — неотработанный пункт
  штрафует за вопрос, которого сценарий не требовал.
- scenarios/fire-private-house-l3.yaml — первый сценарий из библиотеки
  заказчика (билет 3, вызов 1).

Риск механики проверен на живой модели: «Назовите адрес» и «Это точно Москва?»
эмбеддинги не путают, тест это фиксирует.

125 тестов зелёных (12 новых), make typecheck чистый.
This commit is contained in:
Ivan Gerasimov 2026-09-19 20:26:49 +03:00
commit 842a333d16
11 changed files with 381 additions and 8 deletions

View file

@ -17,3 +17,20 @@ not_questions:
- "Выходите из квартиры"
- "Не кладите трубку"
- "Хорошо, записываю"
# Пункты, которые не принадлежат ни одному классификатору. Сценарий подключает
# нужный, объявив пункт с тем же `id` и без текста, — формулировки подставятся
# отсюда. Насильно во все сценарии они не добавляются: неотработанный пункт
# штрафует курсанта отметкой E1 за вопрос, которого сценарий не требовал.
checklist:
- id: q_address_check
question: "Уточните: происшествие по этому адресу, вы сейчас там?"
examples:
- "Это точно Москва?"
- "Вы сами находитесь по этому адресу?"
- "Происшествие там же, где вы?"
- "Какой город?"
- "Это в черте города?"
- "Уточните адрес происшествия"
- "Вы смотрите на это или вам рассказали?"
- "Адрес происшествия и ваш адрес совпадают?"