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
3.8 KiB
3.8 KiB
Лог сессии разработки - 19 ноября 2025
Проблема
После верификации телефона не отображается список черновиков, хотя в базе данных есть заявки с unified_id = 'usr_90599ff2-ac79-4236-b950-0df85395096c'.
Что было сделано
1. Добавлено логирование в frontend
- В
ClaimForm.tsxдобавлены логи для отслеживания:- Вызов
onNextсunified_id - Проверка условий для показа черновиков
- Запрос к API
/api/v1/claims/drafts/list - Ответ от API
- Вызов
2. Добавлено логирование в backend
- В
claims.pyдобавлены логи для отладки запроса черновиков:- Тестовый COUNT запрос для проверки наличия данных в БД
- Количество найденных строк
- Детали первой строки
3. Проверка данных в БД
- Проверено напрямую через psql: есть 17 заявок для
unified_id = 'usr_90599ff2-ac79-4236-b950-0df85395096c' - Из них 3 со статусом
draft - Все заявки с каналом
telegram(неweb_form)
4. Проблема
- API
/api/v1/claims/drafts/list?unified_id=...возвращает{"success":true,"count":0,"drafts":[]} - Логи в backend не появляются (logger.info не выводится в консоль)
- SQL запрос напрямую в psql работает и возвращает данные
Текущее состояние
Frontend
unified_idприходит от n8n и отображается в консоли браузераunified_idпередается вonNextcallbackcheckDraftsвызывается с правильнымunified_id- Но API возвращает 0 черновиков
Backend
- Endpoint
/api/v1/claims/drafts/listсуществует - Запрос к БД должен работать (проверено через psql)
- Но логи не появляются, что странно
Что нужно проверить дальше
-
Почему логи не появляются?
- Проверить настройки логирования в FastAPI
- Возможно, нужно использовать
print()вместоlogger.info()
-
Почему запрос возвращает 0 результатов?
- Проверить, что
asyncpgправильно выполняет запрос - Возможно, проблема с параметрами запроса
- Проверить, что
unified_idправильно передается в SQL
- Проверить, что
-
Проверить в браузере:
- Открыть консоль разработчика
- Проверить логи
🔥 onNext вызван с unified_id: - Проверить логи
🔍 Запрос черновиков: - Проверить ответ API
🔍 Ответ API черновиков:
Файлы изменены
frontend/src/pages/ClaimForm.tsx- добавлено логированиеbackend/app/api/claims.py- добавлено логирование и тестовые запросы
Следующие шаги
- Проверить логи в браузере после перезагрузки
- Проверить, что API действительно вызывается
- Если API вызывается, но возвращает 0 - проверить SQL запрос в backend
- Если SQL работает, но asyncpg не возвращает данные - проверить формат параметров