Feature #1399
是由 陳國瑋 於 約 24 小時 前更新
## h2. 目標
依父項 #1397 及其英文/繁體中文規格附件,完成 LIFF 對新版 DriverState、semantic actions、長期離峰充電與 WebSocket 即時狀態契約的串接。 即時狀態契約的串接。附件內容為本子任務的需求與驗收基準。
附件內容為本子任務的需求與驗收基準。
## h2. 實作範圍
* BE OpenAPI contract 完成後重新產生 types。畫面依據 `driverState.title`、`description`、`actions` types,畫面以 driverState.title、description、actions 與 semantic action code 呈現,不自行由 raw connector status 重建業務狀態。
* `PREPARING` 顯示「準備中」,並停用重複開始操作。 PREPARING 顯示「準備中」並停用重複開始;FINISHING 顯示「停止中」並停用重複停止。
* `FINISHING` 顯示「停止中」,並停用重複停止操作。
* `OFF_PEAK_WAITING` OFF_PEAK_WAITING 與 `QUEUED` 都提供「取消排隊」主要操作,但必須透過 QUEUED 都提供「取消排隊」主要操作,但透過 action code 呼叫正確 command,不得以按鈕文字判斷操作。 command,不以按鈕文字判斷操作。
* `PUBLIC` PUBLIC Connector 不顯示離峰 switch;此項顯示差異保留在 switch;這項顯示差異保留在 FE。
* `PRIVATE` PRIVATE Connector 的離峰 switch 保持可點擊。送出後以 保持可點擊,送出後以 API authoritative response 判斷成功,或顯示不允許原因,不在 決定成功或顯示不允許原因,不在 FE 複製完整 business matrix。
* 在離峰 `CHARGING` 時,不允許直接關閉 CHARGING 時不允許直接關閉 off-peak switch;停止本輪充電時需顯示確認 modal。
* 確認停止後,本次 switch;停止本輪充電時顯示確認 modal。確認停止後,本 current off-peak window 不再自動充電;若使用者反悔,需先切換為 OFF,再切換為 不再自動充電;若使用者反悔,需先 OFF 再 ON 重新排程。
* Start/Stop/Off-Peak command 使用 `operationId`/idempotency contract,並處理以下結果:
* 結構化 `403`/`409`
* `Rejected`
* timeout
* 暫態失敗訊息 operationId/idempotency contract,處理結構化 403/409、Rejected、timeout 與暫態失敗訊息。
* Connector 詳細頁只使用 WebSocket initial snapshot 取得 connector info:
* 不再額外呼叫 info,不再額外呼叫 detail REST API
* 不進行輪詢
* 不使用 API、不輪詢,也不以 REST 作為斷線 fallback 作斷線 fallback。
* 初次 WebSocket 連線失敗時,只進行一次短暫重連;若仍失敗,則退回列表並顯示 連線失敗時只做一次短暫重連;仍失敗則退回列表並顯示 modal。
* 已連線後發生斷線時:
* 立即停用舊 已連線後斷線時,立即停用舊 snapshot 的 `driverState.actions`
* 不得使用 driverState.actions,不得用 stale actions 執行 Start、Stop 或 Off-Peak
* 只進行一次短暫重連
* 重連失敗時,退回列表並顯示 modal
* 重連成功後,必須收到 Off-Peak;短暫重連一次,失敗則退回列表並顯示 modal。重連後必須收到 fresh snapshot 才能恢復操作 才恢復操作。
* 補齊必要的 loading、pending、confirmation、error 補齊必要 loading/pending/confirmation/error modal 與重連狀態,避免重複點擊與狀態倒退。
## h2. 驗收重點
* `PUBLIC`/`PRIVATE`、`MANUAL`/`OFF_PEAK` PUBLIC/PRIVATE、MANUAL/OFF_PEAK 的 switch、主要按鈕與 modal 行為符合 #1397 附件 matrix。
* CloudLink/Fortune 在「先插槍、尚未按開始」時,仍顯示正確的可開始操作;只有真正送出且尚未終結的 RemoteStart,才顯示 `PREPARING`/「準備中」。 在「先插槍、尚未按開始」時仍顯示可開始的正確操作;只有真正送出且未終結的 RemoteStart 才顯示 PREPARING/準備中。
* 離峰開啟成功後,`OFF_PEAK_WAITING` 離峰開啟成功後,OFF_PEAK_WAITING 立即顯示「取消排隊」;建立 Priority 後轉為 `QUEUED`,操作仍為取消排隊。 後轉 QUEUED,操作仍為取消排隊。
* RemoteStart/RemoteStop 失敗時,會向車主顯示本次操作未成功,不會無提示地回到可重複按開始/停止的畫面。 失敗時會向車主顯示本次操作未成功,不會無提示地回到可重複按開始/停止的畫面。
* WebSocket 尚未連上、已斷線或 snapshot 已過期時,使用者不能沿用舊 actions 執行操作。 操作。
* 測試範圍涵蓋:
* 公樁/私樁
* CloudLink/Fortune
* 手動/離峰
* 成功/拒絕/逾時
* 初次連線失敗
* 既有連線中斷 測試涵蓋公/私樁、CloudLink/Fortune、手動/離峰、成功/拒絕/逾時、初連失敗與既有連線中斷。
## h2. 邊界
* API 授權、command 的授權、command 合法性與 operation lifecycle 由 BE authoritative 判斷;FE 僅依 contract 呈現並送出語意化 action。
* Charge Group 與 `PUBLIC` PUBLIC slot 設定問題,分別由 設定問題分別由 #1395、#1396 處理。
返回