Files
TestingWebApp/docs/revision_task/sprint-02-testing.md
T
Константин Лебединский a68331c86b docs: статус проекта, инструкция dev, обновление всех .md
- PROJECT_STATUS: что сделано (черновики, версии, разбор, каталог) и планы
- DEV_CONTOUR_USER_GUIDE: сценарии для проверяющих на dev-стенде
- README, ТЗ, card1, журнал, бэклоги, шаги 01–11+README, спринты, TEST_TABLES: ссылки и примечания
- backend/PROGRESS: ссылка на PROJECT_STATUS

Made-with: Cursor
2026-04-24 22:12:06 +05:00

74 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Спринт 2 — тестирование (AI-помощники)
**Состояние продукта:** [../PROJECT_STATUS.md](../PROJECT_STATUS.md) · чек-лист импорта и API — ниже.
**Предпосылка:** спринт 1 (версии) принят.
**Секреты:** для стенда допускается отдельный ключ DeepSeek; в логах/скриншотах **не** светить полный ключ.
**MVP 2026-04 (импорт + LLM, до полного спринта 2):** в `backend` задать `DEEPSEEK_API_KEY` *или* `OPENAI_API_KEY``POST /api/tests/import/document` при загрузке файла возвращает `generation.draft` → в карточке теста, блок «Импорт из файла», кнопка **«Применить сгенерированный черновик»** → затем **«Сохранить черновик»**. Юнит-тесты: `documentGenService.test.js`.
---
## 1. Автоматизировано и self-check (разработка)
_Отмечайте [ ] → [x] по мере выполнения._
### 1.1 Безопасность и API
- [ ] Эндпоинты настроек не возвращают сырой ключ на клиент
- [ ] Ошибка при отсутствии/невалидном ключе — структурированная, с кодом/текстом для UI
- [ ] «Проверить подключение» при валидном ключе — успех; при фейле — сообщение об ошибке сети/401 и т.д.
### 1.2 Моки / контракты (по возможности)
- [ ] Парсинг JSON-ответов LLM: при невалидном JSON — пользователю сообщение, не 500 без текста
- [ ] Unit-тесты маппинга «ответ LLM → черновик теста/вопроса» (на фикстурах)
### 1.3 Смоук перед передачей
- [ ] Сгенерировать тест: только с названием; превью; применить — вопросы в редакторе
- [ ] Проверить тест: модалка с текстом
- [ ] Улучшить вопрос: чекбоксы, применение частично
- [ ] Дистракторы: к существующим ответам добавилось 3 варианта
- [ ] После применения AI-изменений сохранение теста согласовано с правилами **версий** (если были попытки)
---
## 2. Ручная приёмка (я / заказчик)
### 2.1 Настройки
- [ ] Сохранить ключ, обновить страницу — приложение не показывает ключ, но AI-функции работают
- [ ] Очистить/испортить ключ — AI показывает ошибку и **есть** переход/ссылка на настройки
- [ ] «Проверить подключение» отражает реальное состояние (успех/ошибка)
### 2.2 Уровень теста
- [ ] **Сгенерировать тест** недоступен при пустом названии; при заполненном — выдаёт осмысленный черновик, применяется **целиком** по кнопке
- [ ] **Проверить тест** — рекомендации читаемы, модалка закрывается, данные теста не портит без явного применения
- [ ] **Предложить улучшение** — сравнение было/стало, выбор чекбоксами, применяется только отмеченное
### 2.3 Уровень вопроса
- [ ] **Улучшить вопрос** — нет молчаливой перезаписи; подтверждение через чекбоксы/применить
- [ ] **Дистракторы** — три новых **не** заменяют старые ответы
- [ ] **Сгенерировать подсказку** — текст появляется в поле, можно отредактировать и сохранить
### 2.4 Версионирование + AI (регресс)
- [ ] На тесте **без** попыток: массовое применение AI не создаёт лишних версий бессмысленно (ожидание как в спринте 1)
- [ ] На тесте **с** попытками: осмысленные сохранения ведут себя по правилам 4.1 (новая версия при изменении)
### 2.5 Дизайн
- [ ] Кнопки, модалки, превью, состояния загрузки/ошибок **визуально** в одном ряду с остальным модулем (как спринт 1)
### 2.6 Качество UX
- [ ] Долгий ответ LLM: индикатор ожидания, нельзя «задвоить» запросы без контроля
- [ ] Понятные сообщения при сбое сети или API DeepSeek
---
**Итог приёмки спринта 2:** дата __________, комментарий _________________________