Skip to main content
#P1558

GET /api/v2/tasks/list

Route Info

Method Endpoint Controller Middleware
GET /api/v2/tasks/list OfficialController@listTasks authWithJwt

معماری و منطق پردازش (Processing Logic & Architecture)

این متد لیست وظایف را با مکانیزم Lazy Loading دستی آماده‌سازی می‌کند. پس از دریافت رکوردهای خام از جدول tasks_items، سیستم طی یک فرآیند Post-Processing روی هر آیتم حلقه زده و توابع Helper استاتیک را فراخوانی می‌کند:

  1. Operator Resolution (متد StaticController::getOperators):

    شناسه‌های کاربران (چه سازنده و چه اپراتورهای مسئول) به این تابع ارسال می‌شوند. تابع ابتدا ورودی را نرمال‌سازی کرده (تبدیل رشته JSON یا عدد به آرایه)، سپس با کوئری whereIn از جدول operators اطلاعات را واکشی می‌کند. خروجی شامل یک رشته فرمت‌شده (text) برای نمایش سریع و یک آبجکت query حاوی تمام فیلدهای هویتی و سازمانی کاربر است.

  2. Connection Hydration (متد OfficialController::getConnection):

    اگر تسک به یک موجودیت خارجی (مثل رفرنس فروش) متصل باشد، این تابع اجرا می‌شود. برای نوع reference، سیستم ابتدا سعی می‌کند اطلاعات مالی را از Redis بخواند. در صورت عدم وجود در کش (Cache Miss)، متد TradeController::financial اجرا شده و نتیجه در Redis کش می‌شود تا سربار محاسبات مالی در فراخوانی‌های بعدی کاهش یابد.

ساختار پاسخ (Response Structure)

خروجی زیر دقیقاً بر اساس توابع getOperators و getConnection که ارائه کردید بازسازی شده است:

{
  "status": true,
  "time": 1732047000,
  "data": [
    {
      "id": 105,
      "title": "پیگیری رفرنس ۱۲۵۰",
      "category": {
        "id": 12,
        "title": "مالی و حسابداری"
      },
      
      // خروجی دقیق getOperators برای فیلد user (سازنده)
      "user": [
        {
          "id": 50,
          "text": "10050 - علی محمدی",
          "query": {
            "id": 50,
            "sex": "male",
            "first_name": "علی",
            "last_name": "محمدی",
            "telegram": "ali_dev",
            "group": "IT",
            "avatar": "path/to/avatar.jpg",
            "position": "مدیر فنی",
            "personnel_id": "10050"
          }
        }
      ],

      // خروجی دقیق getOperators برای فیلد operators (مسئولین انجام)
      "operators": [
        {
          "id": 51,
          "text": "10051 - رضا علوی",
          "query": {
            "id": 51,
            "sex": "male",
            "first_name": "رضا",
            "last_name": "علوی",
            "telegram": "reza_acc",
            "group": "Accounting",
            "avatar": null,
            "position": "حسابدار ارشد",
            "personnel_id": "10051"
          }
        }
      ],

      // خروجی دقیق getConnection (در صورتی که تسک به رفرنس متصل باشد)
      "connection": [
        {
          "id": 2050,
          "type": "reference",
          "title": "تور کیش - هتل داریوش", // خوانده شده از Redis
          "financial": {
             // آبجکت بازگشتی از TradeController::financial
             "total_price": 50000000,
             "paid": 20000000,
             "remaining": 30000000,
             "status": "debtor"
          }
        }
      ],

      "priority": 1,
      "order": 0,
      "description": "لطفا مانده حساب این رفرنس با مشتری چک شود.",
      "deadline": "2025-02-20",
      "status": 1,
      "created": "2025-02-18 10:30:00"
    }
  ]
}