You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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.