b57a5ffbce
docs: уточнить остаточные P1/P2 после импорта
2026-10-29 19:24:09 +03:00
1b98b1828d
fix(import): обновлять updated_at при восстановлении аккаунта
2026-10-29 19:23:35 +03:00
1570196cc7
fix(import): построчные ошибки до записи
...
- preflight занятого логина и неактивной целевой группы
- applied=false с номером строки, без частичных студентов
- LDD-IMPORT-003; baseline 58 claims / 368 тестов
2026-10-29 19:20:16 +03:00
238c689175
docs: актуализировать счётчики тестов по модулям
2026-10-29 18:59:19 +03:00
9412d87fed
fix: закрыть P0/P1 расхождения с целевой моделью
...
- академический отпуск: readOnly, запрет submit/start/finish защиты
- черновики лабораторных скрыты от студентов в списке/деталях/по UUID
- удалено действие «Убрать из группы» из UI и API
- импорт: restoreInactiveStatuses, skipped-отчёт, разблокировка архивного аккаунта
- глобальные материалы STUDENTS/TEACHERS с JWT-фильтрацией и сменой аудитории
- LDD-AUTH-005 переведён на unit-evidence, clean check проходит по P0
- backup: безопасный парсинг .env, verify-latest, кавычки cron
- robots/noindex, комментарии без автора, профиль без черновиков
- docs/18-goal-audit.md; baseline 57 claims / 366 тестов / release PASS
2026-10-29 18:58:21 +03:00
9cb4d0d263
docs: обновить baseline после hotfix действий статей
2026-10-29 12:04:43 +03:00
f3d614bb33
ci: изолировать пайплайны на отдельной VM
...
- Woodpecker workflows требуют агент с меткой isolation=dedicated-vm
- шаги выполняются в lms-ci:1 с nested dockerd, без хост-Docker сокета
- ci/Dockerfile: прогретый immutable-образ (Java, Python, Node, Gradle-кэш)
- ci-dind.sh поднимает dockerd внутри privileged-шага; ci-build-image.sh собирает образ
- deploy/WOODPECKER.md: отдельная VM, firewall, отсутствие production-секретов,
trusted repo, чек-лист безопасности
2026-10-29 12:01:44 +03:00
685916c4bd
ci: перевести merge gate на Gitea + Woodpecker
...
- .woodpecker/check.yaml, smoke.yaml, release.yaml
- local-backend агент: Java 21, Docker Compose v2, Python 3, Node/Playwright
- concurrency lms-ci, чтобы smoke/release не занимали порты одновременно
- deploy/WOODPECKER.md: server, OAuth Gitea, systemd-агент, security note
- удалён .gitlab-ci.yml
2026-10-29 12:01:44 +03:00
1e1e9ae0e4
feat: закрыть остаточный backlog
...
- keyset-пагинация аудита с курсором (occurred_at, id) и UI «Показать ещё»
- пакетный /api/v1/labs/details и переход progress на один запрос
- абсолютный потолок сессии 30 дней (identity V12 + web), очистка refresh
- админская инвентаризация legacy-активов (/admin/legacy-assets, скрипт)
- E2E в Chromium/Firefox/WebKit (18/18), CI preflight
- LDD: 51 claim, 346 тестов, docs и handoff обновлены
2026-10-29 12:01:44 +03:00
d45137220c
docs: handoff после закрытия продуктовых рисков
2026-10-29 12:01:44 +03:00
9dcba8ce0c
docs: закрытие продуктовых рисков и новый LDD baseline
2026-10-29 12:01:44 +03:00
71fa3284a0
ci: дымовой тест на push и полный release gate
2026-10-29 12:01:44 +03:00
4ef6c7f7ed
feat(perf): пагинация аудита и bulk-группы курса
2026-10-29 12:01:44 +03:00
3adfba9bec
feat(auth): короткий access, refresh и 7-дневная sliding-сессия
2026-10-29 12:01:44 +03:00
08e5a62c0e
feat(security): закрыть legacy-активы от публичного доступа
2026-10-29 12:01:44 +03:00
97149fa59d
docs: актуальный p95 LDD load smoke
2026-10-29 12:01:44 +03:00
287e01cde8
docs: завершить LDD baseline и release evidence
2026-10-29 12:01:44 +03:00
85d34e78cb
test(ldd): конкурентность, нагрузка и release gate
2026-10-29 12:01:44 +03:00
05f628a52b
docs: установка Chromium для LDD browser E2E
2026-10-29 12:01:44 +03:00
238fd91f69
docs: LDD baseline с mutation и browser E2E
2026-10-29 12:01:44 +03:00
b7129b92e0
fix(json): применять Kotlin-модуль Jackson 3
2026-10-29 12:01:43 +03:00
905feb440b
feat(ldd): property-based, mutation и браузерный E2E
2026-10-29 12:01:43 +03:00
80ccf26b61
docs: LDD baseline и ссылки на реестр
2026-10-29 12:01:43 +03:00
e70394d634
ci: добавить LDD evidence gate
2026-10-29 12:01:43 +03:00
4130a1af2f
feat(ldd): реестр утверждений, evidence gate и runtime-проверки
2026-10-29 12:01:43 +03:00
0ac75bcd5c
docs: уточнить аудит просмотра профиля
2026-10-29 12:01:43 +03:00
25a3dbd0fb
docs: права преподавателя, аудит, CI и итоговые проверки
2026-10-29 12:01:43 +03:00
d7b886513f
chore: маршрут аудита, внутренний токен academic и CI
2026-10-29 12:01:43 +03:00
16e6c3282b
test(web): преподавательская ведомость, материалы и аудит
2026-10-29 12:01:43 +03:00
97e14f040c
feat(web): ведомость преподавателя, материалы курса и аудит
2026-10-29 12:01:43 +03:00
4d97feaf9e
feat(identity): центральный аудит и внутренний список групп
2026-10-29 12:01:43 +03:00
c6ca981eca
feat(progress): преподавательские оценки, защиты и аудит
2026-10-29 12:01:43 +03:00
1de7207c3c
feat(academic): права преподавателя, группы курса и аудит
2026-10-29 12:01:43 +03:00
5affe9873b
feat(web): преподавательский редактор лабораторных
2026-10-29 12:01:43 +03:00
916046791a
feat(progress): доступ преподавателя к операциям лабораторной
2026-10-29 12:01:43 +03:00
7c86194765
feat(academic): преподаватель может вести лабораторные
2026-10-29 12:01:43 +03:00
d6461a3a9c
docs: видимость активов и итоговые проверки
2026-10-29 12:01:43 +03:00
9aef82e217
feat(academic): защита активов материалов
2026-10-29 12:01:43 +03:00
3fd0d41cf2
docs: итоговый отчёт и оставшиеся разрывы
2026-10-29 12:01:43 +03:00
fba648ea54
fix(web): перепроверять статус сессии
2026-10-29 12:01:43 +03:00
520a61085a
fix(academic): детерминированный предпросмотр при совпадении slug
2026-10-29 12:01:43 +03:00
60a318539c
docs: этап 5 — курсовые материалы
2026-10-29 12:01:43 +03:00
0b5d5d0ca5
feat(web): страницы материалов курса
2026-10-29 12:01:43 +03:00
43229059d3
feat(academic): курсовые материалы и публичный ALL-контент
2026-10-29 12:01:43 +03:00
4a2daf2fec
docs: этапы 3–4 — роли, профиль и жизненный цикл
2026-10-29 12:01:43 +03:00
1d21e66dc4
feat(web): повышение курса и жизненный цикл студентов
2026-10-29 12:01:43 +03:00
e139a585b4
feat(identity): повышение курса и жизненный цикл студентов
2026-10-29 12:01:43 +03:00
753cb5ba0a
feat(web): профиль студента и ростер группы для преподавателя
2026-10-29 12:01:43 +03:00
fa097518f8
feat(progress): профиль студента курса и скачивание попыток
2026-10-29 12:01:42 +03:00
a970fe62c4
feat(academic): состав групп курса для преподавателя
2026-10-29 12:01:42 +03:00