Commit graph lct-hack/backend/app/scoring/dispatcher.py
Author SHA1 Message Date
gglamer
4abdf0a901 Merge remote-tracking branch 'origin/main' into feat/dds-timers
# Conflicts:
#	backend/app/scoring/dispatcher.py
#	backend/app/scoring/export.py
#	backend/app/session/finish.py
#	docs/arch/CONTRACT.md
#	docs/spec/GAP.md
#	frontend/src/features/instructor/ScoreWeightsEditor.tsx
2026-09-27 20:56:09 +00:00
Ivan Gerasimov
51ef99c472 lct-50: таймеры ДДС — 30 с до открытия карточки, 3 минуты до первой записи 2026-09-27 23:38:10 +03:00
kaifarikman
5e459c449b fix: норматив доклада только по выбору 2026-09-27 23:37:57 +03:00
kaifarikman
6e7c4f4596 fix: пауза исключена из реакции на доклад 2026-09-27 23:33:46 +03:00
kaifarikman
0d58878cbe chore: обновить паузу занятия от main
# Conflicts:
#	backend/app/scoring/dispatcher.py
#	backend/app/session/store.py
2026-09-27 23:30:18 +03:00
GGlamer
83709b8b1e fix: реакция на доклад бригады — норматив через time_metric, без штрафа при отказе от работ 2026-09-27 22:28:49 +03:00
kaifarikman
2304d94877 lct-39: пауза не искажает оценку ДДС и не блокирует завершённое занятие 2026-09-27 17:18:27 +03:00
Ivan Gerasimov
a998b0c2f7 lct-37: норматив реакции ДДС на доклад бригады, отметка D6 и настраиваемый лимит 2026-09-27 16:26:13 +03:00
Ivan Gerasimov
f98c464f4b lct-35: преподаватель подтверждает, снимает и добавляет отметки D1–D6 с пересчётом балла 2026-09-27 16:13:21 +03:00
gglamer
5a3761a830 refactor: пульт ДДС владеет живыми карточками, сессия не копирует их поля
Связка 112→ДДС больше не подменяет таймеры оператора таймерами первой
карточки ДДС, поэтому время заполнения карточки 112 снова попадает в оценку.
2026-09-26 21:38:09 +00:00
andreysk0304
7237265833 Complete training workflow and acceptance hardening 2026-09-26 17:13:45 +00:00
andreysk0304
4c4b91064f Complete DDS training workflow and delivery package 2026-09-24 01:10:49 +03:00
andreysk0304
cec84ffcd0 Implement local task 09 training workflows 2026-09-21 17:40:54 +03:00
Ivan Gerasimov
d4f0d0a0f8 feat: статусы реагирования на АРМ ДДС и ошибки диспетчера D1–D6 (lct-33)
ТЗ называет обучаемого оператором ДДС, а его работа в системе-112 состоит
из одного действия: получить карточку и правильно проставить статус
реагирования с комментарием. Памятка заказчика посвящена этому целиком.
Наш АРМ умел два статуса из девяти.

- domain/statuses.py: девять статусов реагирования с автоматом переходов,
  семь статусов карточки, обязательные комментарии к отказам. Формулировки
  из памятки дословно — диспетчер должен узнать слова своего боевого АРМ.
- Автомат на сервере: фронт рисует только пришедшее в available. Отвергнутая
  отметка не попадает в журнал и возвращается текстом для курсанта.
- scoring/dispatcher.py: D1, D2, D3, D4, D6 детерминированно. D3 (отказ
  от профильного происшествия) проверяется по списку оповещения из ЕКП —
  без классификатора его было бы не на чем посчитать. D5 оставлен судье.
- Отметки D идут в отчёт рядом с E: в живой цепочке 112 → ДДС участвуют обе роли.
- Экран ДДС: таблица служб со статусами, поле комментария у отказов,
  журнал отметок, статус карточки красным в трёх случаях из семи.

Сквозной тест повис на ожидании station.state и вскрыл продуктовый дефект:
снимок уходил только в ответ на действие диспетчера, то есть список оповещения
он видел лишь после того, как что-то нажмёт. Теперь station.state отправляется
сразу за card.received.

Упрощения записаны в карточке: статусы «Проверена» и «Не завершено» не
считаются — первый требует главного специалиста, второй 48 часов.

148 тестов зелёных (23 новых), make typecheck чистый.
2026-09-20 08:23:55 +03:00