d5f6abb5ad2436207689434d4a17995ba363795a
Backend:
- Models: TestAttempt, AttemptAnswer (migration 002)
- POST /api/attempts: start attempt, shuffle questions/answers,
hide is_correct, expose is_multiple for UI hints
- POST /api/attempts/{id}/submit: save answers, calculate score,
strict matching (selected == correct), return full result
- GET /api/attempts/{id}/result: fetch saved result
- Register attempts router in main.py
Frontend:
- api/attempts.ts: types + API functions
- TestTake page: one question at a time, progress bar, timer
with auto-submit, back navigation controlled by test setting,
radio/checkbox based on is_multiple
- AttemptResult page: score, pass/fail, per-question breakdown
with correct/selected/missed answer highlighting
- App.tsx: add /tests/:testId/take and /attempts/:id/result routes
- TestDetail: add "Пройти тест" button
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
QA Test App — Система тестирования сотрудников клиники
Веб-приложение для проведения внутреннего тестирования сотрудников. Руководители подразделений создают тесты, назначают их сотрудникам, система фиксирует результаты.
Проект разрабатывается как мастер-класс для джуниор-разработчиков. История разработки — пошаговые запросы и решения — сохраняется в
DOC/ШАГИ/.
Формат тестирования
- Вопрос + минимум 3 варианта ответа (один или несколько правильных)
- Минимум 7 вопросов в тесте
- Случайный порядок вопросов при каждом прохождении
- Опциональный таймер на прохождение
- Порог зачёта задаётся автором теста (%)
Роли
| Роль | Возможности |
|---|---|
| HR-менеджер / Директор | Создаёт тесты, назначает всем сотрудникам клиники, видит все результаты |
| Руководитель подразделения | Создаёт тесты, назначает только своему отделу, видит результаты своего отдела |
| Сотрудник | Проходит назначенные тесты, видит свои результаты и ошибки |
Стек
| Слой | Технология |
|---|---|
| Backend | Python 3.12 + FastAPI + SQLAlchemy 2.0 + Alembic |
| База данных | PostgreSQL 16 |
| Frontend | React 18 + TypeScript + Vite + Ant Design + TanStack Query |
| Инфраструктура | Docker Compose + Nginx |
| Уведомления | Мессенджер MAX (Спринт 5) |
План спринтов
| Спринт | Содержание |
|---|---|
| 1 | Инфраструктура (Docker, FastAPI, React, PostgreSQL) + создание тестов |
| 2 | Прохождение теста + результаты и разбор ошибок |
| 3 | Трекер результатов |
| 4 | Авторизация, роли, подразделения, управление пользователями |
| 5 | Уведомления в MAX |
Документация
| Файл | Содержание |
|---|---|
DOC/ТЗ.md |
Техническое задание (v1.1) |
DOC/СТЕК.md |
Технологический стек с обоснованием |
DOC/СПРИНТЫ.md |
Детальный план спринтов с задачами |
DOC/ШАГИ/ |
История разработки шаг за шагом |
Запуск (после Спринта 1)
docker compose up --build
Приложение будет доступно на http://localhost.
Description
Приложение для тестирования сотрудников клиники методом один вопрос - до пяти ответов один из которых правильный. Сотрудник должен выбрать правильный вариант ответа
Languages
TypeScript
56%
Python
41.7%
Mako
0.8%
Dockerfile
0.7%
HTML
0.4%
Other
0.3%