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
4.1 KiB
4.1 KiB
Лог сессии работы с 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_labelticket_form/docs/CODE_MERGE_PROJECT_TO_SESSION.js- новый файл для мержа данных проекта
Git коммит
- Commit:
486f3619 - Message: "Добавлен field_label в результат переименования файлов, исправлена загрузка черновиков, обновлен формат пути S3 с project_name"
- Изменено: 212 файлов, +6706 строк, -125 строк
Важные замечания
- Нода editfiletobd1 в n8n должна добавлять
field_labelизuploads_field_labels[i]в каждый элементfilesRows - Нода Edit Fields13 должна использовать
.first()для нод, возвращающих один item - Операция CreateClientProject теперь возвращает
project_name, который используется для формирования пути файлов