# POST /v2/batch-accounting/process/current-year

# Process Batch Documents of Current Year

این اندپوینت سال جاری شمسی را به صورت خودکار تشخیص داده و اسناد آن را از طریق پردازش دسته‌ای (Batch Processing) پردازش می‌کند. سال جاری از تاریخ کامل امروز، که توسط `ShamsiDateHelper::today()` تولید می‌شود، استخراج شده و سپس متد `processBatchByYear` فراخوانی می‌شود.

<div class="api-docs" id="bkmrk-"></div>## Request Overview

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fbatch-accou"><div class="endpoint-info"><div>**URL:** `/v2/batch-accounting/process/current-year`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Middleware:** authWithJwt, shamsiDate</div></div></div>## Body Parameters

<div class="api-docs" id="bkmrk-field-type-required-"><table class="schema-table"><thead><tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td>`batch_size`</td><td>integer</td><td>no</td><td>سایز Batchها. مقدار پیش‌فرض 500.</td></tr></tbody></table>

</div>## Request Example

```
POST /v2/batch-accounting/process/current-year

{
  "batch_size": 700
}
  
```

<div class="api-docs" id="bkmrk--1"></div>## Validation Rules

<div class="api-docs" id="bkmrk-batch_size%3A-integer-">- batch\_size: integer (در صورت ارسال)
- تاریخ today() توسط middleware shamsiDate معتبر تشخیص داده می‌شود

</div>## Response (Success)

<div class="api-docs" id="bkmrk-field-type-descripti"><table class="schema-table"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>`success`</td><td>boolean</td><td>نتیجه عملیات پردازش</td></tr><tr><td>`data.total_processed`</td><td>integer</td><td>تعداد کل اسناد پردازش‌شده</td></tr><tr><td>`data.total_errors`</td><td>integer</td><td>خطاهای رخ‌داده در Batchها</td></tr><tr><td>`data.batches_count`</td><td>integer</td><td>مجموع Batchهای اجراشده</td></tr><tr><td>`message`</td><td>string</td><td>پیام نهایی شامل سال استخراج‌شده از تاریخ امروز</td></tr></tbody></table>

</div>```
{
  "success": true,
  "data": {
    "success": true,
    "total_processed": 9100,
    "total_errors": 3,
    "batches_count": 20
  },
  "message": "پردازش سال 1403 کامل شد. 9100 سند پردازش شد."
}
  
```

<div class="api-docs" id="bkmrk--2"></div>## Response (Server Error)

```
{
  "success": false,
  "message": "خطا در پردازش سال جاری: Internal server error..."
}
  
```

<div class="api-docs" id="bkmrk--3"></div>## Internal Architecture

<div class="api-docs" id="bkmrk-component-descriptio"><table class="schema-table"><thead><tr><th>Component</th><th>Description</th></tr></thead><tbody><tr><td>`ShamsiDateHelper::today()`</td><td>بازگرداندن تاریخ امروز به فرمت YYYY-MM-DD</td></tr><tr><td>`processBatchByYear()`</td><td>محاسبه start/end سال و ارسال آن‌ها به processBatchByDateRange</td></tr><tr><td>`ShamsiDateHelper::endOfYear`</td><td>تشخیص آخرین روز سال شمسی</td></tr><tr><td>`processBatchByDateRange()`</td><td>منطق کامل پردازش دسته‌ای شامل chunking، sleep و aggregate خروجی</td></tr></tbody></table>

</div>## Process Flow

<div class="api-docs" id="bkmrk-validate-jwt-token-%E2%86%93"><div class="flowchart"><div class="flow-item">Validate JWT Token</div><div class="flow-arrow">↓</div><div class="flow-item">Get Today (ShamsiDateHelper::today)</div><div class="flow-arrow">↓</div><div class="flow-item">Extract Current Year (YYYY)</div><div class="flow-arrow">↓</div><div class="flow-item">Call processBatchByYear(currentYear, batchSize)</div><div class="flow-arrow">↓</div><div class="flow-item">Compute startOfYear / endOfYear</div><div class="flow-arrow">↓</div><div class="flow-item">Execute Batch Processing (chunking + throttling)</div><div class="flow-arrow">↓</div><div class="flow-item">Aggregate Results (processed + errors + batch_count)</div><div class="flow-arrow">↓</div><div class="flow-item">Return Final JSON Response</div></div></div>