lct-hack/scenarios/tickets/t03-1-fire-private-house.yaml
Ivan Gerasimov 4c2bbfd021 feat: билеты 1–3 заказчика в библиотеку сценариев (lct-34, частично)
Девять вызовов из билетов учебного центра в scenarios/tickets/. Библиотека
стала вложенной: загрузчик ходит по подкаталогам, checklists/ и pregenerated/
сценариями не считаются. Поля ticket и position задаются вместе.

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

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

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

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

161 тест зелёный.
2026-09-20 08:38:01 +03:00

64 lines
2.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Билет 3, вызов 1 (docs/spec/TICKETS.md). Был первым перенесённым вызовом —
# потому что показывает приём, которого не было в наших сценариях: названный
# адрес существует и в Москве, и в области, и правильный узнаётся только
# переспросом. Механика — tasks/lct-35-address-refinement.md
id: t03-1-fire-private-house
ticket: 3
position: 1
title: "Пожар в частном доме, адрес уточняется"
type: fire
level: L3
topics: [fires, address]
modes: [training, exam, self]
extends: checklists/fire.yaml
signs: [жилой дом, частный дом, открытое пламя]
persona:
base: worried
arc:
- { stage: registration, mood: worried }
- { stage: interview, mood: worried }
- { stage: dispatch, mood: calm }
first_line: "Здравствуйте! У нас крыша горит, дом деревянный! Приезжайте!"
facts:
- id: f_address
value: "улица Станционная, дом 28"
# Заявитель называет улицу так, будто это Москва. Настоящий адрес —
# подмосковный Королёв, и он всплывает только на уточняющий вопрос.
refined: "Московская область, город Королёв, улица Станционная, дом 28"
reveal_on: { question: q_address }
refine_on: q_address_check
- id: f_what_burns
value: "горит крыша, огонь открытый, дом деревянный"
reveal_on: { question: q_what_burns }
- id: f_people
value: "все вышли во двор, в доме никого нет"
reveal_on: { question: q_people }
- id: f_gas
value: "дом не газифицирован, газа нет"
reveal_on: { question: q_gas }
checklist:
- { id: q_address, fact: f_address }
- { id: q_address_check }
- { id: q_what_burns, fact: f_what_burns }
- { id: q_people, fact: f_people }
- { id: q_gas, fact: f_gas }
required_fields:
- address
- incident_type
- description
ground_truth:
# Эталон — уточнённый адрес: записавший «улица Станционная, 28» отправит
# расчёт не в тот регион.
address: "Московская область, город Королёв, улица Станционная, дом 28"
victims: 0
tree:
pregenerated: false