All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 52s
3.1 KiB
3.1 KiB
B055 API (遠端出貨) 技術規範與執行指南
本文件定義 B055 API 的技術實作規範,用於處理從雲端發起的機台遠端出貨指令及其結果回饋。
1. 業務流程與通訊機制
1.1 指令下發流程
- 指令生成:Cloud 後端(管理者)在
remote_commands表中建立一筆類型為dispense、狀態為pending的指令。 - 心跳通知:在該機台的 B010 回應中,將
status設為85(reload B055)。 - 機台撈取 (POST):機台呼叫 B055 POST API (
/api/app/machine/dispense/{workid}) 取得詳細出貨參數(貨道 ID、指令 ID)。 - 執行與回報 (PUT):機台嘗試出貨後,呼叫 B055 PUT API 回報出貨結果及剩餘庫存。
1.2 數據關聯 (Data Linking)
- 出貨紀錄整合:遠端出貨成功後,系統必須在
dispense_records表中同步存入一筆紀錄,並將source標記為remote(或對應識別),確保後台報表包含所有實體出貨數據。
2. 指令資料定義:使用全域 remote_commands
遠端出貨指令統一存放在 remote_commands 表中,B055 的特定參數將存放於 payload (JSON) 欄位。
| 欄位 | B055 對應說明 | 備註 |
|---|---|---|
id |
執行命令 ID | 用於追蹤單次指令 (POST 回傳) |
payload->slot_no |
貨道 ID | 指派機台出貨的通道 |
status |
執行狀態 | pending/sent/success/failed |
ttl |
指令效期 | 預設 60 秒 |
3. 執行面優化 (Execution Strategy)
- Redis 隊列:由於遠端出貨屬於高優先權操作,待執行指令應快取於 Redis 中,以確保機台呼叫 POST 時能即時回應。
- 異步處理:機台 PUT 回報結果後,系統透過隊列更新 DB 狀態,並根據結果觸發後續邏輯(如扣除庫存、異動日誌)。
4. 欄位定義與對照
| B055 欄位 | 資料庫對應 | 說明 |
|---|---|---|
command_id |
remote_dispense_commands.id |
指令唯一識別碼 |
slot_no |
machine_slots.slot_no |
目標貨道編號 |
5. 業務邏輯細節建議
5.1 指令效期 (TTL)
- 建議設定:60 秒 (1 分鐘)。
- 理由:由於遠端出貨指令由管理員手動發起(通常用於現場故障排除或客訴處理),若機台因網路問題超過一分鐘未拉取指令,該次操作的情境通常已失效,應自動失效以防止後續無預警出貨。
5.2 失敗處理
- 機制:機台回報出貨失敗時,系統僅需記錄結果並在後台顯示異常狀態。
- 處理原則:考量目前僅供管理員手動發起,不需執行自動退款,由管理員依據日誌進行後續手動處理即可。
5.3 安全與權限
- 驗證機制:維持
api_token驗證,不需額外的加密簽名。 - 權限控制:建議在 RBAC 權限系統中,限制僅「高級管理員」或「維修主管」具備發起遠端出貨的權限。
6. 待確認事項 (已結案)
所有關鍵決策已於 2026-03-12 完成確認。