#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 از دو تابع کمکی، اطلاعات آناستاتیک را تکمیلفراخوانی میکند:
شناساییOperatorاپراتورهاResolution (Operator Resolution):فراخوانیمتدStaticController::getOperators.):شناسههای کاربران (چه سازنده و چه اپراتورهای مسئول) به این تابع ارسال میشوند. تابع ابتدا ورودی را
استانداردنرمالسازی کردهو(تبدیل رشته JSON یا عدد به آرایه)، سپس با کوئریwhereInاز جدولoperatorsاطلاعات را واکشی میخواند.کند. خروجیشامل:شامل- یک
فیلدرشتهtextفرمتشده (ترکیبtext)شناسهبرایپرسنلینمایش سریع ونامیکبرای نمایش).- آبجکت
query(جزئیاتحاویکاملتمامدیتابیس).فیلدهای
مدیریتConnectionاتصالاتHydration (ConnectionمتدHydration)OfficialController::getConnection):
اگر تسک به
جایییک موجودیت خارجی (مثل رفرنس فروش) متصل باشد،متداین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": "مالی"مالی و حسابداری"
},
// Createdخروجی byدقیق 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.jpg",
"position": "Developer"مدیر فنی",
"personnel_id": "10050"
}
}
],
// Createdخروجی byدقیق 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": "حسابدار ارشد",
"personnel_id": "10051"
}
}
],
// Createdخروجی byدقیق getConnection (Redisدر +صورتی TradeController)که تسک به رفرنس متصل باشد)
"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"
}
]
}