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

5.9 KiB
Executable file
Raw Permalink Blame History

📋 گزارش تشخیص مشکل ورک‌فلو

📊 اطلاعات کلی

ورک‌فلو شناسایی شده:

  • 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

وضعیت فعلی:

{
  "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:

باید یک متن پیام معنادار وارد شود، مثلاً:

{
  "message": "فاکتور جدیدی ایجاد شد!",
  "user_id": "1",
  "parse_mode": "None",
  "action_type": "send_telegram"
}

یا می‌توانید از اطلاعات فاکتور استفاده کنید (اگر در trigger_data موجود باشد):

{
  "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