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)

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

  1. مقداردهیOperator و آماده‌سازی کوئریResolution (Query Initialization):

    درخواست به متد داخلی getTasks ارجاع داده می‌شود. در این مرحله، یک نمونه از Query Builder روی جدول tasks_items ایجاد شده و جهت استخراج متادیتای دسته‌بندی‌ها، عملیات LEFT JOIN با جدول tasks_categories صورت می‌پذیرد.

  2. فیلترینگ و اعمال شرایط (Conditional Filtering):

    سیستم بر اساس پارامترهای ورودی، دامنه جستجو را محدود می‌کند. در صورتی که پارامتر category در بدنه درخواست موجود باشد، شرط انطباق (Exact Match) روی ستون category اعمال می‌گردد. همچنین فیلترهای پایه برای وضعیت‌های فعال (Active Status) به‌صورت پیش‌فرض روی کوئری لحاظ می‌شوند.

  3. مرتب‌سازی داده‌ها (Sorting Strategy):

    نتایج خروجی بر اساس اولویت نمایشی (order) و سپس ترتیب زمانی ایجاد (id) مرتب‌سازی می‌شوند تا ساختار سلسله‌مراتبی بصری حفظ گردد.

  4. غنی‌سازی داده‌ها و نگاشت روابط (Data Hydration & Relation Mapping):

    پس از اجرای کوئری اولیه، سیستم وارد فاز پردازش ثانویه (Post-Processing) می‌شود. در این مرحله، روی مجموعه نتایج (Result Set) پیمایش صورت گرفته و برای هر موجودیت (Entity)، داده‌های وابسته زیر به صورت بلادرنگ (Real-time) بارگذاری و به آبجکت اصلی ملحق (Hydrate) می‌شوند:

    • User Resolution: واکشی مشخصات کامل کاربر سازنده از طریق متد StaticController::getOperators.):

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

    • Connection Context: بررسی و استخراج اطلاعات اتصالHydration (Connection) مرتبط با تسک از طریق متد OfficialController::getConnection.
    • Assignee Aggregation:): بازیابی

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

    • کش
    می‌شود تا سربار محاسبات مالی در فراخوانی‌های بعدی کاهش یابد.

پارامترهای ورودی (Query Parameters)

نام پارامترنوع داده (Type)وضعیت (Requirement)توضیحات فنی
categoryIntegerOptionalشناسه یکتای دسته‌بندی (Foreign Key) جهت فیلتر کردن اسکوپ نمایش تسک‌ها.

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

خروجی نهاییزیر بهدقیقاً صورتبر یکاساس آبجکتتوابع JSON استاندارد شامل وضعیت درخواست، برچسب زمانی سرورgetOperators و آرایه‌ایgetConnection ازکه آبجکت‌هایارائه غنی‌کردید بازسازی شده (Enriched Objects) بازگردانده می‌شود:است:

{
  "status": true,
  "time": 1732047000,
  "data": [
    {
      "id": 105,
      "user": {                  // Object: Creator Profile
          "id": 50,
          "name"title": "Systemپیگیری Admin",رفرنس "role": "Manager"
      }۱۲۵۰",
      "category": {              // Object: Category Metadata
        "id": 12,
        "title": "Development"مالی و حسابداری"
      },
      
      // خروجی دقیق 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": "Refactorتور APIکیش Logic"- هتل داریوش",
      "connection": false, // Boolean/Object:خوانده Connectionشده Contextاز Redis
          "financial": {
             // آبجکت بازگشتی از TradeController::financial
             "total_price": 50000000,
             "paid": 20000000,
             "remaining": 30000000,
             "status": "debtor"
          }
        }
      ],

      "priority": 1,
      "order": 0,
      "description": "Analyzeلطفا andمانده documentحساب theاین tradeرفرنس controller...با مشتری چک شود.",
      "deadline": "2025-01-01",
      "operators": [             // Array: Assigned Operators
          { "id": 51, "name": "Developer 1" },
          { "id": 52, "name": "Developer 2" }
      ]02-20",
      "status": 1,
      "created": "2024-12-012025-02-18 10:00:30:00"
    }
  ]
}