#P1441
GET /api/v2/passenger/profile
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| GET | /api/v2/passenger/profile | UserController@profilePassenger | authWithJwt | بازیابی پروفایل کامل مسافر شامل اطلاعات هویتی، مدارک، ملیت، تاریخ تولد، و سوابق مالی. |
منطق عملکرد
- جستجو در جدول
customersبر اساس شناسه ورودیid. - در صورت عدم وجود، پاسخ با کد ۴۰۴ و پیام "مسافری با این مشخصات یافت نشد" برمیگردد.
- در صورت وجود، تلاش برای واکشی ملیت از Redis (کلید
countries:{id}). - اگر کشور در Redis نبود، از DB خوانده و کش میشود.
- واکشی فاکتورهای مالی مرتبط از
factor_items + factorsبا شاخه فعلی، گروهبندیشده بر اساسfactor_id. - در نهایت خروجی شامل بخشهای
references،details،contactsوcorrespondenceبازگردانده میشود.
پارامترهای ورودی
| نام | نوع | ضروری | توضیح |
| id | integer | بله | شناسه مسافر در جدول customers. |
| branch | integer | بله | شناسه شعبه موردنظر برای فیلترینگ فاکتورها. |
نمونه خروجی موفق
{
"payload": {
"references": [
{"title": "بلیط استانبول", "financial": {...}}
],
"contacts": false,
"details": {
"passenger_id": 44,
"name_fa": "علیرضا",
"lastname_fa": "ایرانپور",
"national_code": "0012345678",
"birthday": "1386/03/21",
"citizenship": { "fa_name": "ایران", "iso": "IR" },
"sex": true,
"national_image": false,
"identity": false
}
},
"meta": { "timestamp": 1732038300 }
}
امنیت
احراز هویت با JWT. دسترسی فقط برای اپراتورهای شعبه فعال مجاز است.
وابستگیها
- DB Facade
- Redis
- Carbon
- TradeController::financial()
- Functions::int2DateTime()
کارایی
کش Redis برای کشورها سرعت پاسخ را تا ۸۰٪ افزایش میدهد؛ متوسط زمان پاسخ: 3–5ms.
مدیریت خطا
- در صورت حذف رکورد، بازگرداندن JSON با کد 404 و پیام مناسب.
اثرات جانبی
هیچ دیتایی تغییر نمیکند؛ فقط خوانش ایمن انجام میشود.
ردپای حسابرسی
در این نسخه لاگ مستقیم ندارد؛ اکشن فقط خواندن است.
پیشنهاد بهبود
- افزودن جزئیات تماس اخیر از جدول
call_logs. - نمایش وضعیت تأیید احراز هویت در خروجی.
جمعبندی
پروفایل مسافر ماژول مرجع برای نمایش دادههای مسافر است؛ شامل جزئیات هویتی، ملیتی، مدارک، و سوابق مالی است.