專案

一般

配置概況

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 處理。 

返回