專案

一般

配置概況

動作

Feature #1397

進行中

[功能開發] LIFF DriverState、離峰充電與 Remote Operation 狀態契約重構

是由 陳國瑋5 天 前加入. 於 約 15 小時 前更新.

狀態:
In Progress
優先權:
Normal
被分派者:
開始日期:
2026-08-02
完成日期:
完成百分比:

50%

預估工時:
(總計: 0.00 小時)

概述

目標

依 2026-07-29 完成審查的 DriverState/公私樁/離峰充電需求,重構 Branch/HQ API 與 LIFF 的端到端狀態契約,修復 raw OCPP status、排隊、長期離峰模式與實際車主操作語意不一致的問題。

核心範圍

  • PUBLIC/PRIVATE Connector 行為差異。
  • 手動充電與長期離峰充電。
  • OFF_PEAK_WAITING/QUEUED/PREPARING/CHARGING/FINISHING 等車主狀態。
  • Semantic actions 與 Command API authoritative guard。
  • RemoteStart/RemoteStop operation 持久化及服務重啟還原。
  • Current off-peak window suppression。
  • WebSocket initial snapshot、斷線與 stale action 防護。
  • Branch 提供完整 API contract,HQ passthrough,LIFF 依契約實作。

規格附件

本 ticket 應附上兩份內容對等的規格:

  1. redmine-1397-driver-state-offpeak-requirements-rev-20260731.md(英文修訂版,附件 #1102)
  2. redmine-1397-driver-state-offpeak-requirements-zh-TW-rev-20260731.md(繁體中文修訂版,附件 #1103)

附件為本主 ticket 與兩張子 ticket 的共同需求基準;實作若需改變產品行為,應先回到主 ticket 更新規格。

子任務

  • Backend:Branch/HQ API、schema、scheduler、OCPP operation、授權與測試。
  • Frontend:LIFF DriverState/actions、off-peak switch、WebSocket-only detail 與 modal/斷線行為。

不在本 ticket

  • Charge Group 刪除 guard:#1395。
  • PUBLIC slot 設定 guard 與 runtime slots==0 防線:#1396。

完成條件

  • BE 與 FE 子 ticket 均完成各自測試與交付。
  • API contract、OpenAPI types、WebSocket payload 與畫面行為一致。
  • 規格列出的 P0/P1 regression 與適用 E2E cases 通過。
  • 主 ticket 完成跨服務驗收後才可結案。

檔案

redmine-1382-driver-state-offpeak-requirements.md (25.5 KB) redmine-1382-driver-state-offpeak-requirements.md English requirements specification 陳國瑋, 2026-07-29 12:11
redmine-1382-driver-state-offpeak-requirements-zh-TW.md (24.4 KB) redmine-1382-driver-state-offpeak-requirements-zh-TW.md 繁體中文需求規格 陳國瑋, 2026-07-29 12:11
redmine-1397-driver-state-offpeak-requirements-rev-20260731.md (31 KB) redmine-1397-driver-state-offpeak-requirements-rev-20260731.md English requirements revision (2026-07-31); supersedes attachment #1100. 陳國瑋, 2026-07-31 03:59
redmine-1397-driver-state-offpeak-requirements-zh-TW-rev-20260731.md (29.7 KB) redmine-1397-driver-state-offpeak-requirements-zh-TW-rev-20260731.md 繁體中文需求修訂版(2026-07-31);取代附件 #1101。 陳國瑋, 2026-07-31 03:59
redmine-1397-liff-manual-e2e-test-plan-zh-TW.md (25 KB) redmine-1397-liff-manual-e2e-test-plan-zh-TW.md 2026-07-31 LIFF 人工 E2E 測試計畫:Ken 環境、公私樁切換、離峰/queue/operation lifecycle、證據與還原步驟 陳國瑋, 2026-07-31 10:11

子任務 4 (3 進行中1 已結束)

Feature #1398: [Backend] 實作 DriverState、離峰排程與 Remote Operation lifecycleIn Progress陳國瑋2026-08-02

動作
Bug #1403: [Backend Bug] Semantic command dispatch 成功後因 transaction snapshot 誤回 409Resolved陳國瑋2026-08-02動作
Feature #1399: [Frontend] LIFF 串接 DriverState actions 與 WebSocket 即時狀態Resolved鍾正剛2026-08-02

動作
Bug #1405: [Frontend Bug] LIFF connector 狀態 badge 顯示 driverState.code 而非中文文案Rejected鍾正剛2026-08-02動作

是由 陳國瑋5 天 前更新

  • 子任務 #1398 已新增

是由 陳國瑋5 天 前更新

  • 子任務 #1399 已新增

是由 陳國瑋3 天 前更新

已上傳 2026-07-31 修訂版中英文需求文件,取代既有附件 #1100/#1101(舊附件保留供追溯)。

本次修訂同步 #1398/#1399 已確認內容:driverState 僅使用 actions[]、統一語意 command API、operationId 與指定使用者的 operationResult、初始快照不重播 terminal result、RemoteStop 30 秒 deadline,以及 RemoteStart 沿用各廠牌既有等待時間並加 30 秒事件對帳寬限。

是由 陳國瑋3 天 前更新

是由 陳國瑋3 天 前更新

需求確認 Gate:Ken 已於 2026-07-31 確認附件 #1102(英文)與 #1103(繁中)為正式需求基準。Backend #1398 現進入 implementation plan 階段;計畫取得明確核准後才開始修改業務程式碼。

是由 陳國瑋3 天 前更新

2026-07-31 E2E 暫停點與後續人工驗收安排

本輪先完成 #1398 Backend 在 Ken Branch/docker1 HQ staging 的安全 Smoke/API/WebSocket contract 驗證,已執行 6 案且全部 PASS;但尚未由 LIFF 操作實體 RemoteStart/RemoteStop、私樁離峰與多 session,因此整體仍為 PARTIAL,不視為完整 E2E 通過。

已附上附件 #1106:
redmine-1397-liff-manual-e2e-test-plan-zh-TW.md

附件是下一輪正式人工 E2E 的執行基準,內容包含:

  • 從 LIFF Connector list/detail 開始的 16 個人工案例。
  • Ken 環境 CP001-001/CP001-002 的實際基線。
  • 以兩支 CloudLink Connector 切換 PUB、PRI-0、PRI-1,覆蓋公樁、私樁、零 slot 排隊與一個 private slot 實際充電。
  • test-only Charge Group/tariff fixture、操作前安全檢查、DB/log/WebSocket/硬體證據。
  • OFF_PEAK_WAITING、QUEUED、PREPARING、CHARGING、FINISHING、timeout、current-window suppression、targeted operationResult、重啟恢復。
  • 測後完整還原步驟。

下一步:等待 #1399 Frontend 完成並部署 LIFF 測試版後,再由 Ken/Ryan/BE observer 依附件 #1106 執行。正式執行結果另建 Test Run report;未執行案例不得預先標 PASS。

是由 陳國瑋約 16 小時 前更新

  • 狀態New 變更為 In Progress
動作

匯出至 Atom PDF