Files
aiform_prod/docs/SESSION_LOG_2025-11-22.md
AI Assistant 0978e485dc feat: Add claim plan confirmation flow via Redis SSE
Problem:
- After wizard form submission, need to wait for claim data from n8n
- Claim data comes via Redis channel claim:plan:{session_token}
- Need to display confirmation form with claim data

Solution:
1. Backend: Added SSE endpoint /api/v1/claim-plan/{session_token}
   - Subscribes to Redis channel claim:plan:{session_token}
   - Streams claim data from n8n to frontend
   - Handles timeouts and errors gracefully

2. Frontend: Added subscription to claim:plan channel
   - StepWizardPlan: After form submission, subscribes to SSE
   - Waits for claim_plan_ready event
   - Shows loading message while waiting
   - On success: saves claimPlanData and shows confirmation step

3. New component: StepClaimConfirmation
   - Displays claim confirmation form in iframe
   - Receives claimPlanData from parent
   - Generates HTML form (placeholder - should call n8n for real HTML)
   - Handles confirmation/cancellation via postMessage

4. ClaimForm: Added conditional step for confirmation
   - Shows StepClaimConfirmation when showClaimConfirmation=true
   - Step appears after StepWizardPlan
   - Only visible when claimPlanData is available

Flow:
1. User fills wizard form → submits
2. Form data sent to n8n via /api/v1/claims/wizard
3. Frontend subscribes to SSE /api/v1/claim-plan/{session_token}
4. n8n processes data → publishes to Redis claim:plan:{session_token}
5. Backend receives → streams to frontend via SSE
6. Frontend receives → shows StepClaimConfirmation
7. User confirms → proceeds to next step

Files:
- backend/app/api/events.py: Added stream_claim_plan endpoint
- frontend/src/components/form/StepWizardPlan.tsx: Added subscribeToClaimPlan
- frontend/src/components/form/StepClaimConfirmation.tsx: New component
- frontend/src/pages/ClaimForm.tsx: Added confirmation step to steps array
2025-11-24 13:36:14 +03:00

61 lines
4.1 KiB
Markdown
Raw Permalink 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.

# Лог сессии работы с ticket_form - 22 ноября 2025
## Основные изменения
### 1. Исправлена загрузка черновиков
- Добавлено расширенное логирование в `checkDrafts` (ClaimForm.tsx)
- Упрощена логика перехода к шагу выбора черновика (заменён двойной `requestAnimationFrame` на `setTimeout(100)`)
- Убрано отображение `claim_id` в заголовке черновика (теперь просто "Черновик")
### 2. Обновлен формат пути файлов в S3
- Изменён формат с `{project_id}_Клиентправ` на `{project_name}_{project_id}`
- `project_name` берётся из Redis (например, "ERV_6381_КлиентПрав")
- Итоговый путь: `/f9825c87-.../crm2/CRM_Active_Files/Documents/Project/ERV_6381_КлиентПрав_398957/{doc_id}__{slug}.{ext}`
- Файл: `ticket_form/docs/CODE_FILES_RENAME_FIXED.js`
### 3. Добавлено использование названия поля из формы визарда
- В `StepWizardPlan.tsx` добавлена отправка `uploads_field_labels[i]` (содержит `block.docLabel`)
- В `CODE_FILES_RENAME_FIXED.js` добавлен `field_label` в результат (`renames` и `documents_meta`)
- Приоритет для slug: `field_label` > `field_name` > `description` > `group_index`
- Теперь вместо `upload-contr` будет использоваться название поля (например, "Оглавление" → `oglavlenie`)
### 4. Обновлена операция CreateClientProject
- Теперь возвращает не только `project_id`, но и `project_name`
- `project_name` сохраняется в Redis сессии
- Файл: `include/Webservices/CreateClientProject.php`
### 5. Исправлена нода Edit Fields13 в n8n
- Добавлен `.first()` для обращения к нодам, возвращающим один item
- Исправлено обращение к Split Out2 (используется `$json.to` вместо `$('Split Out2').item.json.to`)
### 6. Добавлен код для мержа данных проекта в сессию
- Файл: `ticket_form/docs/CODE_MERGE_PROJECT_TO_SESSION.js`
- Безопасная проверка существования ноды `CreateClientProject`
- Добавлен `project_name` в Redis сессию
## Изменённые файлы
### Frontend
- `ticket_form/frontend/src/pages/ClaimForm.tsx` - исправлена загрузка черновиков
- `ticket_form/frontend/src/components/form/StepDraftSelection.tsx` - убран claim_id из заголовка
- `ticket_form/frontend/src/components/form/StepWizardPlan.tsx` - добавлена отправка `uploads_field_labels`
### Backend
- `include/Webservices/CreateClientProject.php` - добавлен возврат `project_name`
### Документация
- `ticket_form/docs/CODE_FILES_RENAME_FIXED.js` - обновлён формат пути, добавлен `field_label`
- `ticket_form/docs/CODE_MERGE_PROJECT_TO_SESSION.js` - новый файл для мержа данных проекта
## Git коммит
- Commit: `486f3619`
- Message: "Добавлен field_label в результат переименования файлов, исправлена загрузка черновиков, обновлен формат пути S3 с project_name"
- Изменено: 212 файлов, +6706 строк, -125 строк
## Важные замечания
1. **Нода editfiletobd1 в n8n** должна добавлять `field_label` из `uploads_field_labels[i]` в каждый элемент `filesRows`
2. **Нода Edit Fields13** должна использовать `.first()` для нод, возвращающих один item
3. **Операция CreateClientProject** теперь возвращает `project_name`, который используется для формирования пути файлов