feat: билеты 1–3 заказчика в библиотеку сценариев (lct-34, частично)

Девять вызовов из билетов учебного центра в scenarios/tickets/. Библиотека
стала вложенной: загрузчик ходит по подкаталогам, checklists/ и pregenerated/
сценариями не считаются. Поля ticket и position задаются вместе.

Написаны чек-листы, которых не было: medical, police, utility. Без них
переносить было не на что — в библиотеке существовал только пожарный.

Девять вызовов закрывают все приёмы, ради которых билеты и брались: адрес
по ориентиру, адрес из другого региона, линейный объект (съезд с МКАД),
непрофильный вызов, профильный но не экстренный, массовая драка, где список
оповещения поднимает и полицию, и скорую.

Подводный камень записан в SCENARIO-FORMAT: значения признаков ЕКП бывают
с запятыми («Человек в воде, на льдине»), и в короткой записи YAML разрывает
такое значение на два.

Осталось семь билетов — работа механическая, рецепт отработан на трёх.

161 тест зелёный.
This commit is contained in:
Ivan Gerasimov 2026-09-20 08:38:01 +03:00
commit 4c2bbfd021
7 changed files with 280 additions and 3 deletions

View file

@ -0,0 +1,58 @@
# Билет 3, вызов 3 (docs/spec/TICKETS.md). Водитель заблокирован в машине:
# признак «Блокированные» поднимает и спасателей, и скорую. Адрес — линейный
# объект, съезд с МКАД: улицы и дома нет вовсе.
id: t03-3-log-blocked-driver
title: "Бревно упало на машину, водитель заблокирован"
ticket: 3
position: 3
type: other
level: L3
topics: [rescue, address]
modes: [training, exam, self]
extends: checklists/police.yaml
signs: ["ДТП пострадавшие", "Блокированные"]
persona:
base: panic
arc:
- { stage: registration, mood: panic }
- { stage: interview, mood: worried }
first_line: "С грузовика бревно слетело, прямо на легковую! Водитель зажат, не вылезает!"
facts:
- id: f_address
value: "съезд с МКАД на Симферопольское шоссе в область"
refined: "съезд с МКАД внутренней стороны на Симферопольское шоссе, 100 метров не доезжая, обочина"
reveal_on: { question: q_address }
refine_on: q_address_check
- id: f_what_happened
value: "бревно упало с грузовика на легковую машину"
reveal_on: { question: q_what_happened }
- id: f_victims
value: "водитель заблокирован в машине, сам выйти не может"
reveal_on: { question: q_victims }
- id: f_vehicle
value: "ВАЗ красного цвета, номер не видно"
reveal_on: { question: q_vehicle }
- id: f_caller
value: "Иванова Елена Сергеевна, телефон 916 896 3254"
reveal_on: { question: q_caller }
checklist:
- { id: q_address, fact: f_address }
- { id: q_address_check }
- { id: q_what_happened, fact: f_what_happened }
- { id: q_victims, fact: f_victims }
- { id: q_vehicle, fact: f_vehicle }
- { id: q_caller, fact: f_caller }
required_fields: [address, incident_type, description, victims_count]
ground_truth:
address: "съезд с МКАД внутренней стороны на Симферопольское шоссе"
victims: 1
tree:
pregenerated: false