Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/docs/WORKFLOW_FRONTEND_LOGGING_FEATURES.md
2026-04-14 19:34:55 +03:30

14 KiB
Executable file
Raw Permalink Blame History

🎨 قابلیت‌های لاگینگ در فرانت‌اند Workflow

📅 تاریخ: 2025-12-04

نسخه: 1.0.0


🎯 خلاصه

این مستند قابلیت‌های جدیدی که در فرانت‌اند (Flutter) برای استفاده از سیستم لاگینگ و خطایابی بخش اتوماسیون اضافه شده است را شرح می‌دهد.


📦 فایل‌های جدید/تغییر یافته

فایل‌های جدید:

  1. workflow_analytics_dialog.dart ⭐

    • دیالوگ نمایش آمار و تحلیل workflow
    • شامل 2 تب: عملکرد و خطاها
    • نمودار دایره‌ای برای خطاها
  2. workflow_timeline_dialog.dart ⭐

    • دیالوگ نمایش Timeline دقیق اجرای workflow
    • فیلتر بر اساس سطح لاگ (info, warning, error, debug)
    • فیلتر بر اساس node
    • نمایش آمار هر node

فایل‌های تغییر یافته:

  1. workflow_service.dart

    • اضافه کردن getWorkflowErrorsAnalytics()
    • اضافه کردن getWorkflowPerformanceAnalytics()
    • اضافه کردن getExecutionTimeline()
  2. workflow_execution_history_panel.dart

    • اضافه کردن دکمه Analytics به header
    • اضافه کردن دکمه Timeline به جزئیات اجرا
  3. workflows_page.dart

    • اضافه کردن دکمه Analytics به AppBar

🚀 قابلیت‌های جدید

1. دیالوگ Analytics (تحلیل و آمار)

📊 تب عملکرد:

ویژگی‌ها:

  • نمایش آمار کلی workflows
  • انتخاب بازه زمانی (7، 14، 30، 60، 90 روز)
  • متریک‌های کلیدی برای هر workflow:
    • 🔵 کل اجراها
    • ✅ اجراهای موفق
    • ❌ اجراهای ناموفق
    • ⏱️ میانگین زمان اجرا
  • نرخ موفقیت با نمایش بصری (Progress Bar)
  • رنگ‌بندی بر اساس نرخ موفقیت:
    • سبز: بیشتر از 95%
    • نارنجی: 80-95%
    • قرمز: کمتر از 80%

نحوه دسترسی:

// از صفحه workflows
IconButton(
  icon: Icon(Icons.analytics_outlined),
  onPressed: () => showDialog(
    context: context,
    builder: (context) => WorkflowAnalyticsDialog(
      businessId: businessId,
    ),
  ),
)

// یا از history panel
IconButton(
  icon: Icon(Icons.analytics_outlined),
  onPressed: () => showDialog(
    context: context,
    builder: (context) => WorkflowAnalyticsDialog(
      businessId: businessId,
      workflowId: workflowId,
    ),
  ),
)

🐛 تب خطاها:

ویژگی‌ها:

  • خلاصه کلی خطاها:
    • 🔴 تعداد کل خطاها
    • 📂 تعداد انواع خطا
  • نمودار دایره‌ای (Pie Chart) توزیع خطاها
  • لیست جزئیات خطاها شامل:
    • نوع خطا
    • تعداد رخداد
    • درصد از کل
    • آخرین زمان وقوع
  • پیام تبریک در صورت نبود خطا! 🎉

API استفاده شده:

// تحلیل خطاها
final errors = await workflowService.getWorkflowErrorsAnalytics(
  businessId: businessId,
  workflowId: workflowId, // اختیاری
  days: 7,
);

// تحلیل عملکرد
final performance = await workflowService.getWorkflowPerformanceAnalytics(
  businessId: businessId,
  workflowId: workflowId, // اختیاری
  days: 30,
);

2. دیالوگ Timeline (خط زمانی اجرا)

🕐 ویژگی‌های Timeline:

بخش اطلاعات اجرا:

  • وضعیت اجرا (موفق/ناموفق/در حال اجرا)
  • مدت زمان کل
  • زمان شروع و پایان
  • پیام خطا (در صورت وجود)

آمار خلاصه:

  • 📋 کل لاگ‌ها
  • 🌳 تعداد نودهای اجرا شده
  • ❌ تعداد خطاها

جدول آمار نودها:

  • نام node
  • نوع node (trigger, action, condition, loop)
  • تعداد اجراها
  • تعداد خطاها
  • میانگین زمان اجرا (ms)

فیلترهای پیشرفته:

  • فیلتر بر اساس سطح لاگ:
    • 🔵 Info
    • 🟡 Warning
    • 🔴 Error
    • 🟣 Debug
  • فیلتر بر اساس node خاص

Timeline بصری:

  • نمایش لاگ‌ها به ترتیب زمانی
  • آیکون‌های رنگی بر اساس سطح لاگ
  • خط ارتباطی بین لاگ‌ها
  • نمایش اطلاعات کامل هر لاگ:
    • زمان دقیق (HH:mm:ss.SSS)
    • شناسه node
    • پیام
    • داده‌های اضافی (duration_ms, error_type, ...)

نحوه دسترسی:

// از execution details
IconButton(
  icon: Icon(Icons.timeline),
  onPressed: () => showDialog(
    context: context,
    builder: (context) => WorkflowTimelineDialog(
      businessId: businessId,
      workflowId: workflowId,
      executionId: executionId,
    ),
  ),
)

API استفاده شده:

final timeline = await workflowService.getExecutionTimeline(
  businessId: businessId,
  workflowId: workflowId,
  executionId: executionId,
);

🎨 تصاویر و UI Components

Analytics Dialog:

┌────────────────────────────────────────────────────────┐
│ 📊 آمار و تحلیل                                [X]    │
├────────────────────────────────────────────────────────┤
│ [عملکرد] [خطاها]                                       │
├────────────────────────────────────────────────────────┤
│                                                         │
│ بازه زمانی: [7 روز] [14 روز] [30 روز] [60] [90]      │
│                                                         │
│ ┌─────────────────────────────────────────────┐         │
│ │ Workflow: ارسال ایمیل خوشامدگویی          │         │
│ │                                              │         │
│ │ 🔵 کل: 1250  ✅ موفق: 1230  ❌ ناموفق: 20  │         │
│ │ ⏱️ میانگین: 2.34s                          │         │
│ │                                              │         │
│ │ نرخ موفقیت: 98.4%                          │         │
│ │ ████████████████████░░ 98.4%                │         │
│ └─────────────────────────────────────────────┘         │
│                                                         │
└────────────────────────────────────────────────────────┘

Timeline Dialog:

┌────────────────────────────────────────────────────────┐
│ ⏱️ Timeline اجرا                           [↻] [X]    │
├────────────────────────────────────────────────────────┤
│ ✅ وضعیت: تکمیل شده                 ⏱️ 2.34s         │
│ ▶️ شروع: 2025/12/04 10:30:00                          │
│ ⏹️ پایان: 2025/12/04 10:30:02                         │
├────────────────────────────────────────────────────────┤
│ [📋 15] [🌳 5] [❌ 0]                                   │
├────────────────────────────────────────────────────────┤
│ فیلتر: [همه سطوح ▼] [همه نودها ▼]                    │
├────────────────────────────────────────────────────────┤
│ ● ─ 10:30:00.123 [trigger_1]                          │
│ │   Workflow started                                  │
│ │   📦 duration_ms: 45.23                            │
│ │                                                     │
│ ● ─ 10:30:00.456 [action_1]                          │
│ │   Action executed successfully                     │
│ │   📦 duration_ms: 234.56                           │
│ │                                                     │
│ ● ─ 10:30:02.789 [workflow]                          │
│     Workflow completed                               │
│     📦 duration_ms: 2340.12                          │
└────────────────────────────────────────────────────────┘

📱 نحوه استفاده

1. مشاهده آمار کل workflows:

  1. بروید به صفحه اتوماسیون‌ها
  2. روی آیکون 📊 Analytics در AppBar کلیک کنید
  3. بازه زمانی دلخواه را انتخاب کنید
  4. آمار تمام workflows را مشاهده کنید

2. مشاهده آمار یک workflow خاص:

  1. بروید به ویرایشگر workflow
  2. در پنل تاریخچه اجرا روی 📊 Analytics کلیک کنید
  3. آمار فقط همان workflow نمایش داده می‌شود

3. مشاهده Timeline یک اجرا:

  1. در پنل تاریخچه اجرا
  2. روی یک اجرا کلیک کنید
  3. در جزئیات اجرا روی ⏱️ Timeline کلیک کنید
  4. Timeline کامل با تمام لاگ‌ها نمایش داده می‌شود

🎯 موارد استفاده (Use Cases)

Use Case 1: شناسایی workflow های کند

مشکل: نمی‌دانیم کدام workflow ها کند هستند

راه‌حل:

  1. از دکمه Analytics استفاده کنید
  2. تب عملکرد را باز کنید
  3. workflows را بر اساس "میانگین زمان" مرتب کنید
  4. workflow های با زمان بالا را شناسایی کنید

Use Case 2: پیدا کردن علت خطای مکرر

مشکل: یک workflow مدام خطا می‌دهد

راه‌حل:

  1. از دکمه Analytics استفاده کنید
  2. تب خطاها را باز کنید
  3. نوع خطاهای رایج را شناسایی کنید
  4. روی یک اجرای ناموفق کلیک کنید
  5. از Timeline جزئیات دقیق خطا را ببینید

Use Case 3: بررسی عملکرد یک node خاص

مشکل: می‌خواهیم بدانیم یک node چقدر زمان می‌برد

راه‌حل:

  1. یک اجرا را انتخاب کنید
  2. Timeline را باز کنید
  3. در جدول "آمار نودها" میانگین زمان هر node را ببینید
  4. یا Timeline را فیلتر کنید روی آن node

Use Case 4: Debugging خطای خاص

مشکل: یک اجرا با خطای عجیبی fail شده

راه‌حل:

  1. اجرای ناموفق را انتخاب کنید
  2. Timeline را باز کنید
  3. فیلتر را روی "Error" بگذارید
  4. لاگ خطا را ببینید که شامل:
    • error_type
    • error_message
    • stack_trace
    • correlation_id

🔧 تنظیمات و سفارشی‌سازی

تغییر بازه زمانی پیش‌فرض:

// در WorkflowAnalyticsDialog
int _performanceDays = 30; // تغییر به مقدار دلخواه
int _errorsDays = 7;

تغییر رنگ‌های نرخ موفقیت:

Color _getSuccessRateColor(double rate) {
  if (rate >= 95) return Colors.green;    // تغییر به دلخواه
  if (rate >= 80) return Colors.orange;   // تغییر به دلخواه
  return Colors.red;
}

اضافه کردن فیلترهای بیشتر:

// در Timeline Dialog
DropdownButton<String>(
  items: [
    DropdownMenuItem(value: 'all', child: Text('همه سطوح')),
    DropdownMenuItem(value: 'custom', child: Text('سفارشی')), // ✅ جدید
  ],
  // ...
)

📊 وابستگی‌ها

این ویجت‌ها به package های زیر وابسته هستند:

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.18.0          # برای فرمت تاریخ
  fl_chart: ^0.66.0      # برای نمودار دایره‌ای (Pie Chart)

توجه: باید fl_chart را به pubspec.yaml اضافه کنید:

flutter pub add fl_chart

🐛 مشکلات شناخته شده

  1. نمودار دایره‌ای:

    • اگر تعداد انواع خطا بیش از 8 باشد، رنگ‌ها تکرار می‌شوند
    • راه‌حل: محدود کردن به 8 خطای برتر
  2. Performance:

    • برای workflows با تعداد execution بسیار زیاد، ممکن است لود کردن کند باشد
    • راه‌حل: استفاده از pagination در API
  3. تاریخ:

    • فرمت تاریخ به locale دستگاه بستگی دارد
    • راه‌حل: استفاده از CalendarController برای فرمت یکسان

🚀 ویژگی‌های آینده (Roadmap)

v1.1.0:

  • Export Timeline به JSON
  • Share Timeline به تلگرام/ایمیل
  • فیلتر پیشرفته بر اساس تاریخ
  • جستجو در لاگ‌ها

v1.2.0:

  • Real-time monitoring با WebSocket
  • نوتیفیکیشن در زمان خطا
  • نمودار خطی برای روند عملکرد
  • مقایسه چند workflow

v2.0.0:

  • Dashboard اختصاصی monitoring
  • هشدارهای هوشمند
  • پیش‌بینی خطا با ML
  • Anomaly detection

📞 پشتیبانی

برای مشکلات یا سوالات:


👥 مشارکت‌کنندگان

  • طراحی UI/UX: Hesabix Design Team
  • پیاده‌سازی Flutter: Hesabix Frontend Team
  • بررسی و تست: QA Team

تاریخ: 2025-12-04
نسخه: 1.0.0
وضعیت: ✅ Production Ready