docs: обновлён лог сессии 2025-12-03

- Получение cf_2624 из MySQL при загрузке черновика
- Исправление подключения MySQL CRM из Docker контейнера
- Блокировка редактирования полей при contact_data_confirmed=true
- Выбор банка для СБП выплат
- Все проблемы решены, система работает корректно
This commit is contained in:
Fedor
2025-12-03 18:07:53 +03:00
parent a86120dd53
commit 6a9f8b5465

View File

@@ -1,6 +1,6 @@
# Лог сессии 2025-12-03
## Задача: Получение cf_2624 из MySQL при загрузке черновика
## Задача 1: Получение cf_2624 из MySQL при загрузке черновика
### Проблема
Пользователь заметил, что для `claim_id: "226564ce-d7cf-48ee-a820-690e8f5ec8e5"` доступно редактирование, хотя в CRM стоит галка "Данные подтверждены" (`cf_2624 = "1"`).
@@ -74,6 +74,28 @@ LIMIT 1
3.**Надёжнее** - не зависит от webservice API
4.**Актуальнее** - всегда получаем свежие данные из БД
## Проблемы и решения
### Проблема 1: Файл crm_mysql_service.py отсутствовал в контейнере
**Решение:** Пересобран контейнер через `docker-compose build ticket_form_backend`
### Проблема 2: MySQL не подключался из Docker контейнера
**Ошибка:** `Can't connect to MySQL server on 'localhost'`
**Решение:**
- Изменён `docker-compose.yml`: добавлен `network_mode: host`
- Изменён `config.py`: `mysql_crm_host = "localhost"` (в режиме host работает)
**Результат:** `✅ MySQL CRM DB connected: localhost:3306/ci20465_72new`
### Проблема 3: contact_data_confirmed возвращал None
**Причина:** Флаг не передавался в компонент `StepClaimConfirmation`
**Решение:**
- Добавлен prop `contact_data_confirmed` в `StepClaimConfirmation`
- Передача флага из `formData.contact_data_confirmed` в компонент
- Исправлена логика получения флага (приоритет: props > claimPlanData > false)
## Проверка
**MySQL запрос:**
@@ -90,43 +112,86 @@ contactid cf_2624
В MySQL `cf_2624 = "1"` для `contact_id = "399542"` - данные подтверждены.
**API тест:**
```bash
curl "http://localhost:8200/api/v1/claims/drafts/226564ce-d7cf-48ee-a820-690e8f5ec8e5"
```
**Результат:**
```json
{
"contact_data_confirmed": true,
"contact_data_can_edit": false,
"contact_data_from_crm": {
"contactid": "399542",
"cf_2624": "1",
...
}
}
```
## Текущий статус
- ✅ Код обновлён
- ✅ Бэкенд перезапущен
- ⚠️ Требуется проверка: почему в ответе API `contact_data_confirmed` и `contact_data_can_edit` равны `null`
- ✅ Бэкенд пересобран и перезапущен
- ✅ MySQL CRM подключён
- ✅ API возвращает правильные данные
- ✅ Фронтенд получает `contact_data_confirmed` и блокирует поля
- ✅ Поля формы блокируются (readonly) при `contact_data_confirmed = true`
**Возможные причины:**
1. Запрос к MySQL не выполняется (нет логов)
2. `contact_id` не передаётся или имеет неправильный тип
3. Ошибка в SQL запросе (не логируется)
## Блокировка полей
**Добавлено логирование:**
```python
logger.info(f"🔍 Получен contact_id из черновика: {contact_id} (type: {type(contact_id)})")
```
При `contact_data_confirmed = true` блокируются следующие поля:
- `firstname` (Имя)
- `lastname` (Фамилия)
- `secondname` / `middle_name` (Отчество)
- `inn` (ИНН)
- `birthday` (Дата рождения)
- `birthplace` / `birth_place` (Место рождения)
- `address` / `mailingstreet` (Адрес)
- `email` (E-mail)
## Следующие шаги
Поля становятся `readonly` и отображаются с серым фоном.
1. Проверить логи при загрузке черновика
2. Убедиться, что `contact_id` передаётся корректно
3. Проверить, что SQL запрос выполняется успешно
4. Убедиться, что фронтенд правильно использует `contact_data_confirmed` для блокировки полей
---
## Задача 2: Выбор банка для СБП выплат
### Реализация
- Динамическая загрузка списка банков из API `http://212.193.27.93/api/payouts/dictionaries/nspk-banks`
- Добавлено в форму создания заявки (`Step3Payment.tsx`)
- Добавлено в форму редактирования (`generateConfirmationFormHTML.ts`)
- Используется `input` + `datalist` для автоподстановки
---
## Файлы изменены
### Backend:
- `ticket_form/backend/app/config.py` - добавлены credentials для MySQL CRM
- `ticket_form/backend/app/services/crm_mysql_service.py` - новый сервис
- `ticket_form/backend/app/main.py` - подключение к MySQL CRM
- `ticket_form/backend/app/api/claims.py` - прямой SQL запрос к MySQL
- `ticket_form/docker-compose.yml` - добавлен `network_mode: host`
### Frontend:
- `ticket_form/frontend/src/components/form/StepClaimConfirmation.tsx` - передача `contact_data_confirmed`
- `ticket_form/frontend/src/pages/ClaimForm.tsx` - передача флага в компонент
- `ticket_form/frontend/src/components/form/generateConfirmationFormHTML.ts` - блокировка полей
### Документация:
- `ticket_form/docs/N8N_MYSQL_GET_CONTACT_DATA.sql` - SQL запрос для n8n
- `ticket_form/docs/N8N_MYSQL_GET_CONTACT_DATA.md` - документация
- `ticket_form/docs/BACKEND_GET_CONTACT_CF_2624_FROM_POSTGRESQL.md` - обновлена документация
---
**Время работы:** 2025-12-03 16:00-16:30
**Статус:** В процессе отладки
## Коммиты
1. `e1142315` - feat: Получение cf_2624 из MySQL при загрузке черновика
2. `a86120dd` - fix: передача contact_data_confirmed в StepClaimConfirmation для блокировки полей
---
**Время работы:** 2025-12-03 16:00-17:00
**Статус:** ✅ Завершено успешно