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
75 lines
3.8 KiB
Markdown
75 lines
3.8 KiB
Markdown
# Лог сессии разработки - 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` передается в `onNext` callback
|
||
- `checkDrafts` вызывается с правильным `unified_id`
|
||
- Но API возвращает 0 черновиков
|
||
|
||
### Backend
|
||
- Endpoint `/api/v1/claims/drafts/list` существует
|
||
- Запрос к БД должен работать (проверено через psql)
|
||
- Но логи не появляются, что странно
|
||
|
||
## Что нужно проверить дальше
|
||
|
||
1. **Почему логи не появляются?**
|
||
- Проверить настройки логирования в FastAPI
|
||
- Возможно, нужно использовать `print()` вместо `logger.info()`
|
||
|
||
2. **Почему запрос возвращает 0 результатов?**
|
||
- Проверить, что `asyncpg` правильно выполняет запрос
|
||
- Возможно, проблема с параметрами запроса
|
||
- Проверить, что `unified_id` правильно передается в SQL
|
||
|
||
3. **Проверить в браузере:**
|
||
- Открыть консоль разработчика
|
||
- Проверить логи `🔥 onNext вызван с unified_id:`
|
||
- Проверить логи `🔍 Запрос черновиков:`
|
||
- Проверить ответ API `🔍 Ответ API черновиков:`
|
||
|
||
## Файлы изменены
|
||
|
||
1. `frontend/src/pages/ClaimForm.tsx` - добавлено логирование
|
||
2. `backend/app/api/claims.py` - добавлено логирование и тестовые запросы
|
||
|
||
## Следующие шаги
|
||
|
||
1. Проверить логи в браузере после перезагрузки
|
||
2. Проверить, что API действительно вызывается
|
||
3. Если API вызывается, но возвращает 0 - проверить SQL запрос в backend
|
||
4. Если SQL работает, но asyncpg не возвращает данные - проверить формат параметров
|
||
|
||
|
||
|