Skip to main content
#P1646

POST /v2/batch-accounting/rebuild-indexes

Rebuild All Redis Indexes

این اندپوینت یک عملیات بسیار سنگین و مخرب (destructive) برای بازسازی کامل تمامی ایندکس‌های Redis اجرا می‌کند. قبل از شروع، تمام داده‌های موجود در Redis شامل اسناد، ایندکس‌ها و مانده‌ها حذف می‌شوند و سپس بر اساس رکوردهای فعال جدول manual_documents، ایندکس‌ها از صفر ساخته می‌شوند. برای جلوگیری از اجرای اشتباه، فیلد confirm اجباری است.

Request Overview

URL: /v2/batch-accounting/rebuild-indexes
Method: 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