Files
aiform_dev/SESSION_LOG_2025-11-25.md

136 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

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
# Лог сессии 25.11.2025
## Основные задачи
### 1. Передача unified_id и contact_id в описание проблемы
**Файлы:**
- `backend/app/api/models.py` — добавлены поля `unified_id` и `contact_id` в `TicketFormDescriptionRequest`
- `backend/app/api/claims.py` — добавлена передача `unified_id` и `contact_id` в Redis событие
- `frontend/src/components/form/StepDescription.tsx` — добавлена передача `unified_id` и `contact_id` при отправке описания
**Результат:** При отправке описания проблемы теперь передаются `unified_id` и `contact_id` пользователя.
---
### 2. Структура таблиц CRM MySQL для контактов
**Основные таблицы:**
- `vtiger_contactdetails` — основные данные (firstname, lastname, email, mobile, phone)
- `vtiger_contactscf` — кастомные поля:
- `cf_1157` — Отчество (middle_name)
- `cf_1263` — Место рождения (birthplace)
- `cf_1257` — ИНН (inn)
- `cf_1849` — Реквизиты (requisites)
- `cf_1580` — Код (code)
- `vtiger_contactsubdetails` — дополнительные данные (birthday, homephone)
- `vtiger_contactaddress` — адреса (mailingstreet, mailingcity, и т.д.)
**Создан файл:** `docs/SQL_SELECT_CONTACT_WITH_CUSTOM_FIELDS.sql` — правильный SQL запрос для получения всех данных контакта
---
### 3. Исправление Code Node: Мерж данных проекта в сессию
**Проблема:** Данные из `body.other` (sessionData) не сохранялись в Redis — терялись все данные пользователя.
**Причина:** К моменту выполнения Code Node структура данных менялась (`body_keys: ["success", "result"]`), и `body.other` был недоступен.
**Решение:** Добавлен fallback на получение `other` напрямую из Webhook:
```javascript
// ✅ Пробуем также достать other из Webhook напрямую
if (!rawOther) {
try {
const webhookJson = $('Webhook').first()?.json;
if (webhookJson?.body?.other) {
rawOther = webhookJson.body.other;
}
} catch (e) {}
}
```
**Файл:** `docs/CODE_MERGE_PROJECT_TO_SESSION.js`
**Результат:** Теперь в Redis сохраняются ВСЕ данные:
- session_id, phone, unified_id, contact_id
- lastname, firstname, middle_name
- birthday, birthplace, inn
- mailingzip, mailingstreet, email, tg_id
- description
- claim_id, project_id, project_name
- is_new_project, current_step
---
### 4. Генерация новой сессии для новой жалобы
**Проблема:** При создании новой жалобы использовалась та же сессия, что и для предыдущей.
**Решение:**
- Добавлена функция `generateUUIDv4()` в `ClaimForm.tsx`
- При создании новой жалобы генерируется новый `session_id`
- `session_token` в localStorage (авторизация) остаётся прежним
- `unified_id`, `phone`, `contact_id` сохраняются
**Файл:** `frontend/src/pages/ClaimForm.tsx`
---
## Созданные/обновлённые файлы
### Новые файлы:
- `docs/SQL_SELECT_CONTACT_WITH_CUSTOM_FIELDS.sql` — SQL запрос для контактов с кастомными полями
### Обновлённые файлы:
- `backend/app/api/models.py` — добавлены unified_id, contact_id
- `backend/app/api/claims.py` — передача unified_id, contact_id в Redis
- `frontend/src/components/form/StepDescription.tsx` — передача unified_id, contact_id
- `frontend/src/pages/ClaimForm.tsx` — генерация новой сессии для новой жалобы
- `docs/CODE_MERGE_PROJECT_TO_SESSION.js` — исправлен мерж данных в сессию
---
## Технические детали
### Redis канал для описания проблемы
- Канал: `ticket_form:description`
- Передаваемые данные: session_id, phone, email, unified_id, contact_id, problem_description
### Redis канал для подтверждения формы
- Канал: `clientright:webform:approve`
- Включает SMS код для верификации
### Структура сессии в Redis
```json
{
"session_id": "sess_...",
"phone": "79262306381",
"unified_id": "usr_...",
"contact_id": "320096",
"lastname": "Коробков",
"firstname": "Федор",
"middle_name": "Владимирович",
"birthday": "1981-09-18",
"birthplace": "Москва",
"inn": "123456789012",
"mailingstreet": "...",
"email": "help@clientright.ru",
"tg_id": "295410106",
"description": "...",
"claim_id": "...",
"project_id": "399171",
"project_name": "Коробков_КлиентПрав",
"is_new_project": false,
"current_step": 2
}
```
---
## Статус
Все задачи выполнены
✅ Backend пересобран и перезапущен
✅ Frontend обновлён через HMR
✅ Тестирование успешно