Files
aiform_dev/SESSION_LOG_2025-11-26_NEW_FLOW.md
AI Assistant 02689e65db fix: Исправление загрузки документов и SQL запросов
- Исправлена потеря документов при обновлении черновика (SQL объединяет вместо перезаписи)
- Исправлено определение типа документа (приоритет field_label над field_name)
- Исправлены дубликаты в documents_meta и documents_uploaded
- Добавлена передача group_index с фронтенда для правильного field_name
- Исправлены все документы в таблице clpr_claim_documents с правильными field_name
- Обновлены SQL запросы: claimsave и claimsave_final для нового флоу
- Добавлена поддержка multi-file upload для одного документа
- Исправлены дубликаты в списке загруженных документов на фронтенде

Файлы:
- SQL: SQL_CLAIMSAVE_FIXED_NEW_FLOW.sql, SQL_CLAIMSAVE_FINAL_FIXED_NEW_FLOW_WITH_UPLOADED.sql
- n8n: N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js (поддержка group_index)
- Backend: documents.py (передача group_index в n8n)
- Frontend: StepWizardPlan.tsx (передача group_index, исправление дубликатов)
- Скрипты: fix_claim_documents_field_names.py, fix_documents_meta_duplicates.py

Результат: документы больше не теряются, имеют правильные типы и field_name
2025-11-26 19:54:51 +03:00

12 KiB
Raw Blame History

📝 Лог сессии: Новая архитектура загрузки документов

Дата: 2025-11-26
Время: ~13:00 MSK


🎯 Цель сессии

Концептуальная переработка флоу подачи заявки:

  • Проблема: Визард генерируется слишком долго (2 минуты), анкета слишком длинная
  • Решение: Сразу запрашиваем документы, параллельно генерируем визард в бэке

Что сделано

1. Документация архитектуры

  • Файл: docs/NEW_FLOW_ARCHITECTURE.md
  • Описан новый флоу: Description → Documents → Waiting → Claim Review → SMS
  • Определены статусы черновиков: draft_new, draft_docs_progress, draft_docs_complete, draft_claim_ready, awaiting_sms
  • Структура payload черновика с новыми полями

2. Frontend компоненты

StepDocumentsNew.tsx (НОВЫЙ)

  • Поэкранная загрузка документов (один документ на экран)
  • Критичные документы помечены предупреждением
  • Возможность пропустить любой документ
  • Прогресс-бар загрузки
  • Отображение уже загруженных документов

StepWaitingClaim.tsx (НОВЫЙ)

  • Экран ожидания формирования заявления
  • SSE подписка на события: document_ocr_completed, claim_ready
  • Шаги обработки: OCR → Анализ → Формирование → Готово
  • Таймер ожидания
  • Таймаут 5 минут с обработкой ошибок

StepDraftSelection.tsx (ОБНОВЛЁН)

  • Поддержка новых статусов черновиков
  • Визуальное отображение разных статусов (цвета, иконки, описания)
  • Прогресс документов (X из Y загружено)
  • Legacy черновики помечаются как "устаревший формат"
  • Разные действия для разных статусов

3. Backend API

documents.py (НОВЫЙ)

  • POST /api/v1/documents/upload — загрузка одного документа
  • GET /api/v1/documents/status/{claim_id} — статус обработки документов
  • POST /api/v1/documents/generate-list — запрос на генерацию списка документов
  • Интеграция с n8n webhook
  • Публикация событий в Redis

main.py (ОБНОВЛЁН)

  • Добавлен роутер documents

📁 Изменённые файлы

ticket_form/
├── docs/
│   └── NEW_FLOW_ARCHITECTURE.md          # НОВЫЙ
├── frontend/src/components/form/
│   ├── StepDocumentsNew.tsx              # НОВЫЙ
│   ├── StepWaitingClaim.tsx              # НОВЫЙ
│   └── StepDraftSelection.tsx            # ОБНОВЛЁН
├── backend/app/
│   ├── api/
│   │   └── documents.py                  # НОВЫЙ
│   └── main.py                           # ОБНОВЛЁН
└── SESSION_LOG_2025-11-26_NEW_FLOW.md    # НОВЫЙ

Что осталось сделать

Frontend

  • Обновить ClaimForm.tsx — интегрировать новые компоненты в флоу
  • Обновить StepDescription.tsx — после описания переходить к документам (не к визарду)

Backend

  • Эндпоинт получения списка документов из черновика
  • SSE события для прогресса OCR

n8n

  • Воркфлоу: генерация списка документов (быстрый AI запрос)
  • Воркфлоу: OCR документа → заполнение полей визарда
  • Воркфлоу: формирование заявления после всех документов
  • Webhook: /webhook/document-upload

Тестирование

  • Полный цикл с реальными данными
  • Обработка ошибок
  • Legacy черновики

🔧 Технические детали

Новые SSE события

// Список документов готов
{ event_type: "documents_list_ready", documents_required: [...] }

// Документ загружен (начало OCR)
{ event_type: "document_uploaded", document_type: "contract", status: "processing" }

// OCR завершён
{ event_type: "document_ocr_completed", document_type: "contract", ocr_data: {...} }

// Заявление готово
{ event_type: "claim_ready", claim_data: {...} }

Статусы черновиков

Статус Описание
draft_new Только описание проблемы
draft_docs_progress Часть документов загружена
draft_docs_complete Все документы, ждём заявление
draft_claim_ready Заявление готово
awaiting_sms Ждёт SMS подтверждения

Legacy черновики

  • Определяются по отсутствию documents_required в payload
  • Показываются с пометкой "устаревший формат"
  • Кнопка "Начать заново" копирует description в новый черновик

📌 Примечания

  1. Ветка backup: backup-wizard-ui-2025-11-26 содержит состояние до изменений
  2. n8n: Webhook /webhook/document-upload нужно создать
  3. Redis каналы:
    • ocr_events:{session_id} — события для конкретного пользователя
    • ticket_form:documents_list — запрос на генерацию списка документов

Дата: 2025-11-26
Время: ~13:00 MSK


🎯 Цель сессии

Концептуальная переработка флоу подачи заявки:

  • Проблема: Визард генерируется слишком долго (2 минуты), анкета слишком длинная
  • Решение: Сразу запрашиваем документы, параллельно генерируем визард в бэке

Что сделано

1. Документация архитектуры

  • Файл: docs/NEW_FLOW_ARCHITECTURE.md
  • Описан новый флоу: Description → Documents → Waiting → Claim Review → SMS
  • Определены статусы черновиков: draft_new, draft_docs_progress, draft_docs_complete, draft_claim_ready, awaiting_sms
  • Структура payload черновика с новыми полями

2. Frontend компоненты

StepDocumentsNew.tsx (НОВЫЙ)

  • Поэкранная загрузка документов (один документ на экран)
  • Критичные документы помечены предупреждением
  • Возможность пропустить любой документ
  • Прогресс-бар загрузки
  • Отображение уже загруженных документов

StepWaitingClaim.tsx (НОВЫЙ)

  • Экран ожидания формирования заявления
  • SSE подписка на события: document_ocr_completed, claim_ready
  • Шаги обработки: OCR → Анализ → Формирование → Готово
  • Таймер ожидания
  • Таймаут 5 минут с обработкой ошибок

StepDraftSelection.tsx (ОБНОВЛЁН)

  • Поддержка новых статусов черновиков
  • Визуальное отображение разных статусов (цвета, иконки, описания)
  • Прогресс документов (X из Y загружено)
  • Legacy черновики помечаются как "устаревший формат"
  • Разные действия для разных статусов

3. Backend API

documents.py (НОВЫЙ)

  • POST /api/v1/documents/upload — загрузка одного документа
  • GET /api/v1/documents/status/{claim_id} — статус обработки документов
  • POST /api/v1/documents/generate-list — запрос на генерацию списка документов
  • Интеграция с n8n webhook
  • Публикация событий в Redis

main.py (ОБНОВЛЁН)

  • Добавлен роутер documents

📁 Изменённые файлы

ticket_form/
├── docs/
│   └── NEW_FLOW_ARCHITECTURE.md          # НОВЫЙ
├── frontend/src/components/form/
│   ├── StepDocumentsNew.tsx              # НОВЫЙ
│   ├── StepWaitingClaim.tsx              # НОВЫЙ
│   └── StepDraftSelection.tsx            # ОБНОВЛЁН
├── backend/app/
│   ├── api/
│   │   └── documents.py                  # НОВЫЙ
│   └── main.py                           # ОБНОВЛЁН
└── SESSION_LOG_2025-11-26_NEW_FLOW.md    # НОВЫЙ

Что осталось сделать

Frontend

  • Обновить ClaimForm.tsx — интегрировать новые компоненты в флоу
  • Обновить StepDescription.tsx — после описания переходить к документам (не к визарду)

Backend

  • Эндпоинт получения списка документов из черновика
  • SSE события для прогресса OCR

n8n

  • Воркфлоу: генерация списка документов (быстрый AI запрос)
  • Воркфлоу: OCR документа → заполнение полей визарда
  • Воркфлоу: формирование заявления после всех документов
  • Webhook: /webhook/document-upload

Тестирование

  • Полный цикл с реальными данными
  • Обработка ошибок
  • Legacy черновики

🔧 Технические детали

Новые SSE события

// Список документов готов
{ event_type: "documents_list_ready", documents_required: [...] }

// Документ загружен (начало OCR)
{ event_type: "document_uploaded", document_type: "contract", status: "processing" }

// OCR завершён
{ event_type: "document_ocr_completed", document_type: "contract", ocr_data: {...} }

// Заявление готово
{ event_type: "claim_ready", claim_data: {...} }

Статусы черновиков

Статус Описание
draft_new Только описание проблемы
draft_docs_progress Часть документов загружена
draft_docs_complete Все документы, ждём заявление
draft_claim_ready Заявление готово
awaiting_sms Ждёт SMS подтверждения

Legacy черновики

  • Определяются по отсутствию documents_required в payload
  • Показываются с пометкой "устаревший формат"
  • Кнопка "Начать заново" копирует description в новый черновик

📌 Примечания

  1. Ветка backup: backup-wizard-ui-2025-11-26 содержит состояние до изменений
  2. n8n: Webhook /webhook/document-upload нужно создать
  3. Redis каналы:
    • ocr_events:{session_id} — события для конкретного пользователя
    • ticket_form:documents_list — запрос на генерацию списка документов