feat: Получение cf_2624 из MySQL и блокировка полей при подтверждении данных

- Добавлен сервис CrmMySQLService для прямого подключения к MySQL CRM
- Обновлён метод get_draft() для получения cf_2624 напрямую из БД
- Реализована блокировка полей (readonly) при contact_data_confirmed = true
- Добавлен выбор банка для СБП выплат с динамической загрузкой из API
- Обновлена документация по работе с cf_2624 и MySQL
- Добавлен network_mode: host в docker-compose для доступа к MySQL
- Обновлены компоненты формы для поддержки блокировки полей
This commit is contained in:
AI Assistant
2025-12-04 12:22:23 +03:00
parent 64385c430d
commit 080e7ec105
69 changed files with 17034 additions and 1439 deletions

View File

@@ -0,0 +1,87 @@
# Обновление workflow 6mxRJ2LLHmQXyaDz: Подтверждение данных контакта
## Изменения в workflow
### 1. После ноды `CreateWebContacКлиентправ`
**Добавить ноду:** `PostgreSQL: Auto Confirm if CRM has data`
**SQL запрос:**
```sql
SELECT clpr_auto_confirm_if_crm_has_data($1, $2::integer);
```
**Параметры:**
- `$1` = `{{ $('user_get').first().json.unified_id }}`
- `$2` = `{{ JSON.parse($node['CreateWebContacКлиентправ'].json.result).contact_id }}`
**Назначение:** Если данные уже есть в CRM (contact_id > 0), автоматически ставим флаг подтверждения.
---
### 2. После ноды `Code in JavaScriptКлиентправ`
**Добавить ноду:** `PostgreSQL: Check Contact Data Status`
**SQL запрос:**
```sql
SELECT * FROM clpr_get_contact_data_status($1);
```
**Параметры:**
- `$1` = `{{ $('user_get').first().json.unified_id }}`
**Назначение:** Проверяем, подтверждены ли данные. Результат передаём дальше.
---
### 3. В ответе для фронтенда (нода `Code in JavaScript`)
**Добавить в return:**
```javascript
const contactStatus = $('PostgreSQL: Check Contact Data Status').first().json;
return {
// ... существующие поля ...
contact_data_confirmed: contactStatus.is_confirmed || false,
contact_data_can_edit: contactStatus.can_edit !== false,
contact_data_confirmed_at: contactStatus.confirmed_at || null
};
```
---
### 4. После подтверждения формы (workflow для `claim_confirmed`)
**Добавить ноду:** `PostgreSQL: Set Contact Data Confirmed`
**SQL запрос:**
```sql
SELECT clpr_set_contact_data_confirmed($1, NOW());
```
**Параметры:**
- `$1` = `{{ $json.unified_id }}`
**Назначение:** Устанавливаем флаг подтверждения после успешного сохранения данных.
---
## Порядок выполнения
1. **Создание контакта**`CreateWebContacКлиентправ`
2. **Автоподтверждение** → Если данные есть в CRM → `clpr_auto_confirm_if_crm_has_data`
3. **Проверка статуса**`clpr_get_contact_data_status` → передаём фронтенду
4. **Фронтенд** → Если `contact_data_confirmed = true` → блокируем редактирование
5. **После подтверждения**`clpr_set_contact_data_confirmed` → устанавливаем флаг
---
## Проверка в n8n
После обновления workflow проверить:
- ✅ Флаг устанавливается при наличии данных в CRM
- ✅ Флаг устанавливается после подтверждения формы
- ✅ Статус передаётся фронтенду
- ✅ Фронтенд блокирует редактирование при `contact_data_confirmed = true`