Files
crm.clientright.ru/ticket_form/SESSION_LOG_2025-11-19.md

202 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📋 Лог сессии 19.11.2025
## Основные задачи
1. ✅ Исправлен конфликт имён переменных в `loadDraft` (claimId → finalClaimId)
2. ✅ Убран `claim_id` из ранних этапов формы - используется только `session_id`
3. ✅ Настроен узел `claimsave` для сохранения первичного черновика
4. ✅ Исправлены ошибки в n8n Code узлах
---
## 1. Исправление ошибки загрузки черновика
**Проблема:** `ReferenceError: Cannot access 'claimId2' before initialization`
**Причина:** Конфликт имён - параметр функции `claimId` и локальная переменная `const claimId`
**Решение:**
- Переименована локальная переменная в `finalClaimId`
- Обновлены все использования переменной
**Файлы:**
- `ticket_form/frontend/src/pages/ClaimForm.tsx`
---
## 2. Убран `claim_id` из ранних этапов
**Решение:** Использовать только `session_id` на этапах до генерации `wizard_plan`
### Изменения в фронтенде:
#### `StepDescription.tsx`:
- ❌ Убрана проверка `if (!formData.claim_id)`
- ❌ Убран `claim_id` из запроса к `/api/v1/claims/description`
- ❌ Убран `claim_id` из mock данных
#### `Step1Phone.tsx`:
- ❌ Убран `claim_id` из сохранения данных после верификации телефона
- ✅ Сохраняется только `unified_id`, `contact_id`, `phone`
#### `StepWizardPlan.tsx`:
- ✅ Заменен `claim_id` на `session_id` для SSE подключения (`/events/${sessionId}`)
- ❌ Убрана проверка `claim_id` перед рендером
- ❌ Убран `claim_id` из отправки данных в n8n
### Изменения в backend:
#### `claims.py`:
-`claim_id` уже опциональный в модели `TicketFormDescriptionRequest`
- ✅ Обновлено логирование для работы с опциональным `claim_id`
**Файлы:**
- `ticket_form/frontend/src/components/form/StepDescription.tsx`
- `ticket_form/frontend/src/components/form/Step1Phone.tsx`
- `ticket_form/frontend/src/components/form/StepWizardPlan.tsx`
- `ticket_form/backend/app/api/claims.py`
---
## 3. Настройка узла `claimsave` для первичного черновика
**Задача:** Сохранить первичный черновик сразу после генерации `wizard_plan`
**Решение:**
- Создан SQL запрос для сохранения первичного черновика
- Используется `session_token` для связи (вместо `claim_id`)
- Сохраняются данные из AI Agent1 и AI Agent13
**Что сохраняется:**
-`wizard_plan` - план вопросов от AI Agent12
-`problem_description` - описание проблемы
-`answers_prefill` - предзаполненные ответы
-`coverage_report` - отчёт о покрытии
-`ai_agent1_facts` - факты из AI Agent1 (facts_short, facts_full, problem)
-`ai_agent13_rag` - RAG ответ от AI Agent13
-`session_token` - для связи
-`unified_id` - если есть (передается с фронта)
- ⚠️ `claim_id` - пока NULL, будет сгенерирован позже
**Документация:**
- `ticket_form/docs/CLAIMSAVE_PRIMARY_DRAFT_FIX.md` - полная инструкция
- `ticket_form/docs/SQL_CLAIMSAVE_PRIMARY_DRAFT.sql` - готовый SQL запрос
---
## 4. Исправления n8n Code узлов
### Узел `Code4` (подготовка данных для Redis)
**Проблема:** Использовался `claim_id` вместо `session_token` для Redis ключа
**Исправление:**
```javascript
// Было:
const sessionToken = $('Redis Trigger').first().json.message.claim_id
// Стало:
const sessionToken = $('Edit Fields11').first().json.session_token
|| $('Redis Trigger').first().json.message.session_id
|| null;
const redisKey = `ocr_events:${sessionToken || 'temp-' + Date.now()}`;
```
**Файл:** `ticket_form/docs/CODE4_FIXED.js`
### Узел создания контакта (CreateWebContact)
**Проблема:**
- Использовалась неопределённая переменная `session` в `redis_key`
- Генерировался `claim_id`, который не нужен на этих этапах
- Не было `unified_id` из ноды `user_get`
**Исправление:**
- Убрана генерация `claim_id`
- Добавлен `unified_id` из ноды `user_get`
- Убраны `voucher` и `event_type` из `sessionData`
- Исправлен `redis_key` на использование `session_id`
**Файл:** `ticket_form/docs/CODE_CREATE_WEB_CONTACT_FINAL.js`
**Что теперь в `redis_value`:**
```json
{
"unified_id": "usr_90599ff2-ac79-4236-b950-0df85395096c",
"contact_id": "396625",
"phone": "79262306381",
"is_new_contact": false,
"status": "draft",
"current_step": 1,
"created_at": "2025-11-19T20:30:00.000Z",
"updated_at": "2025-11-19T20:30:00.000Z",
"documents": {},
"email": null,
"bank_name": null
}
```
---
## 5. Анализ workflow `ticket_form:description`
**Workflow ID:** `b4K4u851b4JFivyD`
**Структура:**
- 35 узлов, 31 соединение
- Заканчивается узлом `push_wizard1` - пушит wizard plan в Redis
**Основной поток:**
1. Redis Trigger → получает событие из `ticket_form:description`
2. get_claime_data1 → получает данные из Redis
3. AI Agent1 → извлекает факты (полный и короткий)
4. AI Agent13 → генерирует RAG ответ
5. AI Agent12 → генерирует wizard_plan
6. Code4 → форматирует для Redis
7. **claimsave_primary** → сохраняет первичный черновик (нужно добавить)
8. push_wizard1 → пушит wizard_plan в Redis для SSE
**Что публикуется в `ticket_form:description`:**
```json
{
"type": "ticket_form_description",
"session_id": "sess-abc-123...",
"claim_id": null, // опционально
"phone": "79262306381",
"email": "user@example.com",
"description": "Текст описания проблемы",
"source": "ticket_form",
"timestamp": "2025-11-19T20:30:00.000Z"
}
```
---
## Коммиты
1. **de011efb** - `fix: исправлен конфликт имён переменных в loadDraft (claimId -> finalClaimId)`
2. **d2f37faa** - `fix: убран claim_id, используется только session_id на ранних этапах`
---
## Следующие шаги
1. ✅ Добавить узел `claimsave_primary` в workflow после `Code4`
2. ✅ Исправить узел `Code4` в n8n (использовать `session_token`)
3. ✅ Исправить узел создания контакта в n8n (убрать `claim_id`, добавить `unified_id`)
4. ⏳ Протестировать создание нового обращения
5. ⏳ Проверить сохранение первичного черновика
---
## Файлы документации
- `ticket_form/docs/CLAIMSAVE_PRIMARY_DRAFT_FIX.md` - инструкция по настройке `claimsave`
- `ticket_form/docs/SQL_CLAIMSAVE_PRIMARY_DRAFT.sql` - SQL запрос для первичного черновика
- `ticket_form/docs/CODE4_FIXED.js` - исправленный код узла Code4
- `ticket_form/docs/CODE_CREATE_WEB_CONTACT_FINAL.js` - исправленный код создания контакта