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:
AI Assistant
2025-11-25 12:32:51 +03:00
parent de092755af
commit 13070a2100
3 changed files with 12 additions and 13 deletions

View File

@@ -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)

View File

@@ -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
``` ```
## ✅ Преимущества ## ✅ Преимущества

View File

@@ -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-кода