# 📝 Лог сессии: Новая архитектура загрузки документов **Дата:** 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 события ```javascript // Список документов готов { 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 события ```javascript // Список документов готов { 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` — запрос на генерацию списка документов