Files
qa_test_app/DOC/ШАГИ/ШАГ_2026-03-21_013.md
T
Aleksey Razorvin fc684e7c7d Спринт 5: Трекер результатов
- Миграция 005: user_id в test_attempts (дефолт 1 = Гость)
- GET /api/attempts с фильтрами по тесту, дате и пагинацией
- Страница /tracker: таблица попыток, фильтры, пагинация
- Ссылка «Трекер» в шапке приложения

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 15:26:40 +05:00

2.5 KiB

ШАГ 013 — Спринт 5: Трекер результатов

Дата: 2026-03-21 Контекст: Мастер-класс по разработке системы тестирования сотрудников клиники.


Запрос

Оставляем текущий спринт. Введём user_id здесь вручную — пусть это будет гость.


Реализовано

Страница трекера всех попыток с фильтрацией и пагинацией. Все попытки пока принадлежат одному пользователю — «Гость» (user_id = 1).


Новые файлы

backend/alembic/versions/005_attempt_user.py  ← добавляет user_id в test_attempts
frontend/src/pages/Tracker/index.tsx          ← страница /tracker

Изменённые файлы

backend/app/models/attempt.py      ← поле user_id (default=1, server_default='1')
backend/app/schemas/attempt.py     ← AttemptListItem, AttemptListResponse
backend/app/api/attempts.py        ← GET /api/attempts + GUEST_USER_ID/NAME константы
frontend/src/api/attempts.ts       ← AttemptListItem, AttemptListResponse, list()
frontend/src/App.tsx               ← роут /tracker, кнопка «Трекер» в шапке

API эндпоинты (новые)

Метод URL Параметры Описание
GET /api/attempts test_id, date_from, date_to, page, page_size Список завершённых попыток

Схема БД (изменено)

test_attempts
  + user_id  INTEGER  NOT NULL  DEFAULT 1

Технический долг (Sprint 6)

  • user_id = 1 → заменить на ID из JWT токена
  • GUEST_USER_NAME → JOIN с таблицей users
  • Все эндпоинты открыты → добавить JWT Middleware

Следующие шаги

  • Спринт 1: Инфраструктура + Создание тестов
  • Спринт 2: Прохождение теста + результат
  • Спринт 3: Редактирование + версионность
  • Спринт 4: AI-помощник (DeepSeek)
  • Спринт 5: Трекер результатов
  • Спринт 6: Авторизация и роли
  • Спринт 7: Уведомления в MAX