From 6a9f8b54650187949d3db5a2221e91c94d530c7f Mon Sep 17 00:00:00 2001 From: Fedor Date: Wed, 3 Dec 2025 18:07:53 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D1=91=D0=BD=20=D0=BB=D0=BE=D0=B3=20=D1=81=D0=B5=D1=81=D1=81?= =?UTF-8?q?=D0=B8=D0=B8=202025-12-03?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Получение cf_2624 из MySQL при загрузке черновика - Исправление подключения MySQL CRM из Docker контейнера - Блокировка редактирования полей при contact_data_confirmed=true - Выбор банка для СБП выплат - Все проблемы решены, система работает корректно --- ticket_form/SESSION_LOG_2025-12-03.md | 101 +++++++++++++++++++++----- 1 file changed, 83 insertions(+), 18 deletions(-) diff --git a/ticket_form/SESSION_LOG_2025-12-03.md b/ticket_form/SESSION_LOG_2025-12-03.md index 975e3a14..fb46bb6b 100644 --- a/ticket_form/SESSION_LOG_2025-12-03.md +++ b/ticket_form/SESSION_LOG_2025-12-03.md @@ -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 +**Статус:** ✅ Завершено успешно