P1

US-1:客戶查看純淨的開卡記錄

exclude-binding-from-customer-issuances

As a 已登入的客戶, I want 查看我的「開卡記錄」頁面、清單只包含真實的開卡事件(不含綁卡), So that 我能清楚知道我是怎麼取得每張卡的、不會被綁卡記錄混淆「我買了什麼」的認知。

Acceptance Scenarios

  • WHEN 客戶開啟「開卡記錄」頁,THEN 清單只顯示「開卡」類型事件,綁卡事件不出現
  • WHEN 客戶歷史含有混合的開卡 + 綁卡記錄,THEN 開卡記錄頁仍只顯示開卡部分
  • WHEN admin/designer 透過既有查詢介面取得記錄,THEN 仍可看到完整資訊(綁卡不被誤過濾)

Independent Test

以已登入客戶身分呼叫「我的開卡記錄」查詢介面,驗證 ① 回應內不含任何綁卡事件 ② 同帳號的綁卡記錄仍可(若有設計)透過其他入口取得 ③ admin/designer 既有查詢介面回應筆數與本變更前一致。

出自 proposal

Edge Cases

  • 客戶歷史完全只有綁卡記錄:開卡記錄頁顯示「無記錄」提示(非錯誤、非空白畫面)
  • 客戶歷史完全只有開卡記錄:正常顯示、無任何過濾副作用
  • 資料層未來新增第三種來源(如 PROMOTIONAL gift card):本變更不預先處理,依 Constitution P1 留給 cockatiel plan 階段定義語意
出自 proposal

Functional Requirements

  • FR-001: 客戶身分執行「開卡記錄」查詢時,回應結果不得包含綁卡來源的事件
  • FR-002: 變更不得影響 admin/designer 透過既有查詢介面取得完整資料(含綁卡)的能力
  • FR-003: 過濾邏輯需發生在後端(FR-001 的保證),前端不依賴 client-side filtering,以確保 mobile / 其他 client 行為一致
出自 proposal

Open Questions

2026-08-22 由 Jacky 答覆(Ci 轉述)。決議彙整見 docs/grooming/2026-08-22-admin-console-open-questions-resolved.md

  • 方向衝突:顧客要看到卡券增加/使用/刪除,與本 change「排除綁卡」是否矛盾2026-08-23 Jacky 確認:不矛盾,本 change 成立。「開卡記錄」頁維持只顯示真實開卡;顧客的卡券異動歷程是另一個獨立頁面,由 customer-voucher-activity-log 承接
  • NEEDS CLARIFICATION: 過濾邏輯具體實作(既有 endpoint 加 query param vs 新增專屬客戶端 endpoint)由 cockatiel /prospec-plan 階段拍板,本 spec 不規定。
  • WARN: owl prospec/ai-knowledge/_index.md 模組索引為空(owl 設計上不持有 code)— Related Modules 段落來自跨 submodule 手動參照、非自動匹配。已記錄為 prospec 上游 issue 候選。