docs: document Sprint 2 UX improvements
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -63,6 +63,12 @@
|
||||
- Разбор ошибок: вопрос, ответ сотрудника, правильный ответ
|
||||
- [x] Фронт: кнопка «Пройти тест» прямо в строке таблицы списка тестов
|
||||
|
||||
### Доработки после тестирования
|
||||
- [x] Страница теста разделена на два вида:
|
||||
- `/tests/:id` — вид сотрудника: вопросы и варианты ответов без отметок правильных
|
||||
- `/tests/:id/edit` — вид автора: правильные ответы отмечены, жёлтый баннер, кнопка «Редактировать» (задизаблена до Спринта 4)
|
||||
- [x] Список тестов: три кнопки действий заменены на выпадающее меню «⋯» — колонка с названием стала полноширинной
|
||||
|
||||
### Баги, найденные и исправленные при тестировании
|
||||
- [x] «Не удалось загрузить тест» × 2 при нажатии «Пройти тест» — миграция `002_attempts` не применилась, т.к. `--reload` перезапускает только код приложения, но не `entrypoint.sh` → исправлено: `docker compose restart backend`
|
||||
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user