docs: обновлён лог сессии 2025-12-03
- Получение cf_2624 из MySQL при загрузке черновика - Исправление подключения MySQL CRM из Docker контейнера - Блокировка редактирования полей при contact_data_confirmed=true - Выбор банка для СБП выплат - Все проблемы решены, система работает корректно
This commit is contained in:
@@ -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
|
||||
**Статус:** ✅ Завершено успешно
|
||||
|
||||
Reference in New Issue
Block a user