arc/docs/workflow_diagnosis_report.md
2026-04-14 19:34:55 +03:30

175 lines
5.9 KiB
Markdown
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📋 گزارش تشخیص مشکل ورک‌فلو
## 📊 اطلاعات کلی
**ورک‌فلو شناسایی شده:**
- **ID**: 3
- **نام**: Workflow جدید
- **وضعیت**: فعال ✅
- **Business ID**: 51
- **تاریخ ایجاد**: 2025-12-03 21:29:40
- **آخرین بروزرسانی**: 2025-12-04 14:46:26
---
## 🔍 ساختار ورک‌فلو
### نودها:
1. **نود تریگر** (ID: `6a6f62bf-1680-4a50-9735-a1acc293d0d0`)
- نوع: `trigger`
- عنوان: "ایجاد فاکتور"
- تریگر: `invoice.created`
2. **نود اکشن** (ID: `bf9e10a3-13d8-42ae-8f0d-1481d2b9224f`)
- نوع: `action`
- عنوان: "ارسال پیام تلگرام"
- اکشن: `send_telegram`
### اتصالات:
- تریگر "ایجاد فاکتور" → اکشن "ارسال پیام تلگرام"
---
## ❌ مشکلات شناسایی شده
### 🔴 مشکل اصلی: پیکربندی نادرست فیلد `message`
**وضعیت فعلی:**
```json
{
"message": "$6a6f62bf-1680-4a50-9735-a1acc293d0d0",
"user_id": "1",
"parse_mode": "None",
"action_type": "send_telegram",
"retry_on_failure": true
}
```
**مشکل:**
- فیلد `message` به جای یک متن پیام واقعی، به خروجی نود تریگر اشاره می‌کند: `$6a6f62bf-1680-4a50-9735-a1acc293d0d0`
- نود تریگر (`invoice.created`) یک object خالی `{}` برمی‌گرداند
- در نتیجه، پیام ارسالی به تلگرام یک object خالی است نه یک متن معنادار
**نتیجه:**
- ورک‌فلو به درستی اجرا می‌شود (status: تکمیل شده ✅)
- اما پیامی به تلگرام ارسال نمی‌شود یا پیام بی‌معنا ارسال می‌شود
- در لاگ‌ها می‌بینیم: `"success": false` با خطای `"user_id مشخص نشده است"`
---
## 📜 تاریخچه اجراها
### ✅ اجرای #4 (آخرین اجرا)
- **تاریخ**: 2025-12-04 14:43:55
- **وضعیت**: تکمیل شده
- **نتیجه**: ناموفق در ارسال پیام
- **خطا**: `"user_id مشخص نشده است"`
**لاگ‌های کلیدی:**
```
✅ Node 'ایجاد فاکتور' executed successfully
✅ Node 'ارسال پیام تلگرام' executed successfully (اما با خطا در نتیجه)
-> "error": "user_id مشخص نشده است"
-> "success": false
✅ Workflow completed successfully
```
### ✅ اجرای #3 (اجرای قبلی)
- **تاریخ**: 2025-12-03 21:30:03
- **وضعیت**: تکمیل شده
- **نتیجه**: ناموفق در ارسال پیام
- **خطا**: `"'TelegramProvider' object has no attribute 'send'"`
**توضیح**: این خطا نشان می‌دهد که در کد قبلی از متد `send` استفاده می‌شده که وجود نداشته. این مشکل در کد فعلی حل شده (تغییر به `send_text`).
---
## ✅ بررسی تنظیمات سیستم
### تنظیمات تلگرام:
- ✅ **Bot Token**: پیکربندی شده
- ✅ **Proxy**: فعال و پیکربندی شده
- Base URL: `https://eucdn.hesabix.ir/`
- API Key: موجود
### کاربران متصل به تلگرام:
- ✅ **تعداد کاربران**: 2 کاربر به ربات تلگرام متصل هستند
---
## 💡 راه‌حل پیشنهادی
### 🔧 تغییرات مورد نیاز در کانفیگ نود "ارسال پیام تلگرام":
**۱. اصلاح فیلد `message`:**
باید یک متن پیام معنادار وارد شود، مثلاً:
```json
{
"message": "فاکتور جدیدی ایجاد شد!",
"user_id": "1",
"parse_mode": "None",
"action_type": "send_telegram"
}
```
یا می‌توانید از اطلاعات فاکتور استفاده کنید (اگر در trigger_data موجود باشد):
```json
{
"message": "فاکتور جدید شماره $6a6f62bf-1680-4a50-9735-a1acc293d0d0.invoice_code ایجاد شد.",
"user_id": "1",
"parse_mode": "None",
"action_type": "send_telegram"
}
```
**۲. بررسی `user_id`:**
اطمینان حاصل کنید که `user_id` صحیح است و کاربر مورد نظر:
- عضو کسب‌وکار با ID 51 است
- به ربات تلگرام متصل است
---
## 🎯 خلاصه
| مورد | وضعیت |
|------|-------|
| ورک‌فلو فعال است | ✅ |
| ساختار ورک‌فلو صحیح است | ✅ |
| تنظیمات تلگرام پیکربندی شده | ✅ |
| کاربران به تلگرام متصل هستند | ✅ |
| کانفیگ پیام صحیح است | ❌ |
| پیام به تلگرام ارسال می‌شود | ❌ |
**مشکل اصلی:**
- فیلد `message` در کانفیگ نود "ارسال پیام تلگرام" به جای متن پیام، به خروجی نود تریگر اشاره می‌کند که یک object خالی است.
**راه‌حل:**
- تغییر فیلد `message` به یک متن پیام معنادار در تنظیمات ورک‌فلو
---
## 📝 نکات اضافی
1. **Reference به نودهای قبلی:**
- اگر می‌خواهید از اطلاعات نود قبلی استفاده کنید، باید به فیلد خاصی از آن اشاره کنید:
- مثال: `$node_id.field_name`
- نه: `$node_id` (که کل object را برمی‌گرداند)
2. **اطلاعات موجود در trigger:**
- تریگر `invoice.created` اطلاعات فاکتور را در `trigger_data` قرار می‌دهد
- می‌توانید در پیام از این اطلاعات استفاده کنید
3. **لاگ‌های بیشتر:**
- تمام اجراهای ورک‌فلو با جزئیات کامل در جدول `workflow_executions` و `workflow_logs` ذخیره می‌شوند
- می‌توانید برای دیباگ بیشتر از این لاگ‌ها استفاده کنید
---
**تاریخ گزارش:** 2025-12-04