4.5 KiB
Спринт 2 — Редактор тестов: AI-помощники (desktop web)
Формат: отдельное веб desktop-приложение (этап 1, фича §4.2).
Граница спринта: начинается после приёмки спринта 1; заканчивается готовностью всех функций AI-помощника из ТЗ (настройки ключа, проверка подключения, сценарии уровня теста и уровня вопроса) на базе DeepSeek и сохранения идентичности дизайна с остальным приложением.
Предпосылка: версионирование (спринт 1) работает; сгенерированные/изменённые черновики сохраняются в модель текущей редактируемой версии согласно правилам 4.1.
Стек (целевой в ТЗ): Python, FastAPI — в репозитории TestingWebApp фактически Node.js + Express, LLM через HTTP (OpenAI-совместимый API, в т.ч. DeepSeek); ключ в окружении или (в целевом виде спринта) в БД, не на клиенте. Сводка MVP: ../PROJECT_STATUS.md.
Цель спринта
Реализовать §4.2 ТЗ: интеграция DeepSeek, страница настроек, все табличные функции уровня теста и вопроса, обработка отсутствия ключа, UI с превью и подтверждением (без «тихой» перезаписи там, где ТЗ требует сравнения с чекбоксами).
Функции (контрольный список из ТЗ)
Интеграция и настройки
- Ключ DeepSeek на
/settings, хранение в БД, не отдаётся на фронт - «Проверить подключение» — тестовый запрос
- Все AI-действия при отсутствии ключа — понятная ошибка + ссылка на настройки
Уровень теста
| Функция | Критерий |
|---|---|
| Сгенерировать тест | Только при заполненном названии; превью; применение целиком |
| Проверить тест | Модалка с рекомендациями |
| Предложить улучшение всего теста | Постатейно было → стало, чекбоксы, применение выбранного |
Уровень вопроса
| Функция | Критерий |
|---|---|
| Улучшить вопрос | Модалка, было/стало по частям, чекбоксы, без прямой замены без подтверждения |
| Дистракторы | +3 неправдоподобных варианта добавляются, не заменяют |
| Сгенерировать подсказку | Текст в поле подсказки; автор правит/удаляет (связь с §4.4 в следующих спринтах) |
Технические подзадачи
| # | Задача |
|---|---|
| 1 | Модель настроек (ключ), API save/test, маскирование в ответах |
| 2 | Промпты и контракты JSON для каждой функции; валидация ответа LLM |
| 3 | Эндпоинты/сервисы: 6 сценариев + единая обёртка ошибок/квот |
| 4 | UI: кнопки в редакторе, модалки, превью «сгенерировать тест», дифы с чекбоксами |
| 5 | Соблюдение правил 4.1 при сохранении применённых AI-изменений |
| 6 | Логи без утечки ключа; rate-limit/таймауты по best effort |
Вне спринта 2
- Медиа (§4.3), полноценное поведение подсказок в прохождении (§4.4 + §4.5) — отдельные спринты, если не входят в минимум для кнопки «подсказка» в редакторе
- Дашборды (этап 2 ТЗ), HR-интеграция, MAX
Документ тестирования
Чек-лист: sprint-02-testing.md.