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:
87
docs/N8N_WORKFLOW_UPDATE_CONTACT_DATA_CONFIRMED.md
Normal file
87
docs/N8N_WORKFLOW_UPDATE_CONTACT_DATA_CONFIRMED.md
Normal 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`
|
||||
|
||||
Reference in New Issue
Block a user