Skip to main content
#P1470

POST /api/v2/dashboard

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/dashboard V2BaseController@dashboard authWithJwt واکشی داده‌های تحلیلی و وضعیت سرویس‌های پایه برای صفحه داشبورد اپراتور

منطق عملکرد تابع

تابع dashboard داده‌های اصلی سامانه (وضعیت ارتباط با سرویس‌های وابسته، تعداد آیتم‌های فعال، هشدارهای مرکزی و زمان آخرین همگام‌سازی) را جمع‌آوری و بازگردانی می‌کند:
  • بررسی صحت اتصال با سرور مرکزی (hub یا service route) از طریق تابع اختصاصی اتصال.
  • واکشی مقادیر و وضعیت‌های کلیدی برای اپراتور فعلی.
  • در صورت اتصال موفق: بازگرداندن تعداد آیتم‌های فعال در فرمت active.
  • در صورت شکست اتصال یا خطای ارتباطی، برگرداندن پیام Lack of connection with the central server.
  • پوشش خطاهای Exception و بازگرداندن جزئیات آن در خروجی جهت بررسی سریع.

ورودی‌ها (Request Fields)

نام فیلد نوع داده الزامی توضیح
branch integer بله شناسه شعبهٔ جاری برای بررسی وضعیت اتصال و سرویس‌های فعال
operator_id integer خیر شناسه اپراتور برای ثبت یا تطبیق داده‌های dashboard

نمونه درخواست:

POST /api/v2/dashboard
Authorization: Bearer {JWT_TOKEN}
Content-Type: application/json

{
  "branch": 12
}

خروجی (Response)

فیلد نوع داده توضیح
status boolean وضعیت کلی ارتباط (true = اتصال موفق)
time integer زمان UNIX درخواست
active integer تعداد آیتم‌های فعال در سیستم مرکزی
data[] array داده‌های حاصل از سرویس مرکزی در صورت اتصال موفق
message string پیام خطا در صورت قطع ارتباط

نمونه پاسخ:

{
  "status": true,
  "time": 1732289412,
  "active": 7,
  "data": [{"service":"train","status":"OK"},{"service":"accommodation","status":"OK"}]
}

نکات امنیتی و کنترل دسترسی

  • به واسطه authWithJwt فقط کاربران تأیید شده JWT مجاز به مشاهده dashboard هستند.
  • حاوی داده‌های عملیاتی شعبه است، پس نباید برای کاربران خارج از محیط مدیریتی قابل‌دسترس باشد.
  • فاقد رمزنگاری در پاسخ سرویس؛ در ارتباطات بین‌سرویس بهتر است از SSL داخلی استفاده شود.

نکات کارایی و Performance

  • تابع سریع است ولی وابسته به latency ارتباط با سرور مرکزی.
  • خطای موقت شبکه می‌تواند باعث تأخیر یا بازگشت پیام خطای "Lack of connection".
  • پیشنهاد: پیاده‌سازی retry با backoff صعودی در صورت خطا برای نقطه‌های ارسال داده.

وابستگی‌ها

  • use Illuminate\Support\Facades\DB;
  • use Illuminate\Http\Request;
  • use Carbon\Carbon;
  • use App\Helpers\Functions;
  • use Exception;

کدهای خطا و پاسخ‌های Exception

کد خطا شرح خطا منبع
400 Database یا ارتباط ناموفق با سرویس مرکزی dashboard()
1006 JWT غیر معتبر authWithJwt()
500 Exception عمومی در runtime Exception handler

پیشنهادهای امنیتی

  • رمزنگاری داده‌های آماری حساس با AES سمت سرور.
  • محدودسازی مقدار بازگشتی برای جلوگیری از افشای وضعیت داخلی سرور.
  • فیلتر خروجی بر اساس نقش کاربر (operator vs admin).

پیشنهادهای بهبود

  • افزودن فیلد cache برای جلوگیری از خواندن مکرر در هر درخواست.
  • افزودن latency tracker برای شناسایی نقاط ضعیف شبکه.
  • نمایش شاخص‌های uptime و CPU usage در نسخه بعدی.

ممیزی و لاگ‌ها

  • در حال حاضر هیچ ممیزی برای ناکامی ارتباط ثبت نمی‌شود.
  • پیشنهاد افزودن لاگ با نوع DashboardConnectionFailed در جدول system_logs.

جمع‌بندی

تابع dashboard یکی از نقاط اصلی گزارش وضعیت سیستم است که ارتباط لحظه‌ای و تعداد آیتم‌های فعال را نمایش می‌دهد. ساختار خروجی به اندازه کافی خواناست؛ اما نبود ممیزی و کنترل سطح دسترسی، آن را در محیط‌های production ناایمن می‌سازد. توصیه می‌شود role-based limitation و audit logging برای پایداری enterprise لحاظ گردد.