#P1649
POST /v2/batch-accounting/preview
Preview Batch Processing (Dry‑Run)
این اندپوینت یک پیشنمایش کامل از عملیات پردازش Batch را ارائه میدهد، بدون اینکه هیچ پردازش واقعی روی Redis یا دیتابیس انجام شود. این پیشنمایش برای تصمیمگیری مهندسی قبل از اجرای پردازشهای سنگین استفاده میشود و شامل: - تعداد اسناد قابل پردازش، - تعداد Batch مورد نیاز، - زمان تخمینی، - تعداد روزهای شمسی در بازه، - و اطلاعات کامل بازه تاریخ میباشد.
Request Overview
URL:
/v2/batch-accounting/previewMethod: POST
Middleware: authWithJwt, shamsiDate
Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
start_date |
string | yes | تاریخ شمسی شروع بازه به فرمت دقیق YYYY-MM-DD. (اعتبارسنجی regex و همچنین اعتبارسنجی Jalali توسط Middleware) |
end_date |
string | yes | تاریخ پایان بازه، فرمت مشابه start_date |
batch_size |
integer | no | اندازه Batch بین 10 تا 1000. مقدار پیشفرض 100. |
Validation Rules
- start_date: required, string, regex:/^\\d{4}-\\d{2}-\\d{2}$/
- end_date: required, string, regex:/^\\d{4}-\\d{2}-\\d{2}$/
- batch_size: nullable, integer, min:10, max:1000
Response (Success)
| Field | Type | Description |
|---|---|---|
success |
boolean | وضعیت کلی پیشنمایش |
data.total_documents |
integer | تعداد کل اسناد در دیتابیس بین start و end با status != 5 |
data.batch_size |
integer | مقدار نهایی batch_size (ورودی یا پیشفرض) |
data.estimated_batches |
integer | تعداد Batch موردنیاز (ceil(total / batch_size)) |
data.estimated_time_seconds |
float | تخمین زمان کل (0.5 ثانیه برای هر batch) |
data.estimated_time_minutes |
float | زمان تخمینی بر حسب دقیقه |
data.working_days_count |
integer | تعداد روزهای شمسی شامل start→end |
data.date_range |
object | شامل start، end، نسخههای فرمتشده (formatFull)، و اطلاعات بازه |
message |
string | پیام نهایی پیشنمایش: «پیشنمایش: X سند در Y batch پردازش خواهد شد» |
{
"success": true,
"data": {
"total_documents": 1480,
"batch_size": 100,
"estimated_batches": 15,
"estimated_time_seconds": 7.5,
"estimated_time_minutes": 0.13,
"working_days_count": 31,
"date_range": {
"start": "1403-01-01",
"end": "1403-01-31",
"start_formatted": "۱ فروردین ۱۴۰۳",
"end_formatted": "۳۱ فروردین ۱۴۰۳"
}
},
"message": "پیشنمایش: 1480 سند در 15 batch پردازش خواهد شد"
}
Response (Validation Error: 422)
{
"success": false,
"message": "خطا در اعتبارسنجی",
"errors": {
"start_date": [
"فرمت تاریخ نامعتبر است."
]
}
}
Response (Server Error)
{
"success": false,
"message": "خطا در پیشنمایش: Internal server error..."
}
Internal Architecture
| Component | Description |
|---|---|
manual_documents table |
فیلتر اسناد بر اساس بازه تاریخ و حذف status=5 |
ShamsiDateHelper::generateDateRange() |
تولید تمام روزهای شمسی بین start و end |
ShamsiDateHelper::formatFull() |
فرمت تبدیل YYYY-MM-DD به متن کامل مانند «۱ فروردین ۱۴۰۳» |
estimatedBatches |
محاسبه تعداد Batch از طریق ceil(total/batch_size) |
estimatedTime |
زمان تخمینی با مدل 0.5 ثانیه برای هر Batch |
Process Flow
Validate JWT Token
↓
Validate Input (start_date, end_date, batch_size)
↓
Count DB Documents (manual_documents)
↓
Compute Estimated Batches
↓
Compute Estimated Time
↓
Generate Shamsi Date Range
↓
Return Preview JSON