diff --git a/.agents/skills/api-technical-specs/SKILL.md b/.agents/skills/api-technical-specs/SKILL.md index 41bc9c7..7dea6c2 100644 --- a/.agents/skills/api-technical-specs/SKILL.md +++ b/.agents/skills/api-technical-specs/SKILL.md @@ -336,6 +336,24 @@ description: 本技能規範定義了 Star Cloud 系統中所有機台 (IoT) 與 | code | Integer | 業務狀態碼 | 404 | | remaining_attempts | Integer | 剩餘嘗試次數 | 3 | +**Response (Failed 400 — 格式錯誤):** + +| 參數 | 類型 | 說明 | 範例 | +| :--- | :--- | :--- | :--- | +| success | Boolean | 請求是否成功 | false | +| message | String | 失敗原因 (code 非 8 位數) | Invalid format | +| code | Integer | 業務狀態碼 | 400 | + +**Response (Failed 429 — 已鎖定):** + +連續錯誤達 5 次後,該機台於鎖定期間 (60 秒) 內的所有驗證請求皆回傳此回應。 + +| 參數 | 類型 | 說明 | 範例 | +| :--- | :--- | :--- | :--- | +| success | Boolean | 請求是否成功 | false | +| message | String | 失敗原因 | Too many attempts. Locked. | +| code | Integer | 業務狀態碼 | 429 | + - **消耗機制**: 出貨完成後,由機台發送 MQTT `finalize` 訊息,並在 `payment_type` 帶入 `7` (來店禮) 完成扣減。 --- diff --git a/config/api-docs.php b/config/api-docs.php index 685d4bd..5d30920 100644 --- a/config/api-docs.php +++ b/config/api-docs.php @@ -695,6 +695,23 @@ return [ 'status' => 'active' ] ], + 'error_responses' => [ + [ + 'code' => 400, + 'message' => 'Invalid format', + 'description' => 'code 非 8 位數或缺少必填欄位。' + ], + [ + 'code' => 404, + 'message' => 'Invalid or expired code', + 'description' => '代碼不存在、已失效或已過期。回應另含 remaining_attempts (剩餘嘗試次數)。' + ], + [ + 'code' => 429, + 'message' => 'Too many attempts. Locked.', + 'description' => '連續錯誤達 5 次,該機台驗證功能於鎖定期間 (60 秒) 內皆回傳此回應。' + ], + ], 'notes' => '安全性:連續錯誤 5 次將鎖定該機台驗證功能 1 分鐘。消耗流程已遷移至 MQTT (payment_type=7)。' ], ], diff --git a/resources/views/docs/api-docs.blade.php b/resources/views/docs/api-docs.blade.php index d8dc5f2..0162a44 100644 --- a/resources/views/docs/api-docs.blade.php +++ b/resources/views/docs/api-docs.blade.php @@ -328,6 +328,32 @@ @endif + @if(isset($api['error_responses']) && count($api['error_responses']) > 0) +
+

錯誤回應 (Error Responses)

+
+ + + + + + + + + + @foreach($api['error_responses'] as $err) + + + + + + @endforeach + +
HTTP / codemessage說明
{{ $err['code'] }}{{ $err['message'] }}{{ $err['description'] }}
+
+
+ @endif + @if(isset($api['notes']))