#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 استاتیک را فراخوانی میکند:
مقداردهیOperatorو آمادهسازی کوئریResolution (Query Initialization):درخواست به متد داخلیgetTasksارجاع داده میشود. در این مرحله، یک نمونه از Query Builder روی جدولtasks_itemsایجاد شده و جهت استخراج متادیتای دستهبندیها، عملیاتLEFT JOINبا جدولtasks_categoriesصورت میپذیرد.فیلترینگ و اعمال شرایط (Conditional Filtering):سیستم بر اساس پارامترهای ورودی، دامنه جستجو را محدود میکند. در صورتی که پارامترcategoryدر بدنه درخواست موجود باشد، شرط انطباق (Exact Match) روی ستونcategoryاعمال میگردد. همچنین فیلترهای پایه برای وضعیتهای فعال (Active Status) بهصورت پیشفرض روی کوئری لحاظ میشوند.مرتبسازی دادهها (Sorting Strategy):نتایج خروجی بر اساس اولویت نمایشی (order) و سپس ترتیب زمانی ایجاد (id) مرتبسازی میشوند تا ساختار سلسلهمراتبی بصری حفظ گردد.غنیسازی دادهها و نگاشت روابط (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)
ساختار پاسخ (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"
}
]
}