|
|
|
@ -74,19 +74,37 @@ |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## Спринт 3 — Трекер результатов |
|
|
|
## Спринт 3 — Редактирование теста + версионность |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Результат:** Тест можно редактировать. Если тест уже проходили — создаётся новая версия, старая сохраняется для истории. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Backend |
|
|
|
|
|
|
|
- [ ] Миграция `003`: добавить поле `parent_id` в таблицу `tests` (ссылка на предыдущую версию) |
|
|
|
|
|
|
|
- [ ] `PUT /api/tests/{id}` — редактировать тест: |
|
|
|
|
|
|
|
- Нет попыток → обновить на месте |
|
|
|
|
|
|
|
- Есть попытки → создать новый тест (`version + 1`, `parent_id = id`), вернуть `{test, is_new_version: true}` |
|
|
|
|
|
|
|
- [ ] `GET /api/tests` — показывать только последние версии (у которых нет «потомка») |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Frontend |
|
|
|
|
|
|
|
- [ ] Активировать кнопку «Редактировать» на странице `/tests/:id/edit` |
|
|
|
|
|
|
|
- [ ] Форма редактирования теста с предзаполненными данными |
|
|
|
|
|
|
|
- [ ] При сохранении с созданием новой версии — редирект на новый тест + уведомление |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Спринт 4 — Трекер результатов |
|
|
|
|
|
|
|
|
|
|
|
**Результат:** Таблица всех попыток прохождения тестов. |
|
|
|
**Результат:** Таблица всех попыток прохождения тестов. |
|
|
|
|
|
|
|
|
|
|
|
- [ ] API: `GET /api/attempts` — все попытки (с фильтрами по тесту, дате) |
|
|
|
- [ ] API: `GET /api/attempts` — все попытки (с фильтрами по тесту, дате) |
|
|
|
- [ ] Фронт: страница трекера |
|
|
|
- [ ] Фронт: страница трекера |
|
|
|
- Таблица: сотрудник, тест, № попытки, начало, завершение, результат, зачёт |
|
|
|
- Таблица: тест, версия, дата начала, дата завершения, результат, зачёт |
|
|
|
- Фильтрация по тесту и дате |
|
|
|
- Фильтрация по тесту и дате |
|
|
|
- Пагинация |
|
|
|
- Пагинация |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## Спринт 4 — Авторизация и управление пользователями |
|
|
|
## Спринт 5 — Авторизация и управление пользователями |
|
|
|
|
|
|
|
|
|
|
|
**Результат:** Вход по логину/паролю, роли ограничивают доступ. Можно создавать сотрудников и подразделения. |
|
|
|
**Результат:** Вход по логину/паролю, роли ограничивают доступ. Можно создавать сотрудников и подразделения. |
|
|
|
|
|
|
|
|
|
|
|
@ -101,11 +119,11 @@ |
|
|
|
|
|
|
|
|
|
|
|
### Роли и права |
|
|
|
### Роли и права |
|
|
|
|
|
|
|
|
|
|
|
| Роль | Тесты | Назначение | Трекер | |
|
|
|
| Роль | Тесты | Трекер | |
|
|
|
|------|-------|-----------|--------| |
|
|
|
|------|-------|--------| |
|
|
|
| HR-менеджер / Директор | Создаёт, все тесты | Всем сотрудникам | Вся клиника | |
|
|
|
| HR-менеджер / Директор | Создаёт и редактирует все тесты | Вся клиника | |
|
|
|
| Руководитель подразделения | Создаёт, свои тесты | Только своему отделу | Только свой отдел | |
|
|
|
| Руководитель подразделения | Создаёт и редактирует свои тесты | Только свой отдел | |
|
|
|
| Сотрудник | Только назначенные | — | Только свои | |
|
|
|
| Сотрудник | Проходит назначенные тесты | Только свои результаты | |
|
|
|
|
|
|
|
|
|
|
|
### Управление пользователями |
|
|
|
### Управление пользователями |
|
|
|
- [ ] API: CRUD подразделений |
|
|
|
- [ ] API: CRUD подразделений |
|
|
|
@ -119,13 +137,9 @@ |
|
|
|
- [ ] Фронт: форма назначения теста |
|
|
|
- [ ] Фронт: форма назначения теста |
|
|
|
- [ ] Фронт: дашборд сотрудника — список назначенных тестов со статусами (`Не начат`, `В процессе`, `Завершён`, `Просрочен`) |
|
|
|
- [ ] Фронт: дашборд сотрудника — список назначенных тестов со статусами (`Не начат`, `В процессе`, `Завершён`, `Просрочен`) |
|
|
|
|
|
|
|
|
|
|
|
### Версионирование тестов |
|
|
|
|
|
|
|
- [ ] При попытке редактировать назначенный тест — создаётся новая версия |
|
|
|
|
|
|
|
- [ ] Результаты привязаны к конкретной версии теста |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## Спринт 5 — Уведомления в MAX |
|
|
|
## Спринт 6 — Уведомления в MAX |
|
|
|
|
|
|
|
|
|
|
|
**Результат:** Сотрудники получают уведомления в мессенджер MAX. |
|
|
|
**Результат:** Сотрудники получают уведомления в мессенджер MAX. |
|
|
|
|
|
|
|
|
|
|
|
|