docs: mark Sprint 3 complete, add step 010

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Aleksey Razorvin
2026-03-21 14:00:55 +05:00
parent 0977eb0c38
commit d7409c5fa4
2 changed files with 115 additions and 7 deletions
+17 -7
View File
@@ -74,21 +74,31 @@
---
## Спринт 3 — Редактирование теста + версионность
## Спринт 3 — Редактирование теста + версионность
**Результат:** Тест можно редактировать. Если тест уже проходили — создаётся новая версия, старая сохраняется для истории.
**Статус:** Завершён и протестирован вручную в браузере.
### Backend
- [ ] Миграция `003`: добавить поле `parent_id` в таблицу `tests` (ссылка на предыдущую версию)
- [ ] `PUT /api/tests/{id}` — редактировать тест:
- [x] Миграция `003`: добавить поле `parent_id` в таблицу `tests`
- [x] `PUT /api/tests/{id}` — редактировать тест:
- Нет попыток → обновить на месте
- Есть попытки → создать новый тест (`version + 1`, `parent_id = id`), вернуть `{test, is_new_version: true}`
- [ ] `GET /api/tests` — показывать только последние версии (у которых нет «потомка»)
- [x] `GET /api/tests` — показывать только активные версии (`is_active = True`)
- [x] `GET /api/tests/{id}/versions` — цепочка всех версий теста
- [x] `POST /api/tests/{id}/activate` — сделать версию активной (деактивирует остальные в цепочке)
### Frontend
- [ ] Активировать кнопку «Редактировать» на странице `/tests/:id/edit`
- [ ] Форма редактирования теста с предзаполненными данными
- [ ] При сохранении с созданием новой версии — редирект на новый тест + уведомление
- [x] Страница `/tests/:id/edit` разделена на режим просмотра и режим редактирования
- [x] Форма редактирования с предзаполненными данными (общий компонент `TestForm`)
- [x] При сохранении с новой версией — редирект + уведомление «Создана новая версия v2»
- [x] Кнопка «← К просмотру теста» в форме редактирования
- [x] Секция «История версий»: таблица с версиями, статусом, датой, кнопкой «Сделать активной»
- [x] Активная версия — единственная видимая в списке тестов
### Баги, найденные и исправленные при тестировании
- [x] `ForeignKeyViolationError` при сохранении — bulk `DELETE questions` не каскадирует на `answers` → исправлено: сначала удаляем `answers`, потом `questions`
- [x] Обе версии показывались «Активными» при создании до введения логики деактивации → исправлено: кнопка «Сделать активной» в шапке и в строке таблицы
---