GGlamer
08e9d076f4
chore: импорты sessions.py без пересечения с правками main
2026-09-27 23:20:48 +03:00
GGlamer
62d1010b79
chore: слияние с main, разрешены конфликты импортов в sessions.py
2026-09-27 23:15:04 +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
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
da740dce7f
fix: E-коды без карточки в связке 112 → ДДС, идемпотентная ручная отметка, ответ по строке после commit
2026-09-27 22:35:28 +03:00
GGlamer
db8787c6b3
fix: история решений по отметке, пересчёт кодов и баллов карточек, вес отметки преподавателя из весов занятия
2026-09-27 22:32:41 +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
GGlamer
b4420cea16
docs: README для жюри со скриншотами экранов
2026-09-27 13:20:56 +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
gglamer
64313a62fb
refactor: прогресс звонящего вынесен в модели SlotProgress и PersonaProgress
2026-09-26 22:13:35 +00:00
gglamer
fca353fdd0
refactor: правила пульта ДДС перенесены в DdsDesk.apply, сокет станции — только транспорт
2026-09-26 22:01:27 +00:00
gglamer
5a3761a830
refactor: пульт ДДС владеет живыми карточками, сессия не копирует их поля
...
Связка 112→ДДС больше не подменяет таймеры оператора таймерами первой
карточки ДДС, поэтому время заполнения карточки 112 снова попадает в оценку.
2026-09-26 21:38:09 +00:00
GGlamer
c0fa0a50a1
Merge branch 'feat/finish-card-status'
...
fix: card_status в отчёте ДДС берётся у карточки, активной при завершении
2026-09-27 00:12:18 +03:00
gglamer
12329e7c5d
fix: card_status в отчёте ДДС берётся у карточки, активной при завершении
2026-09-26 21:12:00 +00:00
GGlamer
783b63a683
Merge branch 'feat/session-report-hook'
...
refactor: общий hook отчёта сессии и объект параметров useControl.start
2026-09-27 00:09:40 +03:00
gglamer
3dc116534d
refactor: useControl.start принимает объект параметров вместо 14 позиционных
2026-09-26 20:59:50 +00:00
gglamer
f6d0653e68
refactor: отчёт сессии загружается одним hook useSessionReport с повтором 409
2026-09-26 20:59:50 +00:00
gglamer
a36ec619e4
fix: пульт не теряет команду при опросе fencing — чтение сокета больше не отменяется
2026-09-26 20:58:02 +00:00
gglamer
93c5f063f3
fix: кириллический шрифт DejaVu в пакете для экспорта PDF без системных шрифтов
2026-09-26 20:47:10 +00:00
GGlamer
02c86e457d
Merge branch 'feat/dds-ack-limit'
...
lct-11: срок решения на пульте ДДС из снимка сервера
2026-09-26 23:01:15 +03:00
GGlamer
69de83f232
Merge branch 'feat/checkpoint-fields'
...
fix: снимок сессии сохраняет раскрытые факты и поля завершённых карточек ДДС
2026-09-26 23:01:11 +03:00
gglamer
47bda8fba9
lct-11: срок решения на пульте ДДС из снимка сервера
2026-09-26 19:58:17 +00:00
gglamer
83b7f8ffdd
fix: timer.tick доходит до пульта ДДС
2026-09-26 19:57:43 +00:00
gglamer
eb5de96ed7
fix: снимок сессии сохраняет раскрытые факты и поля завершённых карточек ДДС
2026-09-26 19:56:50 +00:00
gglamer
1d6b4d67da
fix: отчёт и чек-лист при передаче 112→ДДС по сценарию оператора
2026-09-26 19:55:12 +00:00
gglamer
491655de5c
fix: сокеты dev не закрываются при недоступной БД поколений
2026-09-26 19:27:52 +00:00
gglamer
fb9c27977d
perf: разбор библиотеки сценариев один раз на прогон тестов
2026-09-26 19:27:52 +00:00
gglamer
d26cf2365d
perf: разбор YAML сценариев через libyaml
2026-09-26 19:27:52 +00:00
gglamer
daa4f8c4f1
fix: подключить рекомендации модели к разбору, убрать лишнюю проверку грамматики ответа ДДС, задать настроение персоне worried
2026-09-26 17:14:04 +00:00
gglamer
3ae682a354
docs: актуализировать документацию под текущий продукт и код
...
Продукт сместился на упражнение ДДС с готовой карточкой, а часть
документов описывала голосовой тренажёр, LLM-судью и несуществующие
модули. Всё сверено с кодом.
- tasks/README.md: статусы карточек по коду, lct-13 снята
- arch: дерево модулей BACKEND/FRONTEND по коду, STT по умолчанию
Whisper small, события и маршруты CONTRACT по events.py и API
- product: разбор, методика, режимы и звонящий без судьи и
нереализованных функций (автопроигрывание эталона, ЭРА-ГЛОНАСС)
- spec, hackathon: нормативы настраиваемые, формат сценария по схеме,
питч под ДДС, исторические решения помечены датой
- удалены посторонний 1.md и отработанные гайды lct-01 из корня
2026-09-26 17:13:56 +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
68dd83c7c2
Complete incident selection and 112 to DDS workflow
2026-09-21 20:10:57 +03:00
andreysk0304
0526b11f91
Implement DDS exercise, customer UI and local demo
2026-09-21 19:56:13 +03:00
andreysk0304
cec84ffcd0
Implement local task 09 training workflows
2026-09-21 17:40:54 +03:00
Ivan Gerasimov
e081fa410b
новое чуть
2026-09-20 10:05:43 +03:00
Ivan Gerasimov
9b74e3e524
feat: все 96 вызовов из билетов заказчика в библиотеке (lct-34)
...
Перенесены все 32 билета учебного центра, по три вызова в каждом. Это тот
материал, по которому заказчик учит операторов сегодня, — библиотека больше
не состоит из придуманных нами ситуаций.
Состав: медицина 23, пожары 19, полиция 16, ЖКХ 5, прочее 33. Исходы:
карточка 86, передача в другой регион 8, справка 2. С уточнением адреса —
29 вызовов. Уровни L1/L2/L3 — 11/38/47.
Написаны чек-листы, которых не было: medical, police, utility.
Признаки ЕКП подбирались под каждый вызов и проверены загрузчиком: комбинация,
которой нет в классификаторе, роняет загрузку. Несколько раз это и случилось,
и ошибка называла, чего не хватает.
Эталонных ответов в сценариях намеренно нет: в билетах их нет тоже, их знает
преподаватель, а наш эталон выводится кодом из фактов. Факты каждого вызова —
ровно то, что названо в строке билета.
193 теста зелёных, make seed заливает 97 сценариев.
2026-09-20 09:32:56 +03:00