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

4.1 KiB
Raw Blame History

Лог сессии работы с 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, который используется для формирования пути файлов