# ШАГ 012 — Спринт 4: Доработки после тестирования **Дата:** 2026-03-21 **Контекст:** Мастер-класс по разработке системы тестирования сотрудников клиники. --- ## Запрос (серия правок после тестирования) > 1. «Сгенерировать с AI» не должен спрашивать тему — использовать название теста > 2. «Улучшить» должен показывать сравнение старого и нового с галочками, а не затирать текст > 3. «Проверить тест» → добавить кнопку «Предложить вариант» с полным сравнением всего теста --- ## Доработки ### 1. Кнопка «Сгенерировать с AI» **Было:** при нажатии открывался модал с полем ввода темы. **Стало:** - Кнопка задизаблена, пока не заполнено поле «Название теста» (`shouldUpdate` на поле `title`) - При нажатии сразу берёт название теста как тему и запускает генерацию - Открывается модал с анимацией загрузки → превью вопросов → «Применить» / «Сгенерировать заново» ### 2. Кнопка «Улучшить» в карточке вопроса **Было:** заменяла текст вопроса новой формулировкой без предупреждения. **Стало:** - Открывается модал с двумя колонками: текущая формулировка и предложение AI - Изменения разбиты на позиции: текст вопроса + каждый вариант ответа отдельно - Чекбокс «Применить» у каждой позиции - Кнопка «Применить выбранные» — применяет только отмеченные пункты **Изменения в бэкенде:** - `improve_question(db, question, answers)` — теперь принимает список ответов и возвращает JSON `{question, answers[]}` - `POST /api/llm/improve` — `ImproveRequest` добавлено поле `answers`, `ImproveResponse` теперь `{improved_question, improved_answers[]}` ### 3. Кнопка «Предложить вариант» в модале «Проверить тест» **Новая кнопка** появляется после получения рекомендаций AI. **Поведение:** - При нажатии вызывает новый `POST /api/llm/improve_all` - Модал переключается в режим сравнения: весь тест постранично - Для каждого вопроса: текущий vs AI-предложение + чекбокс - Для каждого варианта ответа: текущий vs AI-предложение + чекбокс - Правильные ответы помечены `(правильный ✓)` - Кнопки: «Применить выбранные» / «← К рекомендациям» / «Закрыть» **Новые файлы/функции бэкенда:** - `improve_all(db, title, questions)` в `services/llm.py` - `POST /api/llm/improve_all` в `api/llm.py` --- ## Изменённые файлы ``` backend/app/services/llm.py ← improve_question принимает answers; новая функция improve_all backend/app/api/llm.py ← обновлён ImproveRequest/ImproveResponse; новый /improve_all frontend/src/api/llm.ts ← обновлена сигнатура improve; новый метод improveAll frontend/src/components/TestForm/ ← все три доработки UI ``` --- ## Следующие шаги - [x] Спринт 1: Инфраструктура + Создание тестов - [x] Спринт 2: Прохождение теста + результат - [x] Спринт 3: Редактирование + версионность - [x] Спринт 4: AI-помощник (DeepSeek) - [ ] Спринт 5: Трекер результатов - [ ] Спринт 6: Авторизация и роли - [ ] Спринт 7: Уведомления в MAX