#P1646
POST /v2/batch-accounting/rebuild-indexes
Rebuild All Redis Indexes
این اندپوینت یک عملیات بسیار سنگین و مخرب (destructive) برای بازسازی کامل تمامی ایندکسهای Redis اجرا میکند. قبل از شروع، تمام دادههای موجود در Redis شامل اسناد، ایندکسها و ماندهها حذف میشوند و سپس بر اساس رکوردهای فعال جدول manual_documents، ایندکسها از صفر ساخته میشوند. برای جلوگیری از اجرای اشتباه، فیلد confirm اجباری است.
Request Overview
URL:
/v2/batch-accounting/rebuild-indexesMethod: POST
Middleware: authWithJwt, shamsiDate
Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
batch_size |
integer | no | حداکثر اندازه هر Batch. باید بین 100 و 1000 باشد. مقدار پیشفرض: 200. |
confirm |
boolean | yes | باید مقدار true/1 باشد (Rule: accepted). جهت جلوگیری از اجرای تصادفی. |
Request Example
POST /v2/batch-accounting/rebuild-indexes
{
"batch_size": 300,
"confirm": true
}
Validation Rules
- batch_size: nullable, integer, min:100, max:1000
- confirm: required, boolean, accepted
Response (Success)
| Field | Type | Description |
|---|---|---|
success |
boolean | وضعیت نهایی بازسازی |
data.total_documents |
integer | تعداد کل اسنادی که از دیتابیس خوانده شدند (status != 5) |
data.processed_count |
integer | تعداد کل اسناد پردازششده |
data.error_count |
integer | تعداد اسناد خطادار |
data.duration_seconds |
float | مدت زمان کامل عملیات بازسازی |
data.performance.documents_per_second |
float | میانگین سرعت پردازش |
data.performance.batch_size |
integer | مقدار نهایی batch_size مورد استفاده |
message |
string | پیام نهایی شامل تعداد اسناد پردازششده و مدت زمان |
{
"success": true,
"data": {
"total_documents": 12850,
"processed_count": 12850,
"error_count": 0,
"duration_seconds": 14.27,
"performance": {
"documents_per_second": 900.32,
"batch_size": 300
}
},
"message": "بازسازی کامل انجام شد. 12850 سند در 14.27 ثانیه پردازش شد."
}
Response (Validation Error: 422)
{
"success": false,
"message": "خطا در اعتبارسنجی",
"errors": {
"confirm": [
"فیلد confirm الزامی است."
]
}
}
Response (Server Error)
{
"success": false,
"message": "خطا در بازسازی: Internal server error..."
}
Internal Architecture
| Component | Description |
|---|---|
redisAccountingService->clearAllDocuments() |
حذف کامل تمام اسناد و ایندکسهای Redis قبل از بازسازی |
manual_documents table |
منبع اصلی دادهها برای بازسازی — فقط رکوردهای status != 5 استخراج میشوند |
chunk($batchSize) |
پردازش اسناد دیتابیس به صورت Batch جهت کنترل مصرف حافظه |
processBatch() |
منطق داخلی ساخت مجدد اسناد، ایندکسها و آپدیت ماندهها |
getTotalDocumentCount() |
برای محاسبه درصد پیشرفت (progress) در هر Batch |
Log::info() |
ثبت کامل پیشرفت و زمان اجرای rebuild |
Process Flow
Validate JWT Token
↓
Validate Input (batch_size, confirm)
↓
Clear All Redis Documents (clearAllDocuments)
↓
Count Active DB Documents (status != 5)
↓
Fetch Documents in Batches (chunk)
↓
Process Each Batch (processBatch)
↓
Update Progress Log
↓
Aggregate Final Stats (processed, errors)
↓
Return JSON Response