docs: статус проекта, инструкция dev, обновление всех .md
- PROJECT_STATUS: что сделано (черновики, версии, разбор, каталог) и планы - DEV_CONTOUR_USER_GUIDE: сценарии для проверяющих на dev-стенде - README, ТЗ, card1, журнал, бэклоги, шаги 01–11+README, спринты, TEST_TABLES: ссылки и примечания - backend/PROGRESS: ссылка на PROJECT_STATUS Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# Спринт 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](../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`.
|
||||
Reference in New Issue
Block a user