Skip to main content
#P1558

GET /api/v2/tasks/list

Route Info

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

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

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

  1. واکشی اطلاعات اپراتورها (Operator Resolution (Resolution):
    متد StaticController::getOperators):

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

    • فیلد text): برایترکیب نمایششناسه سریعپرسنلی و یکنام.
    • آبجکت query حاوی: تمام فیلدهایجزئیات هویتیرکورد وجدول سازمانیoperators.
    • کاربر است.

  2. بررسی اتصال به رفرنس (Connection HydrationHydration):
    اگر (تسک دارای اتصال باشد، متد OfficialController::getConnection):

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

    شود.

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

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

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

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

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

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