#P1617
GET /v2/account-history/daily
Route Info
| Method | Endpoint | Controller | Middleware |
| GET | /v2/account-history/daily | AccountHistoryController@getDailyBalance | authWithJwt |
شرح عملکرد (Functionality)
این API صرفاً برای خواندن سریع اطلاعات محاسبهشده از قبل استفاده میشود.
- این متد هیچ محاسبهای انجام نمیدهد (Calculation Trigger نیست).
- دادهها را مستقیماً از Cache (Redis) بازیابی میکند.
- اگر دادهای برای تاریخ مورد نظر محاسبه نشده باشد (در کش نباشد)، خطای 404 برمیگرداند.
ورودی (Query Parameters)
پارامترها به صورت Query String ارسال میشوند:
?colleague_id=108&year=1403&date=1403-01-05
قوانین اعتبارسنجی (Validation Rules)
- colleague_id: الزامی | integer | باید در جدول
colleaguesموجود باشد. - year: الزامی | integer | بازه 1300 تا 1500.
- date: الزامی | فرمت دقیق
Y-m-d(تاریخ شمسی).
منطق اجرا (Execution Logic)
- ابتدا ورودیها توسط
Validatorبررسی میشوند.- در صورت شکست: بازگشت خطای 400 با کد
VALIDATION_ERROR.
- در صورت شکست: بازگشت خطای 400 با کد
- متد سرویس
getDailyBalanceFromCache($colleagueId, $year, $date)فراخوانی میشود. - سرویس چک میکند آیا کلید مربوطه در Redis وجود دارد یا خیر.
- بررسی نتیجه سرویس:
- اگر خروجی شامل کلید
errorباشد → بازگشت خطای 404 (Not Found). - در غیر این صورت → بازگشت دادهها با وضعیت 200.
- اگر خروجی شامل کلید
- مدیریت خطا (Exception Handling): هرگونه خطا در بلاک
try-catchمنجر به خطای 500 میشود.
پاسخ موفق (200 OK)
{
"payload": {
"credit": 0,
"debit": 1500000,
"balance": -1500000
},
"meta": {
"colleague_id": 108,
"year": 1403,
"date": "1403-01-05",
"source": "cache",
"timestamp": "2025-12-01T15:30:00+03:30"
}
}
* ساختار payload بسته به خروجی سرویس ممکن است دقیقاً به این شکل باشد.
پاسخهای خطا (Error Responses)
خطای اعتبارسنجی (400)
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The date does not match the format Y-m-d."
},
"meta": {
"timestamp": "2025-12-01T15:30:00+03:30"
}
}
داده یافت نشد / محاسبه نشده (404)
{
"error": {
"code": "NOT_FOUND",
"message": "No data found for this date. Please calculate first."
},
"meta": {
"timestamp": "2025-12-01T15:31:00+03:30"
}
}
خطای سرور (500)
{
"error": {
"code": "INTERNAL_ERROR",
"message": "Redis connection failed..."
},
"meta": {
"colleague_id": 108,
"timestamp": "2025-12-01T15:32:00+03:30"
}
}
توضیحات فنی (Meta)
- Service Method:
AccountHistoryService::getDailyBalanceFromCache - Redis Key Pattern: معمولاً به فرمت
account_history:daily:{colleagueId}:{year}:{date}میباشد. - این متد Stateless است و فقط خواندن انجام میدهد.