2 changed files with 79 additions and 0 deletions
@ -0,0 +1,73 @@
|
||||
# ШАГ 009 — Спринт 2: Доработки UX после тестирования |
||||
|
||||
**Дата:** 2026-03-21 |
||||
**Контекст:** Мастер-класс по разработке системы тестирования сотрудников клиники. |
||||
|
||||
--- |
||||
|
||||
## Запросы |
||||
|
||||
> 1. На странице теста видны правильные ответы — зачем тогда проходить тест? |
||||
> 2. На главной колонка с названием теста стала слишком узкой из-за трёх кнопок действий. |
||||
|
||||
--- |
||||
|
||||
## Изменения |
||||
|
||||
### 1. Разделение страницы теста на два вида |
||||
|
||||
**Проблема:** `/tests/:id` показывала зелёные галочки у правильных ответов. Пользователь мог подсмотреть ответы до прохождения теста. |
||||
|
||||
**Решение:** два отдельных маршрута с разным содержимым. |
||||
|
||||
| Маршрут | Для кого | Что показывает | |
||||
|---------|----------|----------------| |
||||
| `/tests/:id` | Сотрудник | Вопросы и варианты ответов без отметок | |
||||
| `/tests/:id/edit` | Автор | Все ответы с отметками ✓/✗ + жёлтый баннер «Вид автора» | |
||||
|
||||
Кнопка «Редактировать» на странице автора пока задизаблена — активируется в Спринте 4 вместе с авторизацией. |
||||
|
||||
**Затронутые файлы:** |
||||
``` |
||||
frontend/src/pages/TestDetail/index.tsx ← убраны CheckCircleTwoTone / CloseCircleTwoTone |
||||
frontend/src/pages/TestEdit/index.tsx ← новый файл, бывший TestDetail + баннер |
||||
frontend/src/App.tsx ← добавлен маршрут /tests/:id/edit |
||||
``` |
||||
|
||||
--- |
||||
|
||||
### 2. Выпадающее меню «⋯» в списке тестов |
||||
|
||||
**Проблема:** Три кнопки («Открыть», «Изменить», «Пройти тест») в одной ячейке сжимали колонку с названием теста. |
||||
|
||||
**Решение:** Все три действия убраны в `Dropdown` по кнопке `MoreOutlined` (⋯). Колонка действий сужена до 60px, колонка с названием занимает всю оставшуюся ширину. |
||||
|
||||
``` |
||||
frontend/src/pages/TestList/index.tsx ← Space + 3 Button → Dropdown с menu.items |
||||
``` |
||||
|
||||
**Структура меню:** |
||||
``` |
||||
Открыть |
||||
Изменить |
||||
───────── |
||||
Пройти тест |
||||
``` |
||||
|
||||
--- |
||||
|
||||
## Архитектурное решение для джуниора |
||||
|
||||
> Разделение «вид сотрудника» / «вид автора» сделано через **два отдельных React-компонента** на разных маршрутах, а не через условный рендеринг внутри одного компонента. |
||||
> |
||||
> Почему: в Спринте 4 эти маршруты будут защищены разными ролями (`ProtectedRoute`). Если бы логика была в одном компоненте, пришлось бы прятать данные на фронте — это ненадёжно. Два маршрута = два разных запроса = чистое разграничение доступа. |
||||
|
||||
--- |
||||
|
||||
## Следующие шаги |
||||
|
||||
- [x] Спринт 1: Инфраструктура + Создание тестов |
||||
- [x] Спринт 2: Прохождение теста + результат |
||||
- [ ] Спринт 3: Трекер результатов |
||||
- [ ] Спринт 4: Авторизация и роли |
||||
- [ ] Спринт 5: Уведомления в MAX |
||||
Loading…
Reference in new issue