feat(ticket_form): add wizard plan step and dev cache
This commit is contained in:
@@ -188,3 +188,38 @@ Unit-тестов почти нет, поэтому проверяем сцен
|
||||
|
||||
Upd 14.11.2025, автор: GPT-5.1 Codex.
|
||||
|
||||
---
|
||||
|
||||
## 11. Ticket Form — доработки 15.11.2025
|
||||
|
||||
### 11.1. SSE + Wizard Plan
|
||||
- Новая стадия формы `StepWizardPlan` между описанием и выбором услуги:
|
||||
- подключается к `/events/{claim_id}`, выбирает payload даже если `wizard_plan` лежит в `data`, `redis_value` или `event`.
|
||||
- отображает иллюстрацию/спиннер, пишет события в DebugPanel.
|
||||
- при Success сохраняет `wizardPlan`, `answers_prefill`, `coverage_report`, `wizardPrefillMap` в состоянии.
|
||||
- На случай отладки добавлен чекбокс в `StepDescription`: «Использовать сохранённые рекомендации (DEV)».
|
||||
- По умолчанию включен; берёт мок `wizardPlanSample` (лежит в `frontend/src/mocks`), пропускает вызов AI и блокирует textarea.
|
||||
- При снятом чекбоксе описание снова обязательное и реально отправляется на `/api/v1/claims/description`.
|
||||
|
||||
### 11.2. Динамическая анкета
|
||||
- `StepWizardPlan` строит форму исключительно из `wizard_plan.questions`: текст, textarea, радио.
|
||||
- Въелся прогресс-бар с подсчётом обязательных полей (done / total).
|
||||
- `wizardPlanStatus` принимает значения `pending | ready | answered`, чтобы следующие шаги понимали, прошёл ли пользователь анкету.
|
||||
|
||||
### 11.3. Документы прямо в анкете
|
||||
- Под вопросами «Есть ли документы?» и «Есть ли переписка?» появляются мультилоадеры:
|
||||
- группы файлов с описанием, категорией (select), списком допустимых форматов, лимитом 20 МБ.
|
||||
- для каждого документа из `plan.documents` можно создать несколько блоков; храним их в `wizardUploads.documents`.
|
||||
- кастомная секция «Дополнительные документы» позволяет добавить произвольные блоки (категория + описание + файлы), лежат в `wizardUploads.custom`.
|
||||
- Валидация: если ответ «Да», но файлы не добавлены или нет описаний — показываем ошибку, не пускаем дальше.
|
||||
- До отправки (переход на следующий шаг) сохраняем `wizardUploads` для дальнейшего api/n8n.
|
||||
|
||||
### 11.4. Прочее
|
||||
- `ClaimForm` логи перенесены в `useEffect`, чтобы StrictMode не писал дубль.
|
||||
- Кнопка «Обновить рекомендации» сбрасывает `wizardPlan` и пересоздаёт SSE.
|
||||
- Docker: каждый раз после правок фронт пересобирали `docker compose build ticket_form_frontend && docker compose up -d ticket_form_frontend`.
|
||||
|
||||
### TODO (перенесено в бэклог)
|
||||
- На backend обезопасить хранение `wizard_plan` в Redis (по ключу `wizard_plan:{claim_id}`) и отдавать кеш при DEV-галке.
|
||||
- Передать `wizardUploads` в следующий шаг & далее в n8n, чтобы фактически загрузить файлы/метаданные.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user