Commit Graph

197 Commits

Author SHA1 Message Date
82394cc688 feat: закрыть остаточные P1/P2 по профилю, когорте и ведомости
- профиль приведён к docs/09: variant/level, updatedBy/name, лимит попыток
- V14: NOT NULL и полная уникальность когорты, preflight legacy-групп
- возврат группы из архива и история членства на странице группы
- пагинация групп и плоского списка материалов
- пакетные сдачи ведомости одним запросом
- XLSX-preflight импорта и audit-тесты ростера
- LDD: 66 claims, 398 тестов, release PASS
2026-10-29 20:51:27 +03:00
7ef5c866a3 fix(web): устойчивые ошибки courseNo и login E2E 2026-10-29 20:01:40 +03:00
65ed08f5c2 feat(web): перевести браузерные URL курсов на courseNo
- teacher/admin course pages, content, gradebook, profile, downloads
- courseNo -> UUID только на границе REST API
- обновлены e2e, шаблоны, тесты и docs
- LDD-UI-002; baseline 59 claims / 385 тестов
2026-10-29 19:51:03 +03:00
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