- Добавлен сервис CrmMySQLService для прямого подключения к MySQL CRM - Обновлён метод get_draft() для получения cf_2624 напрямую из БД - Реализована блокировка полей (readonly) при contact_data_confirmed = true - Добавлен выбор банка для СБП выплат с динамической загрузкой из API - Обновлена документация по работе с cf_2624 и MySQL - Добавлен network_mode: host в docker-compose для доступа к MySQL - Обновлены компоненты формы для поддержки блокировки полей
136 lines
5.5 KiB
Markdown
136 lines
5.5 KiB
Markdown
# Конкретные изменения в workflow 6mxRJ2LLHmQXyaDz
|
||
|
||
## Что менять:
|
||
|
||
### 1. После ноды `user_get` → добавить PostgreSQL ноду (ПЕРВАЯ)
|
||
|
||
**Название ноды:** `PostgreSQL: Auto Confirm Contact Data`
|
||
|
||
**Параметры:**
|
||
- **Operation:** Execute Query
|
||
- **Query:**
|
||
```sql
|
||
SELECT clpr_auto_confirm_if_crm_has_data($1, $2::integer);
|
||
```
|
||
- **Parameters:**
|
||
- `$1` = `{{ $json.unified_id }}` ← используем данные из предыдущей ноды (user_get)
|
||
- `$2` = `{{ JSON.parse($node['CreateWebContacКлиентправ'].json.result).contact_id }}`
|
||
|
||
**Подключение:**
|
||
- `user_get` → `PostgreSQL: Auto Confirm Contact Data` → `Execute a SQL query2`
|
||
|
||
---
|
||
|
||
### 2. После ноды `PostgreSQL: Auto Confirm Contact Data` → добавить PostgreSQL ноду (ВТОРАЯ)
|
||
|
||
**Название ноды:** `PostgreSQL: Check Contact Data Status`
|
||
|
||
**Параметры:**
|
||
- **Operation:** Execute Query
|
||
- **Query:**
|
||
```sql
|
||
SELECT * FROM clpr_get_contact_data_status($1);
|
||
```
|
||
- **Parameters:**
|
||
- `$1` = `{{ $json.unified_id }}` ← unified_id передаётся дальше по цепочке
|
||
|
||
**Подключение:**
|
||
- `PostgreSQL: Auto Confirm Contact Data` → `PostgreSQL: Check Contact Data Status` → `Execute a SQL query2`
|
||
|
||
---
|
||
|
||
### 3. В ноде `Code in JavaScript` (та что перед `Respond to Webhook1`) → добавить флаг в ответ
|
||
|
||
**Найти эту строку:**
|
||
```javascript
|
||
// Unified ID из PostgreSQL (обязательно!)
|
||
unified_id: userData.unified_id, // из ноды user_get (PostgreSQL: Find or Create User)
|
||
```
|
||
|
||
**Добавить ПОСЛЕ неё:**
|
||
```javascript
|
||
// Флаг подтверждения данных контакта
|
||
contact_data_confirmed: $('PostgreSQL: Check Contact Data Status').first().json.is_confirmed || false,
|
||
contact_data_can_edit: $('PostgreSQL: Check Contact Data Status').first().json.can_edit !== false,
|
||
contact_data_confirmed_at: $('PostgreSQL: Check Contact Data Status').first().json.confirmed_at || null,
|
||
```
|
||
|
||
**Полный return должен быть:**
|
||
```javascript
|
||
return {
|
||
success: true,
|
||
result: {
|
||
session: $('Code in JavaScript3').first().json.session_id,
|
||
contact_id: sessionData.contact_id || claimResult.contact_id,
|
||
project_id: sessionData.project_id,
|
||
|
||
// Unified ID из PostgreSQL (обязательно!)
|
||
unified_id: userData.unified_id,
|
||
|
||
// Флаг подтверждения данных контакта
|
||
contact_data_confirmed: $('PostgreSQL: Check Contact Data Status').first().json.is_confirmed || false,
|
||
contact_data_can_edit: $('PostgreSQL: Check Contact Data Status').first().json.can_edit !== false,
|
||
contact_data_confirmed_at: $('PostgreSQL: Check Contact Data Status').first().json.confirmed_at || null,
|
||
|
||
// Данные заявки
|
||
ticket_id: claimResult.ticket_id,
|
||
ticket_number: claimResult.ticket_number,
|
||
title: claimResult.title,
|
||
category: claimResult.category,
|
||
status: claimResult.status,
|
||
|
||
// Метаданные
|
||
event_type: sessionData.event_type,
|
||
current_step: sessionData.current_step || 1,
|
||
updated_at: sessionData.updated_at || new Date().toISOString(),
|
||
|
||
// Дополнительно
|
||
is_new_contact: claimResult.is_new_contact || false
|
||
}
|
||
};
|
||
```
|
||
|
||
---
|
||
|
||
## Итого: 3 изменения
|
||
|
||
1. ✅ Добавить ноду `PostgreSQL: Auto Confirm Contact Data` после `CreateWebContacКлиентправ`
|
||
2. ✅ Добавить ноду `PostgreSQL: Check Contact Data Status` после `user_get`
|
||
3. ✅ Добавить 3 строки в `Code in JavaScript` перед `Respond to Webhook1`
|
||
|
||
---
|
||
|
||
## Порядок выполнения в workflow:
|
||
|
||
```
|
||
contact → Edit Fields → Get Challenge → ... → Login to CRM → form_id
|
||
↓
|
||
CreateWebContacКлиентправ
|
||
↓
|
||
[НОВАЯ] PostgreSQL: Auto Confirm Contact Data
|
||
↓
|
||
Code in JavaScriptКлиентправ
|
||
↓
|
||
user_get
|
||
↓
|
||
[НОВАЯ] PostgreSQL: Check Contact Data Status
|
||
↓
|
||
Execute a SQL query2
|
||
↓
|
||
...
|
||
↓
|
||
Code in JavaScript (← ДОБАВИТЬ ФЛАГИ)
|
||
↓
|
||
Respond to Webhook1
|
||
```
|
||
|
||
---
|
||
|
||
## Проверка:
|
||
|
||
После изменений в ответе n8n должны быть поля:
|
||
- `contact_data_confirmed` (true/false)
|
||
- `contact_data_can_edit` (true/false)
|
||
- `contact_data_confirmed_at` (дата или null)
|
||
|