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 張」的資料,驗證五筆事件皆出現、時間序正確、三種事件類型可區分。

出自 proposal

Edge Cases

  • 匯入前的使用紀錄查不到:匯入進來的卡券只帶了「還剩幾次」,舊系統在那之前的使用時間無法重建。畫面需說明「以下只包含匯入之後的紀錄」
  • 已刪除卡券的異動紀錄:卡券本身從有效清單消失,但其歷史事件仍應保留於紀錄中(否則顧客無從得知它曾存在又被刪除)
  • 同一天多筆事件:需顯示到時分,不能只到日期
  • 卡券被解綁(Unbind)而非刪除:依 2026-08-23 決議不對顧客顯示。但解綁會讓該卡券脫離這位顧客名下,若顧客的卡券清單因此少一張卻無對應事件,前端需另外處理此情境
出自 proposal

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 決議): 本功能為獨立頁面,與「開卡記錄」頁並存,不合併
出自 proposal

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 本來就是逐次記錄),待確認