P1
US-1:顧客查看卡券異動紀錄
customer-voucher-activity-log
As a 已登入的顧客, I want 查看我名下卡券的完整異動紀錄(增加/使用/刪除), So that 我能自己確認卡券來源、用了幾次、以及為什麼某張卡不見了.
Acceptance Scenarios
- WHEN 顧客開啟「卡券異動紀錄」, THEN 依時間倒序顯示三類事件:卡券增加、卡券使用、卡券刪除
- WHEN 顯示「增加」事件, THEN 只標示「卡券增加」與時間,不區分是門市開卡還是匯入綁定(2026-08-23 決議)
- WHEN 顯示「使用」事件, THEN 標示使用時間與對應的卡券/服務項目
- WHEN 顯示「刪除」事件, THEN 只標示刪除時間,不顯示原因(異動原因屬管理端內部語意,2026-08-23 決議)
- WHEN 卡券被解綁(非刪除), THEN 不產生顧客可見的異動事件(解綁不等於卡券消失,2026-08-23 決議)
- WHEN 顧客沒有任何異動紀錄, THEN 顯示空狀態提示,非空白畫面或錯誤
Independent Test
以測試帳號建立「門市開卡 1 張 + 匯入綁定 1 張 + 使用 2 次 + 刪除 1 張」的資料,驗證五筆事件皆出現、時間序正確、三種事件類型可區分。
Edge Cases
- 匯入前的使用紀錄查不到:匯入進來的卡券只帶了「還剩幾次」,舊系統在那之前的使用時間無法重建。畫面需說明「以下只包含匯入之後的紀錄」
- 已刪除卡券的異動紀錄:卡券本身從有效清單消失,但其歷史事件仍應保留於紀錄中(否則顧客無從得知它曾存在又被刪除)
- 同一天多筆事件:需顯示到時分,不能只到日期
- 卡券被解綁(Unbind)而非刪除:依 2026-08-23 決議不對顧客顯示。但解綁會讓該卡券脫離這位顧客名下,若顧客的卡券清單因此少一張卻無對應事件,前端需另外處理此情境
Functional Requirements
- FR-001: 提供顧客身分可存取的卡券異動紀錄查詢,涵蓋增加、使用、刪除三類事件
- FR-002: 「增加」事件須涵蓋門市開卡與匯入卡券綁定兩種來源,但對顧客不區分來源,一律顯示為「卡券增加」
- FR-003: 事件依時間倒序排列,時間精度至少到分
- FR-004: 顧客僅能查詢自己的紀錄,不得取得他人資料
- FR-005: UI 須明示「匯入前的使用紀錄不在範圍內」,避免顧客誤以為紀錄不完整是系統錯誤
- FR-006(2026-08-23 決議): 刪除的異動原因僅存於管理端稽核紀錄,顧客端 API 不得回傳
- FR-007(2026-08-23 決議): 解綁(Unbind)不列入顧客可見的異動紀錄
- FR-008(2026-08-23 決議): 本功能為獨立頁面,與「開卡記錄」頁並存,不合併
Open Questions
2026-08-23 由 Jacky 逐題答覆。
-
「刪除」事件是否對顧客顯示原因— 不顯示,僅留在管理端內部(見 FR-006) -
「增加」事件是否需要對顧客區分兩種來源— 不區分(見 FR-002) -
解綁(Unbind)是否對顧客顯示— 不顯示。Jacky:「解綁顧客的卡券不會消失,只有刪除才會消失」(見 FR-007) -
本功能是獨立頁面還是併入「開卡記錄」頁— 獨立頁面,與「開卡記錄」並存(見 FR-008) - NEEDS CLARIFICATION(答覆與現況不符,需再確認): 「使用」的粒度。Jacky 回覆「這目前已經做好的功能不用調整」,但查證後顧客端的使用紀錄功能並不存在——
- raven 顧客卡券頁確實寫了呼叫邏輯,但呼叫的
/customers/my/redemptions、/customers/my/activations在後端找不到(cockatiel 只有/customers/search、/my/vouchers、/my/voucher-groups) - 該分頁的 UI 在前端是被註解掉的
- 建議回問:「使用紀錄那個分頁目前是關掉的,後端也還沒有對應 API,你說的『已經做好』是在哪裡看到的?」
- 暫定預設:逐次核銷各一筆(底層 redemption 本來就是逐次記錄),待確認
- raven 顧客卡券頁確實寫了呼叫邏輯,但呼叫的