fix: Change Redis channel to fixed name clientright:webform:approve
Changed from dynamic channel form_approve:{claim_id} to fixed channel:
- Channel: clientright:webform:approve
- Simpler n8n subscription (no need for dynamic channel name)
- All form approvals go to the same channel
Files:
- backend/app/api/claims.py
- frontend/src/components/form/StepClaimConfirmation.tsx
- docs/REDIS_FORM_APPROVE.md
This commit is contained in:
@@ -546,7 +546,7 @@ async def publish_form_approval(request: Request):
|
|||||||
"""
|
"""
|
||||||
Публикация данных подтвержденной формы в Redis канал
|
Публикация данных подтвержденной формы в Redis канал
|
||||||
|
|
||||||
После SMS-апрува отправляет данные формы в Redis канал form_approve:{claim_id}
|
После SMS-апрува отправляет данные формы в Redis канал clientright:webform:approve
|
||||||
для обработки в n8n workflow.
|
для обработки в n8n workflow.
|
||||||
|
|
||||||
В будущем можно подключить RabbitMQ для очереди и защиты от дублей.
|
В будущем можно подключить RabbitMQ для очереди и защиты от дублей.
|
||||||
@@ -588,8 +588,8 @@ async def publish_form_approval(request: Request):
|
|||||||
"original_data": body.get("original_data", {}),
|
"original_data": body.get("original_data", {}),
|
||||||
}
|
}
|
||||||
|
|
||||||
# Публикуем в Redis канал form_approve:{claim_id}
|
# Публикуем в Redis канал clientright:webform:approve
|
||||||
channel = f"form_approve:{claim_id}"
|
channel = "clientright:webform:approve"
|
||||||
event_json = json.dumps(event_data, ensure_ascii=False)
|
event_json = json.dumps(event_data, ensure_ascii=False)
|
||||||
await redis_service.publish(channel, event_json)
|
await redis_service.publish(channel, event_json)
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
## 📋 Описание
|
## 📋 Описание
|
||||||
|
|
||||||
После SMS-апрува данные подтвержденной формы публикуются в Redis канал `form_approve:{claim_id}` для обработки в n8n workflow.
|
После SMS-апрува данные подтвержденной формы публикуются в Redis канал `clientright:webform:approve` для обработки в n8n workflow.
|
||||||
|
|
||||||
## 🔄 Архитектура
|
## 🔄 Архитектура
|
||||||
|
|
||||||
```
|
```
|
||||||
Frontend (StepClaimConfirmation)
|
Frontend (StepClaimConfirmation)
|
||||||
→ POST /api/v1/claims/approve
|
→ POST /api/v1/claims/approve
|
||||||
→ Backend публикует в Redis канал form_approve:{claim_id}
|
→ Backend публикует в Redis канал clientright:webform:approve
|
||||||
→ n8n подписывается на канал и обрабатывает данные
|
→ n8n подписывается на канал и обрабатывает данные
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Frontend (StepClaimConfirmation)
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"success": true,
|
"success": true,
|
||||||
"channel": "form_approve:0eb051ec-23a6-4e06-8b98-f02d20d35f68",
|
"channel": "clientright:webform:approve",
|
||||||
"idempotency_key": "0eb051ec-23a6-4e06-8b98-f02d20d35f68_1735123456789_user_123",
|
"idempotency_key": "0eb051ec-23a6-4e06-8b98-f02d20d35f68_1735123456789_user_123",
|
||||||
"message": "Данные формы отправлены на обработку"
|
"message": "Данные формы отправлены на обработку"
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ Frontend (StepClaimConfirmation)
|
|||||||
|
|
||||||
## 📢 Redis канал
|
## 📢 Redis канал
|
||||||
|
|
||||||
**Канал:** `form_approve:{claim_id}`
|
**Канал:** `clientright:webform:approve`
|
||||||
|
|
||||||
**Формат сообщения:**
|
**Формат сообщения:**
|
||||||
|
|
||||||
@@ -96,8 +96,7 @@ Frontend (StepClaimConfirmation)
|
|||||||
### 1. Redis Subscribe Node
|
### 1. Redis Subscribe Node
|
||||||
|
|
||||||
**Operation:** `Subscribe`
|
**Operation:** `Subscribe`
|
||||||
**Channel:** `form_approve:{{ $json.claim_id }}`
|
**Channel:** `clientright:webform:approve`
|
||||||
**Или:** Подписка на паттерн `form_approve:*`
|
|
||||||
|
|
||||||
### 2. Обработка события
|
### 2. Обработка события
|
||||||
|
|
||||||
@@ -144,14 +143,14 @@ Frontend (StepClaimConfirmation)
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
redis-cli -h crm.clientright.ru -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
|
redis-cli -h crm.clientright.ru -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
|
||||||
MONITOR | grep form_approve
|
MONITOR | grep clientright:webform:approve
|
||||||
```
|
```
|
||||||
|
|
||||||
### Подписка на канал (тест)
|
### Подписка на канал (тест)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
redis-cli -h crm.clientright.ru -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
|
redis-cli -h crm.clientright.ru -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
|
||||||
SUBSCRIBE form_approve:*
|
SUBSCRIBE clientright:webform:approve
|
||||||
```
|
```
|
||||||
|
|
||||||
## ✅ Преимущества
|
## ✅ Преимущества
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ export default function StepClaimConfirmation({
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Публикуем в Redis канал через backend endpoint (fire-and-forget)
|
// Публикуем в Redis канал через backend endpoint (fire-and-forget)
|
||||||
// Канал: form_approve:{claim_id}
|
// Канал: clientright:webform:approve
|
||||||
fetch('/api/v1/claims/approve', {
|
fetch('/api/v1/claims/approve', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
@@ -139,7 +139,7 @@ export default function StepClaimConfirmation({
|
|||||||
console.error('Ошибка публикации данных формы в Redis:', error);
|
console.error('Ошибка публикации данных формы в Redis:', error);
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log('✅ Данные формы опубликованы в Redis канал form_approve:', claimId);
|
console.log('✅ Данные формы опубликованы в Redis канал clientright:webform:approve');
|
||||||
}, [claimPlanData]);
|
}, [claimPlanData]);
|
||||||
|
|
||||||
// Функция отправки SMS-кода
|
// Функция отправки SMS-кода
|
||||||
|
|||||||
Reference in New Issue
Block a user