5.3 KiB
Спринт 1 — Редактор тестов: версионирование (desktop web)
Формат: отдельное веб desktop-приложение (согласно ТЗ task.md, этап 1; приёмка руководителями подразделений).
Граница спринта: до готовой цепочки версий теста, привязки попыток к версии, UI списков/истории/смены активной версии и деактивации цепочки.
Детальная нарезка и правила приёмки: card1.md (части V.x, A.x по мере готовности).
Дизайн: не отходить от визуального языка внутренних веб-экранов клиники (типографика, отступы, таблицы, модалки).
Стек (факт по репозиторию TestingWebApp): Node.js (API в backend/), PostgreSQL, Docker; фронтенд desktop-first SPA. Интеграция с HR_TG_Bot / экосистемой — по готовности API-контрактов, не обязана совпадать с FastAPI, если в этом репо бэкенд на Node. При переносе на Python — пересмотреть только слой API, смысл card1.md не меняется.
Данные: БД clinic_tests на общем кластере; сотрудник в сценариях — staff_members.id; telegram_id — только справка; RBAC — из HR. См. card1 (вступление).
Текущая реализация (сводка): ../PROJECT_STATUS.md.
Цель спринта
Реализовать §4.1 ТЗ (версионирование) end-to-end: модель данных, бизнес-правила, API, UI автора, поведение для сотрудника и разбора старых результатов.
Функциональные критерии готовности (из ТЗ 4.1)
- Пока по тесту не было попыток — автор редактирует на месте, номер версии не инкрементируется.
- После первой попытки каждое сохранение изменений создаёт новую версию (
version + 1, связьparent_id), предыдущая версия неактивна, данные сохраняются. - Попытки привязаны к конкретной версии; разбор старых попыток валиден после правок.
- В списках — только одна активная версия цепочки.
- История версий + ручная смена активной версии; остальные — неактивны.
- Тест можно деактивировать целиком (скрыть из списков, без удаления данных).
Технические подзадачи (этапы внутри спринта)
| # | Задача | См. в card1 |
|---|---|---|
| 1 | Миграция: parent_id, инвариант «одна активная версия на test_id», флаг цепочки (деактивация) |
V.1, V.6 |
| 2 | Сервис: «0 попыток — in-place; иначе — fork + копия вопросов» | V.2, V.3 |
| 3 | Попытка: test_version_id фиксируется на старте; не перезаписывается |
V.4 |
| 4 | API: CRUD с версиями; переключение активной; деактивация; списки без дублей | V.5, V.6, V.10 |
| 5 | UI: версия, история, смена активной, списки | V.7, V.8 |
| 6 | Тесты: unit + integration, регресс разбора | V.9 |
Авторизация на БД Postgres_TG_Bots: card1.md A.1–A.5 — в рамке спринта 1, если согласовано (иначе — отдельной задачей сразу после V.1).
Загрузка документа → тест: card1.md D.1–D.5 — вне замыкания только на версии; может пойти после V.3 или параллельно, зависит от LLM (§4.2).
Вне спринта 1 (как в ТЗ)
- Полный **AI-**модуль (§4.2) сверх импорта из карточки, медиа (§4.3), подсказки (§4.4), режимы (§4.5), дашборды (этап 2).
Документы тестирования
- Единый журнал (автопроверки + ваши шаги с ответом ОК/не ОК): TESTING_JOURNAL.md
- Черновик чек-листа: sprint-01-testing.md