feat(backend): seed демо — Андрей (дни 0–13) и 7 пациентов кабинета #68

Merged
Eleboba merged 1 commits from feat/18-seed into dev 2026-10-04 12:53:12 +03:00
Owner

Что меняется

Демо-seed кабинета д-ра Смирновой: ветеран Андрей (день 0 для живого демо или день N с историей; 12 → 🟡, 13 → 🔴) и 7 пациентов с историей под статус из персоны. Алерты и цвета считают реальные правила, день за днём. Плюс сценарий консоли data/synthetic/andrey.jsonl на дни 0–13.

Closes #18

Зона

B

Как проверить

python -m scripts.seed_demo                   # Андрей день 0, печатает код подключения
python -m scripts.seed_demo --andrey-day 12   # жёлтый; 13 → красный (кризис)
python -m scripts.seed_demo --reset           # пересоздать БД, обнулить демо-часы, засидить (= POST /api/v1/demo/reset)
python -m scripts.seed_demo --write-scenario  # пересобрать andrey.jsonl из меток config/
uv run pytest -q tests/test_seed_demo.py

Публичное API: await seed(andrey_day=0) -> SeedResult (andrey_token, connect_code, colors, tokens), await reset(andrey_day=0) (None = только сброс), scenario_lines(), load_scenario(), константы DOCTOR_ID, ANDREY_SNILS, ALLOWED_ACTIONS.

Для консоли (#17): press — полная метка кнопки. Тест проверяет, что первое вхождение подстроки и точное совпадение в последней пачке ответов дают одну и ту же кнопку. advance_to — ближайшие HH:MM впереди. На день 6 ведущий подтверждает алерты на дашборде (заметка; на днях 6–9 нет expect_color). День 7 в 10:00: C-SSRS, затем PHQ-9.

Заметки:

  • У 7 фоновых пациентов нет dialog_state, поэтому шедулер их не трогает и их цвета стабильны при прокрутке часов.
  • PCL-5 на день 7 нет: по config/modules.yaml он раз в 14 дней.
  • seed без --reset подхватывает сохранённый сдвиг демо-часов (clock_state), даты совпадают с «сегодня» приложения.

Чек-лист

  • rebase на origin/dev
  • make lint + make test зелёные (840 passed)
  • лог в issue (### 2026-10-04)
  • нет ПДн в логах, нет реальных данных, нет секретов
  • общие файлы не трогались

🤖 Generated with Claude Code

## Что меняется Демо-seed кабинета д-ра Смирновой: ветеран Андрей (день 0 для живого демо или день N с историей; 12 → 🟡, 13 → 🔴) и 7 пациентов с историей под статус из персоны. Алерты и цвета считают реальные правила, день за днём. Плюс сценарий консоли `data/synthetic/andrey.jsonl` на дни 0–13. Closes #18 ## Зона B ## Как проверить ```bash python -m scripts.seed_demo # Андрей день 0, печатает код подключения python -m scripts.seed_demo --andrey-day 12 # жёлтый; 13 → красный (кризис) python -m scripts.seed_demo --reset # пересоздать БД, обнулить демо-часы, засидить (= POST /api/v1/demo/reset) python -m scripts.seed_demo --write-scenario # пересобрать andrey.jsonl из меток config/ uv run pytest -q tests/test_seed_demo.py ``` Публичное API: `await seed(andrey_day=0) -> SeedResult` (`andrey_token`, `connect_code`, `colors`, `tokens`), `await reset(andrey_day=0)` (None = только сброс), `scenario_lines()`, `load_scenario()`, константы `DOCTOR_ID`, `ANDREY_SNILS`, `ALLOWED_ACTIONS`. Для консоли (#17): `press` — полная метка кнопки. Тест проверяет, что первое вхождение подстроки и точное совпадение в последней пачке ответов дают одну и ту же кнопку. `advance_to` — ближайшие HH:MM впереди. На день 6 ведущий подтверждает алерты на дашборде (заметка; на днях 6–9 нет `expect_color`). День 7 в 10:00: C-SSRS, затем PHQ-9. Заметки: - У 7 фоновых пациентов нет `dialog_state`, поэтому шедулер их не трогает и их цвета стабильны при прокрутке часов. - PCL-5 на день 7 нет: по `config/modules.yaml` он раз в 14 дней. - `seed` без `--reset` подхватывает сохранённый сдвиг демо-часов (`clock_state`), даты совпадают с «сегодня» приложения. ## Чек-лист - [x] rebase на origin/dev - [x] make lint + make test зелёные (840 passed) - [x] лог в issue (### 2026-10-04) - [x] нет ПДн в логах, нет реальных данных, нет секретов - [x] общие файлы не трогались 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Eleboba added 1 commit 2026-10-04 12:51:07 +03:00
- scripts/seed_demo.py: doctor doc-smirnova (on call), Andrey day 0 (connect code,
  no consent) or day N with history; 7 patients with seeded-random histories.
  Alerts and colours come from the real rules evaluated day by day.
- --reset drops/recreates both DBs and zeroes the demo clock; seed keeps the
  persisted clock offset so dates match the running app.
- data/synthetic/andrey.jsonl: console scenario for days 0..13 generated from
  config button labels (--write-scenario).
- tests: idempotency, modes, colours, scenario format/sync and a full replay of
  the scenario through the real engine, scheduler and monitoring.

Refs #18

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eleboba merged commit 8e62722ec0 into dev 2026-10-04 12:53:12 +03:00
Eleboba deleted branch feat/18-seed 2026-10-04 12:53:12 +03:00
Sign in to join this conversation.