14 KiB
Executable file
🎨 قابلیتهای لاگینگ در فرانتاند Workflow
📅 تاریخ: 2025-12-04
نسخه: 1.0.0
🎯 خلاصه
این مستند قابلیتهای جدیدی که در فرانتاند (Flutter) برای استفاده از سیستم لاگینگ و خطایابی بخش اتوماسیون اضافه شده است را شرح میدهد.
📦 فایلهای جدید/تغییر یافته
فایلهای جدید:
-
workflow_analytics_dialog.dart⭐- دیالوگ نمایش آمار و تحلیل workflow
- شامل 2 تب: عملکرد و خطاها
- نمودار دایرهای برای خطاها
-
workflow_timeline_dialog.dart⭐- دیالوگ نمایش Timeline دقیق اجرای workflow
- فیلتر بر اساس سطح لاگ (info, warning, error, debug)
- فیلتر بر اساس node
- نمایش آمار هر node
فایلهای تغییر یافته:
-
workflow_service.dart- اضافه کردن
getWorkflowErrorsAnalytics() - اضافه کردن
getWorkflowPerformanceAnalytics() - اضافه کردن
getExecutionTimeline()
- اضافه کردن
-
workflow_execution_history_panel.dart- اضافه کردن دکمه Analytics به header
- اضافه کردن دکمه Timeline به جزئیات اجرا
-
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:
- بروید به صفحه اتوماسیونها
- روی آیکون 📊 Analytics در AppBar کلیک کنید
- بازه زمانی دلخواه را انتخاب کنید
- آمار تمام workflows را مشاهده کنید
2. مشاهده آمار یک workflow خاص:
- بروید به ویرایشگر workflow
- در پنل تاریخچه اجرا روی 📊 Analytics کلیک کنید
- آمار فقط همان workflow نمایش داده میشود
3. مشاهده Timeline یک اجرا:
- در پنل تاریخچه اجرا
- روی یک اجرا کلیک کنید
- در جزئیات اجرا روی ⏱️ Timeline کلیک کنید
- Timeline کامل با تمام لاگها نمایش داده میشود
🎯 موارد استفاده (Use Cases)
Use Case 1: شناسایی workflow های کند
مشکل: نمیدانیم کدام workflow ها کند هستند
راهحل:
- از دکمه Analytics استفاده کنید
- تب عملکرد را باز کنید
- workflows را بر اساس "میانگین زمان" مرتب کنید
- workflow های با زمان بالا را شناسایی کنید
Use Case 2: پیدا کردن علت خطای مکرر
مشکل: یک workflow مدام خطا میدهد
راهحل:
- از دکمه Analytics استفاده کنید
- تب خطاها را باز کنید
- نوع خطاهای رایج را شناسایی کنید
- روی یک اجرای ناموفق کلیک کنید
- از Timeline جزئیات دقیق خطا را ببینید
Use Case 3: بررسی عملکرد یک node خاص
مشکل: میخواهیم بدانیم یک node چقدر زمان میبرد
راهحل:
- یک اجرا را انتخاب کنید
- Timeline را باز کنید
- در جدول "آمار نودها" میانگین زمان هر node را ببینید
- یا Timeline را فیلتر کنید روی آن node
Use Case 4: Debugging خطای خاص
مشکل: یک اجرا با خطای عجیبی fail شده
راهحل:
- اجرای ناموفق را انتخاب کنید
- Timeline را باز کنید
- فیلتر را روی "Error" بگذارید
- لاگ خطا را ببینید که شامل:
- 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
🐛 مشکلات شناخته شده
-
نمودار دایرهای:
- اگر تعداد انواع خطا بیش از 8 باشد، رنگها تکرار میشوند
- راهحل: محدود کردن به 8 خطای برتر
-
Performance:
- برای workflows با تعداد execution بسیار زیاد، ممکن است لود کردن کند باشد
- راهحل: استفاده از pagination در API
-
تاریخ:
- فرمت تاریخ به 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
📞 پشتیبانی
برای مشکلات یا سوالات:
- 📧 ایمیل: dev@hesabix.ir
- 📱 تلگرام: @hesabix_support
👥 مشارکتکنندگان
- طراحی UI/UX: Hesabix Design Team
- پیادهسازی Flutter: Hesabix Frontend Team
- بررسی و تست: QA Team
تاریخ: 2025-12-04
نسخه: 1.0.0
وضعیت: ✅ Production Ready