54 lines
1.7 KiB
Markdown
54 lines
1.7 KiB
Markdown
# Шаг 9: Трекер попыток
|
|
|
|
## Цель
|
|
|
|
Реализовать единый интерфейс просмотра всех попыток прохождения тестов.
|
|
|
|
---
|
|
|
|
## Задачи
|
|
|
|
### 9.1. API трекера
|
|
|
|
| Эндпоинт | Метод | Описание |
|
|
|----------|-------|----------|
|
|
| `/api/tracker` | GET | Список всех попыток |
|
|
|
|
**Параметры фильтрации:**
|
|
- `department_id` — по подразделению
|
|
- `user_id` — по сотруднику
|
|
- `test_id` — по тесту
|
|
- `status` — по статусу (in_progress, completed, expired)
|
|
- `passed` — по результату (true, false)
|
|
|
|
### 9.2. Поля в трекере
|
|
|
|
| Поле | Источник |
|
|
|------|----------|
|
|
| Сотрудник | users.full_name, departments.name |
|
|
| Тест | tests.title |
|
|
| Попытка № | test_attempts.attempt_number |
|
|
| Начало | test_attempts.started_at |
|
|
| Завершение | test_attempts.completed_at |
|
|
| Результат | correct_count / total_questions, % |
|
|
| Зачёт | passed (true/false) |
|
|
|
|
### 9.3. Права доступа
|
|
|
|
- **HR:** видит все попытки по всей клинике
|
|
- **Manager:** видит попытки только своего подразделения
|
|
- **Employee:** видит только свои попытки
|
|
|
|
### 9.4. Пагинация и сортировка
|
|
|
|
- Пагинация по 20/50/100 записей
|
|
- Сортировка по дате начала (убывание)
|
|
|
|
---
|
|
|
|
## Результат
|
|
|
|
- Таблица попыток с фильтрами
|
|
- Ограничение данных по роли
|
|
- Полная история прохождений
|