gglamer
29aca65e8c
fix: тесты паузы останавливают таймер DDS_ACK открытием карточки (lct-50)
2026-09-28 18:26:16 +00:00
gglamer
de624d09f0
feat: реагирование смежных служб в карточке ДДС и вводная «бригада просит смежников»
2026-09-28 18:02:03 +00:00
gglamer
b7445a60fe
Merge remote-tracking branch 'origin/main' into feat/decline-scenarios
...
# Conflicts:
# docs/spec/GAP.md
2026-09-27 20:56:41 +00:00
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
GGlamer
1c91341273
Merge branch 'feat/cluster-auth-handshake'
...
fix: неизвестный узлу логин проверяется разово, не отзывается сразу
2026-09-27 23:48:38 +03:00
gglamer
240848a68d
Merge remote-tracking branch 'origin/main' into feat/cluster-auth-handshake
...
# Conflicts:
# docs/arch/SCALE-OUT.md
# scripts/test_cluster_failover.py
2026-09-27 20:48:17 +00:00
Ivan Gerasimov
13642ec973
lct-52: два сценария с эталонным отказом ДДС — дубль и чужая зона
2026-09-27 23:48:03 +03:00
GGlamer
8361e38a5a
Merge branch 'feat/dds-card-errors-wording'
...
lct-53: ДДС сообщает в 112 об ошибке карточки по докладу с места
2026-09-27 23:45:32 +03:00
Ivan Gerasimov
94886b6914
lct-53: ДДС сообщает в 112 об ошибке карточки по докладу с места, а не «не проверяет»
2026-09-27 23:44:02 +03:00
kaifarikman
68361c66e0
feat: учитывать правонарушение в КИО
2026-09-27 23:40:24 +03:00
kaifarikman
f6976fe7bd
docs: разобрать условия оповещения ЕКП
2026-09-27 23:40:24 +03: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
b66cf14e3f
Merge branch 'feat/report-reaction'
...
lct-37: норматив реакции ДДС на доклад бригады
2026-09-27 23:27:49 +03:00
GGlamer
20acef6ad8
chore: правки пауз вне строк из main, чтобы ветку обновить слиянием
2026-09-27 23:23:05 +03:00
GGlamer
c1a67badbf
Merge branch 'feat/finding-review'
...
lct-35: разбор по отметкам — подтвердить, снять, добавить с пересчётом балла
2026-09-27 23:21:24 +03:00
GGlamer
73c7ca6db2
chore: слияние с main, разрешены конфликты в реестре занятий, сокете call и тесте checkpoint
2026-09-27 23:14:35 +03:00
GGlamer
8ff51a8955
Merge branch 'feat/service-catalog'
...
lct-38: каталог 209 служб из «СЛУЖБЫ 112» для ручного добавления в карточку
2026-09-27 23:04:30 +03:00
GGlamer
eefb5e75fe
test: история решений, связка 112 → ДДС, отказ при сбое аудита, разбор занятия из истории
2026-09-27 22:44:03 +03:00
GGlamer
7b9987e78f
test: сквозная реакция на доклад через станцию, отказ от работ и восстановление из checkpoint
2026-09-27 22:40:20 +03:00
GGlamer
59fcbb3d6b
test: юнит-тесты реакции на доклад по формату нормативов времени, лимит в экспорте
2026-09-27 22:32:12 +03:00
GGlamer
d44dbc8d92
test: таймаут разовой проверки, кэш отказа, запись версии узла в БД при сверке и входе
2026-09-27 22:28:02 +03:00
GGlamer
f9d2c2cc77
fix: отказ kio.patch возвращает серверные значения, каталог служб проверяется на входе, без дублей с notify
2026-09-27 22:23:15 +03:00
GGlamer
c26c8ba332
fix: пауза отклоняет директивы пульта и повторный запуск таймера, снимается после конца занятия
2026-09-27 22:23:12 +03:00
GGlamer
43d87c59af
fix: сигнал очереди считает только карточки без первичного статуса, критичность сигнала через TimerState
2026-09-27 22:20:49 +03:00
kaifarikman
9dd7ac425b
fix: повторять сохранение присутствия после сбоя
2026-09-27 18:19:09 +03:00
kaifarikman
57c3ff5a5c
fix: учёт связи курсанта по сокетам и фазе ДДС
2026-09-27 18:14:51 +03:00
kaifarikman
a35aa3f6a2
fix: защитить вход на втором узле от гонок
2026-09-27 18:11:51 +03:00
kaifarikman
88bb54fc24
lct-39: пауза останавливает действия и голос
2026-09-27 18:06:49 +03:00
kaifarikman
2757a34ed5
fix: сигнал не на связи переживает рестарт, самый строгий сигнал красит строку
2026-09-27 17:57:17 +03:00
kaifarikman
69b483f570
feat: сигналы реестра занятий: очередь, повторные отказы, курсант не на связи
2026-09-27 17:57:17 +03:00
kaifarikman
2304d94877
lct-39: пауза не искажает оценку ДДС и не блокирует завершённое занятие
2026-09-27 17:18:27 +03:00
kaifarikman
42f1da7f83
fix: разовая проверка не затирает более свежий локальный отзыв
...
lct-42: стейл-ответ SELECT, пришедший после конкурентного invalidate_login
на том же узле, откатывал поколение назад и снова принимал отозванную
cookie. После ожидания перепроверяем кэш и не перезаписываем более свежее
значение. Детерминированный тест гонки; SCALE-OUT.md отделяет старые
замеры от непроверенного кластерным смоуком изменения.
2026-09-27 17:13:01 +03:00
kaifarikman
b6617d7df8
fix: неизвестный узлу логин проверяется разово, не отзывается сразу
...
lct-42: узел кластера принимал вход другого узла первую секунду за отзыв
и рвал сокет FORBIDDEN. Неизвестный логин теперь проверяется разовым
SELECT auth_version, результат кэшируется, параллельные запросы одного
логина дедуплицируются; логина нет в users или БД недоступна — как раньше.
2026-09-27 17:05:29 +03:00
Ivan Gerasimov
3ce3e768e1
lct-38: каталог 209 служб из «СЛУЖБЫ 112» для ручного добавления в карточку
2026-09-27 16:52:11 +03:00
kaifarikman
b77d65c82e
lct-39: пауза занятия с пульта, таймеры и очередь ДДС стоят на время простоя
2026-09-27 16:35:13 +03:00
Ivan Gerasimov
a998b0c2f7
lct-37: норматив реакции ДДС на доклад бригады, отметка D6 и настраиваемый лимит
2026-09-27 16:26:13 +03:00
Ivan Gerasimov
3f5f57877a
test: HTTP-тесты разбора отметок не требуют PostgreSQL
2026-09-27 16:25:02 +03:00
Ivan Gerasimov
f98c464f4b
lct-35: преподаватель подтверждает, снимает и добавляет отметки D1–D6 с пересчётом балла
2026-09-27 16:13:21 +03:00
Ivan Gerasimov
aa6860fc6c
test: тесты не зависят от LLM-настроек личного .env и сети WSL2
2026-09-27 15:35:21 +03:00
Ivan Gerasimov
a2ce08f46a
fix: отозванная cookie не оживает, когда логина нет в users
2026-09-27 15:35:20 +03:00
gglamer
9f2ef7691f
refactor: оценка занятия по неизменяемому снимку, грамматика параметром, тесты без SimpleNamespace
2026-09-27 08:06:05 +00:00
gglamer
a11206527a
refactor: одна функция метрики норматива времени для карточки 112 и карточки ДДС
2026-09-27 08:06:05 +00:00
gglamer
36a9862a94
refactor: общий вход в сокет занятия и выполнение команды с fencing вместо копий в четырёх каналах
2026-09-27 07:56:12 +00:00
gglamer
f9b6fafb7c
refactor: завершение занятия — одна операция end_session вместо четырёх копий в сокетах
2026-09-27 07:40:31 +00:00
gglamer
0d7bbf39b3
refactor: lease занятий ведёт хаб поверх SessionStore, main и admin не читают реестр хаба напрямую
2026-09-26 23:17:04 +00:00
gglamer
47cb85ee02
refactor: запись хода занятия — один commit SessionStore на операцию вместо журнала и checkpoint
...
Правка балла с пульта и из отчёта идёт одной доменной операцией: раньше WS-путь не обновлял full_report живой сессии.
2026-09-26 22:48:24 +00:00
gglamer
72c6a7cfa3
refactor: снимок занятия — model_dump сохраняемой части сессии вместо ручного перечисления полей
2026-09-26 22:13:35 +00:00