Files
hrm-medpark/docs/testing/control-medical-scenarios.md
T
Danil Suhomlinov 33800292aa chore: add Coolify deployment scaffolding (Dockerfiles, prod compose, git hygiene)
- apps/api/Dockerfile: build NestJS, run prisma migrate deploy on start
- apps/web/Dockerfile + nginx.conf: build Vite, serve static, proxy /api -> api
- docker-compose.coolify.yml: full prod stack (postgres, redis, minio, keycloak, api, web)
- .dockerignore / .gitignore / .gitattributes

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:42:45 +03:00

465 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Control Medical — Сценарии UI-тестирования
> Проверяем только то, что видит и делает пользователь в браузере.
> Открыть: `http://localhost:5173`
> Логин: страница входа → выбрать пользователя и роль → «Autentifică-te»
---
## Роли для тестирования
| Роль | Что можно делать |
|------|-----------------|
| **HR Admin** | Всё |
| **HR Specialist** | Создавать профили и checkup, удалять документы |
| **Medic Familie** | Видеть inbox, записывать вердикт |
| **Manager** | Только просматривать |
| **Employee** | Только просматривать своё |
---
## 1. Carduri de risc
### TC-01 — Создание карты риска
**Роль:** HR Admin
**Шаги:**
1. Меню слева → «Carduri de risc»
2. Нажать «+ Adaugă card de risc»
3. Ввести название, добавить хотя бы 1 фактор риска
4. Нажать «Salvează»
**Ожидаем:** Карта появляется в таблице, виден бейдж с количеством факторов
---
### TC-02 — Редактирование карты
**Роль:** HR Admin
**Шаги:**
1. В таблице карт нажать иконку карандаша
2. Изменить название или добавить новый фактор
3. Сохранить
**Ожидаем:** В таблице отображается обновлённое название/количество факторов
---
### TC-03 — Удаление карты
**Роль:** HR Admin
**Шаги:**
1. Создать тестовую карту (не привязанную к сотрудникам)
2. Нажать иконку корзины
3. Подтвердить удаление
**Ожидаем:** Карта исчезает из таблицы
---
### TC-04 — HR Specialist не видит кнопки удаления и создания
**Роль:** HR Specialist
**Шаги:**
1. Открыть «Carduri de risc»
**Ожидаем:** Кнопка «+ Adaugă» и иконки удаления отсутствуют
---
### TC-05 — Карта со всеми категориями факторов
**Роль:** HR Admin
**Шаги:**
1. Создать карту, добавив факторы в каждую из 5 категорий: chimici, fizici, biologici, ergonomici, psihosociali
2. Сохранить и открыть карту
**Ожидаем:** Все 5 категорий с факторами отображаются в деталях карты
---
## 2. Profil medical сотрудника
### TC-06 — Назначение медицинского профиля
**Роль:** HR Admin
**Шаги:**
1. Меню → «Angajați» → открыть любого сотрудника
2. Вкладка «Medical» → кнопка «Editează»
3. Выбрать карту риска, ввести CORM-код и специальность
4. Сохранить
**Ожидаем:** В профиле отображается карта риска как кликабельная ссылка, CORM-специальность заполнена, «ULTIMUL CONTROL» пуст
---
### TC-07 — Включение флага «Expus radiații»
**Роль:** HR Admin
**Шаги:**
1. Открыть медицинский профиль сотрудника → «Editează»
2. Включить тогл «Expus radiații ionizante»
3. Ввести дозу externă и internă
4. Сохранить
**Ожидаем:** Поле «EXPUS RADIAȚII: Da» отображается в профиле; значение dozaTotal = externă + internă
---
### TC-08 — Смена карты риска
**Роль:** HR Admin
**Шаги:**
1. У сотрудника уже есть профиль с картой риска
2. «Editează» → выбрать другую карту → сохранить
**Ожидаем:** Новая карта отображается в профиле; история checkup не потерялась
---
### TC-09 — Просмотр профиля как Employee
**Роль:** Employee
**Шаги:**
1. Войти как employee → открыть свой профиль → вкладка «Medical»
**Ожидаем:** Данные видны, но кнопок «Editează» и удаления нет
---
## 3. Страница Control medical
### TC-10 — Статистические карточки отображаются корректно
**Роль:** HR Admin
**Шаги:**
1. Убедиться, что есть хотя бы 1 сотрудник с медицинским профилем
2. Открыть «Control medical»
**Ожидаем:** Карточки «TOTAL ANGAJAȚI», «CONTROL EXPIRAT», «EXPIRĂ ÎN 30 ZILE», «EXPUȘI RADIAȚII» показывают числа (не пустые и не нулевые если данные есть)
---
### TC-11 — Сотрудник без профиля не виден
**Роль:** HR Admin
**Шаги:**
1. Создать нового сотрудника, не добавляя ему медицинский профиль
2. Открыть «Control medical»
**Ожидаем:** Новый сотрудник в таблице отсутствует
---
### TC-12 — Статус NICIODATĂ у нового сотрудника с профилем
**Роль:** HR Admin
**Шаги:**
1. Назначить медицинский профиль новому сотруднику
2. Открыть «Control medical»
**Ожидаем:** Сотрудник виден в таблице, красный бейдж «NICIODATĂ», колонка «ULTIMUL CONTROL» показывает «—»
---
### TC-13 — Выбор строки кликом
**Роль:** HR Admin
**Шаги:**
1. На странице «Control medical» кликнуть на строку сотрудника
**Ожидаем:** Строка подсвечивается зелёным, чекбокс заполнен, счётчик кнопки «Generează documente» стал (1)
---
### TC-14 — Снятие выбора повторным кликом
**Роль:** HR Admin
**Шаги:**
1. Кликнуть строку (выбрать) → кликнуть снова (снять выбор)
**Ожидаем:** Подсветка пропала, счётчик вернулся к (0), кнопка стала неактивной
---
### TC-15 — Выбор всех через хедер-чекбокс
**Роль:** HR Admin
**Шаги:**
1. Кликнуть чекбокс в шапке таблицы
**Ожидаем:** Все строки выделены, счётчик = количество строк в таблице
---
### TC-16 — Фильтр по карте риска
**Роль:** HR Admin
**Шаги:**
1. В дропдауне «Toate» выбрать конкретную карту риска
**Ожидаем:** В таблице остаются только сотрудники с этой картой; счётчик кнопки сбрасывается в (0)
---
### TC-17 — Кнопка заблокирована при 0 выбранных
**Роль:** HR Admin
**Шаги:**
1. Открыть «Control medical», ничего не выбирать
**Ожидаем:** Кнопка «Generează documente (0)» серая и некликабельная
---
## 4. Генерация документов (Bulk)
### TC-18 — Открытие модала генерации
**Роль:** HR Admin
**Шаги:**
1. Выбрать сотрудника → нажать «Generează documente (1)»
**Ожидаем:** Открывается модал «Inițiere control medical» с:
- Текстом «1 angajați selectați»
- Дропдауном «Tipul controlului medical» (по умолчанию «Periodic»)
- Полем «Data planificată» (заполнено сегодняшней датой)
- Блоком с описанием документов, которые будут созданы
- Кнопками «Anulează» и «Generează documente»
---
### TC-19 — Генерация без флага радиации
**Роль:** HR Admin (сотрудник без `expusRadiatiiIonizante`)
**Шаги:**
1. Выбрать сотрудника → «Generează documente» → тип «Periodic» → дата сегодня → «Generează documente»
2. Подождать ~2 секунды
**Ожидаем:** Модал результата с:
- Заголовком «✓ Documente generate cu succes»
- 3 документа: ANEXA_3_FISA_SOLICITARE.DOCX, ANEXA_4_FISA_EVALUARE.DOCX, ANEXA_6_[ИМЯ].DOCX
- Anexa_4B **отсутствует**
- Toast «Documente generate» в углу экрана
---
### TC-20 — Генерация с флагом радиации
**Роль:** HR Admin (сотрудник с включённым `expusRadiatiiIonizante`)
**Шаги:**
1. Выбрать сотрудника с флагом радиации → «Generează documente» → подтвердить
**Ожидаем:** В результате **4 документа**: Anexa_3, Anexa_4, **Anexa_4B**, Anexa_6
---
### TC-21 — Тип checkup меняется в модале
**Роль:** HR Admin
**Шаги:**
1. Открыть модал генерации → сменить тип с «Periodic» на «La angajare»
**Ожидаем:** Выбор сохраняется, генерация проходит с типом «La angajare»
---
### TC-22 — Отмена генерации
**Роль:** HR Admin
**Шаги:**
1. Выбрать сотрудника → открыть модал → нажать «Anulează»
**Ожидаем:** Модал закрывается, ничего не создаётся, сотрудник остаётся выбранным
---
### TC-23 — Checkup появляется в истории сотрудника
**Роль:** HR Admin
**Шаги:**
1. Сгенерировать документы → закрыть результат
2. Меню «Angajați» → открыть сотрудника → вкладка «Medical»
**Ожидаем:** В «Istoricul controlului medical» новая строка: тип «PERIODIC», дата планирования, вердикт «IN AȘTEPTARE», 3 кликабельных документа
---
### TC-24 — Счётчик радиации на странице
**Роль:** HR Admin
**Шаги:**
1. Включить `expusRadiatiiIonizante` у одного сотрудника → открыть «Control medical»
**Ожидаем:** Карточка «EXPUȘI RADIAȚII» показывает 1 (или увеличивается на 1)
---
## 5. Inbox medic de familie
### TC-25 — Pending checkup виден в inbox
**Роль:** Medic Familie
**Шаги:**
1. Войти как Medic Familie
2. Меню → «Inbox medic»
**Ожидаем:** Таблица с pending checkup (verdict = null): колонки IDNP, ANGAJAT, TIP CONTROL, DATA PLANIFICATĂ, CARD DE RISC, кнопка «Completează»
---
### TC-26 — Метка «Întârziat» на просроченных
**Роль:** Medic Familie
**Шаги:**
1. Создать checkup с датой планирования в прошлом (или просто проверить текущие)
2. Открыть «Inbox medic»
**Ожидаем:** Рядом с датой оранжевая метка «Întârziat»
---
### TC-27 — Запись вердикта «Apt»
**Роль:** Medic Familie
**Шаги:**
1. Нажать «Completează» у checkup
2. Выбрать вердикт «Apt», дата заполнена автоматически
3. Нажать «Înregistrează verdict»
**Ожидаем:**
- Toast «Verdictul a fost înregistrat»
- Строка исчезает из inbox
- Список сокращается на 1
---
### TC-28 — Все варианты вердикта доступны
**Роль:** Medic Familie
**Шаги:**
1. Нажать «Completează» → открыть дропдаун «Verdict»
**Ожидаем:** 5 вариантов: Apt, Apt (perioadă adaptare), Apt condiționat, Inapt temporar, Inapt
---
### TC-29 — Нельзя отправить без вердикта
**Роль:** Medic Familie
**Шаги:**
1. Открыть «Completează» → НЕ выбирать вердикт → нажать «Înregistrează verdict»
**Ожидаем:** Кнопка не отправляет форму или отображается ошибка валидации (поле обязательное)
---
### TC-30 — Рекомендации (необязательное поле)
**Роль:** Medic Familie
**Шаги:**
1. «Completează» → вердикт «Apt conditionat» → заполнить «Recomandări» текстом → отправить
2. Открыть вкладку «Medical» сотрудника
**Ожидаем:** В колонке «RECOMANDĂRI» отображается введённый текст
---
### TC-31 — HR Admin не может записать вердикт
**Роль:** HR Admin
**Шаги:**
1. Войти как HR Admin → открыть «Inbox medic»
2. Нажать «Completează» → выбрать вердикт → отправить
**Ожидаем:** Toast с ошибкой «Forbidden resource», checkup остаётся в inbox
---
### TC-32 — После вердикта ULTIMUL CONTROL обновился
**Роль:** Medic Familie → затем HR Admin
**Шаги:**
1. Записать вердикт для periodic checkup
2. Войти как HR Admin → «Angajați» → сотрудник → вкладка «Medical»
**Ожидаем:** Поле «ULTIMUL CONTROL» = дата вердикта
---
### TC-33 — После вердикта добавился Anexa 6 Final
**Роль:** После записи вердикта
**Шаги:**
1. Записать вердикт → открыть вкладку «Medical» сотрудника → найти завершённый checkup
**Ожидаем:** В документах checkup появился новый файл «Anexa_6_Final_...» (4-й документ вместо 3-х)
---
## 6. Документы — скачивание и удаление
### TC-34 — Скачивание документа
**Роль:** HR Admin / HR Specialist
**Шаги:**
1. Вкладка «Medical» сотрудника → нажать «↓ Anexa_3_...» у любого checkup
**Ожидаем:** Открывается новая вкладка браузера, файл загружается (DOCX, не пустой)
---
### TC-35 — Удаление одного документа
**Роль:** HR Admin
**Шаги:**
1. В строке checkup нажать маленькую иконку корзины рядом с конкретным документом
2. Подтвердить (если есть подтверждение)
**Ожидаем:** Этот документ исчезает из списка, остальные документы строки остаются
---
### TC-36 — Удаление всех документов checkup («Toate»)
**Роль:** HR Admin
**Шаги:**
1. В строке checkup нажать кнопку «Toate» (удалить все)
2. Подтвердить
**Ожидаем:** Все документы строки исчезают, колонка «DOCUMENTE» пустая
---
### TC-37 — HR Specialist может удалять документы
**Роль:** HR Specialist
**Шаги:**
1. Открыть вкладку «Medical» сотрудника → удалить один документ
**Ожидаем:** Удаление проходит успешно, документ исчезает
---
### TC-38 — Medic Familie не видит кнопки удаления документов
**Роль:** Medic Familie
**Шаги:**
1. Войти как Medic Familie → открыть «Angajați» → вкладка «Medical»
**Ожидаем:** Иконки удаления документов недоступны / не отображаются
---
## 7. Удаление checkup
### TC-39 — Удаление checkup целиком
**Роль:** HR Admin
**Шаги:**
1. Вкладка «Medical» сотрудника → в строке checkup нажать большую красную корзину (удалить checkup)
2. Подтвердить
**Ожидаем:** Строка полностью исчезает из «Istoricul controlului medical»
---
### TC-40 — HR Specialist не видит кнопку удаления checkup
**Роль:** HR Specialist
**Шаги:**
1. Открыть вкладку «Medical» любого сотрудника
**Ожидаем:** Иконка удаления checkup (крайняя справа) недоступна или скрыта
---
## 8. Полный happy path (сквозной тест)
### TC-41 — Полный цикл от создания карты до вердикта
**Шаги:**
| # | Роль | Действие | Ожидаем |
|---|------|----------|---------|
| 1 | HR Admin | Carduri de risc → создать карту «Тест» с 2 факторами | Карта в таблице |
| 2 | HR Admin | Angajați → сотрудник → Medical → Editează → выбрать «Тест» → сохранить | Карта в профиле, ULTIMUL CONTROL пуст |
| 3 | HR Admin | Control medical → строка сотрудника → выбрать | Бейдж «NICIODATĂ», кнопка (1) |
| 4 | HR Admin | Generează documente → Periodic → сегодня → подтвердить | 3 документа в результате |
| 5 | HR Admin | Angajați → Medical → история | 1 строка IN AȘTEPTARE с 3 документами |
| 6 | Medic Familie | Inbox medic → Completează → Apt → Înregistrează | Toast успех, строка ушла из inbox |
| 7 | HR Admin | Angajați → Medical | ULTIMUL CONTROL = сегодня, вердикт APT, 4 документа |
| 8 | HR Admin | Control medical | Сотрудник получил статус «OK» (или пропал из таблицы) |
---
## 9. Статусы checkup в истории — визуальная проверка
| Состояние | Что видит пользователь в колонке VERDICT |
|-----------|------------------------------------------|
| Только создан, нет вердикта | Серый бейдж «IN AȘTEPTARE» |
| Вердикт «Apt» | Зелёный бейдж «APT» |
| Вердикт «Apt (perioadă adaptare)» | Бейдж «APT ADAPTARE» |
| Вердикт «Apt condiționat» | Бейдж «APT COND.» |
| Вердикт «Inapt temporar» | Оранжевый бейдж «INAPT TEMP.» |
| Вердикт «Inapt» | Красный бейдж «INAPT» |