Commit graph

128 commits

Author SHA1 Message Date
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
kaifarikman
68361c66e0 feat: учитывать правонарушение в КИО 2026-09-27 23:40:24 +03:00
kaifarikman
f6976fe7bd docs: разобрать условия оповещения ЕКП 2026-09-27 23:40:24 +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
08e9d076f4 chore: импорты sessions.py без пересечения с правками main 2026-09-27 23:20:48 +03:00
GGlamer
77ec416933 chore: слияние с main, разрешены конфликты в partition smoke и SCALE-OUT 2026-09-27 23:15:17 +03:00
GGlamer
62d1010b79 chore: слияние с main, разрешены конфликты импортов в sessions.py 2026-09-27 23:15:04 +03:00
GGlamer
73c7ca6db2 chore: слияние с main, разрешены конфликты в реестре занятий, сокете call и тесте checkpoint 2026-09-27 23:14:35 +03:00
GGlamer
7abbce0ef8 fix: балл карточки после разбора в итоге упражнения ДДС 2026-09-27 23:08:12 +03:00
GGlamer
a848f89da0 fix: разбор показывает все решения и балл карточки после разбора, вес отметки преподавателя в настройке 2026-09-27 23:04:54 +03:00
GGlamer
8ff51a8955 Merge branch 'feat/service-catalog'
lct-38: каталог 209 служб из «СЛУЖБЫ 112» для ручного добавления в карточку
2026-09-27 23:04:30 +03:00
GGlamer
6f1c951e35 Merge branch 'feat/session-signals'
Сигналы реестра занятий: очередь, повторные отказы, курсант не на связи
2026-09-27 23:04:21 +03:00
GGlamer
7f0bf7943b Merge branch 'feat/cluster-close-code'
fix: partition smoke засчитывает 1012 и 1013 как fail-closed закрытие каналов
2026-09-27 23:04:07 +03:00
GGlamer
b61036b6fc fix: BOM и нулевой пробел в экспорте CSV по имени символа вместо кода 2026-09-27 22:59:01 +03:00
GGlamer
2b4516a6a8 fix: одинарное экранирование BOM и нулевого пробела в экспорте CSV 2026-09-27 22:54:00 +03:00
GGlamer
61662c9d09 fix: вернуть экранированные BOM и нулевой пробел в экспорте CSV 2026-09-27 22:51:37 +03:00
GGlamer
0d54fcc893 fix: форма разбора с историей решений, выбором карточки только для D-кодов и ключом повтора 2026-09-27 22:48:50 +03:00
GGlamer
eefb5e75fe test: история решений, связка 112 → ДДС, отказ при сбое аудита, разбор занятия из истории 2026-09-27 22:44:03 +03:00
GGlamer
871832d5ca fix: балл после разбора в PDF, все решения по отметке в экспорте, вес отметки преподавателя в критериях 2026-09-27 22:41:27 +03:00
GGlamer
7b9987e78f test: сквозная реакция на доклад через станцию, отказ от работ и восстановление из checkpoint 2026-09-27 22:40:20 +03:00
GGlamer
7eb4d17248 fix: строка пауз в разборе только при паузах 2026-09-27 22:37:19 +03:00
GGlamer
da740dce7f fix: E-коды без карточки в связке 112 → ДДС, идемпотентная ручная отметка, ответ по строке после commit 2026-09-27 22:35:28 +03:00
GGlamer
21f695344b fix: BOM в экспорте CSV через имя символа вместо escape-кода 2026-09-27 22:35:16 +03:00
GGlamer
4747b0a118 fix: экспорт CSV снова держит BOM экранированным в исходнике 2026-09-27 22:33:42 +03:00
GGlamer
db8787c6b3 fix: история решений по отметке, пересчёт кодов и баллов карточек, вес отметки преподавателя из весов занятия 2026-09-27 22:32:41 +03:00
GGlamer
59fcbb3d6b test: юнит-тесты реакции на доклад по формату нормативов времени, лимит в экспорте 2026-09-27 22:32:12 +03:00
GGlamer
d403965f49 fix: директивы неактивны на паузе, отложенные правки не уходят в закрытое занятие 2026-09-27 22:30:18 +03:00
GGlamer
584f86f796 test: смоук доказывает разовую проверку логина на B по журналу, время от создания учёток 2026-09-27 22:29:57 +03:00
GGlamer
01e128c22d fix: строка добавленных служб на АРМ ДДС без пустого значения, пикер с лимитом 20 и без служб из notify 2026-09-27 22:29:33 +03:00
GGlamer
83709b8b1e fix: реакция на доклад бригады — норматив через time_metric, без штрафа при отказе от работ 2026-09-27 22:28:49 +03:00
GGlamer
d44dbc8d92 test: таймаут разовой проверки, кэш отказа, запись версии узла в БД при сверке и входе 2026-09-27 22:28:02 +03:00
GGlamer
a8d717200d fix: разовая проверка логина с таймаутом и кэшем отказа, версия узла выше БД записывается в БД 2026-09-27 22:25:01 +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
GGlamer
5f8dd98e39 fix: partition smoke проверяет fencing при свежем auth и отказ записи старого владельца после обрыва БД 2026-09-27 22:20:14 +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