[FEAT] 實作 B017 貨道庫存全量同步 API 與多語系支援
All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 56s
All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 56s
1. 實作 B017 (reload_msg) 端點,支援貨道庫存、效期與批號的全量同步。 2. 將 B017 回傳欄位映射至 App 需求:slot_no -> tid, stock -> num。 3. 新增 expiry_date (效期) 與 batch_no (批號) 欄位支援。 4. 實作指令狀態閉環邏輯,成功同步後自動將相關 reload_stock 指令標記為成功。 5. 將指令備註欄位多語系化,新增「庫存已與機台同步」繁中、英文、日文翻譯。 6. 更新 API 技術規格文件 (.agents/skills) 與系統 API 文件配置 (config/api-docs.php)。
This commit is contained in:
@@ -168,35 +168,46 @@ class MachineController extends Controller
|
||||
/**
|
||||
* B017: Get Slot Info & Stock (Synchronous)
|
||||
*/
|
||||
/**
|
||||
* B017: Get Slot Info & Stock (Synchronous - Full Sync)
|
||||
*/
|
||||
public function getSlots(Request $request)
|
||||
{
|
||||
$machine = $request->get('machine');
|
||||
$slots = $machine->slots()->with('product')->get();
|
||||
|
||||
// 依貨道編號排序 (Sorted by slot_no as requested)
|
||||
$slots = $machine->slots()->with('product')->orderBy('slot_no')->get();
|
||||
|
||||
// 自動轉 Success: 若機台來撈 B017,代表之前的 reload_stock 指令已成功被機台響應
|
||||
// 同時處理 sent 與 pending 狀態,確保狀態機正確關閉
|
||||
\App\Models\Machine\RemoteCommand::where('machine_id', $machine->id)
|
||||
->where('command_type', 'reload_stock')
|
||||
->where('status', 'sent')
|
||||
->update(['status' => 'success', 'executed_at' => now()]);
|
||||
->whereIn('status', ['pending', 'sent'])
|
||||
->update([
|
||||
'status' => 'success',
|
||||
'executed_at' => now(),
|
||||
'note' => __('Inventory synced with machine')
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'code' => 200,
|
||||
'data' => $slots->map(function ($slot) {
|
||||
return [
|
||||
'slot_no' => $slot->slot_no,
|
||||
'product_id' => $slot->product_id,
|
||||
'stock' => $slot->stock,
|
||||
'capacity' => $slot->capacity,
|
||||
'price' => $slot->price,
|
||||
'status' => $slot->status,
|
||||
'tid' => $slot->slot_no,
|
||||
'num' => (int)$slot->stock,
|
||||
'expiry_date' => $slot->expiry_date,
|
||||
'batch_no' => $slot->batch_no,
|
||||
// 保留原始欄位以供除錯或未來擴充
|
||||
'product_id' => $slot->product_id,
|
||||
'capacity' => $slot->max_stock,
|
||||
'status' => $slot->is_active ? '1' : '0',
|
||||
];
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* B710: Sync Timer status (Asynchronous)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user