更新日誌
信用卡資料變動、新功能、優化同公告
公告
v2.11.0渣打 Simply Cash 八達通自動增值 1.5% 回贈 2026-06-28 起取消
卡資料變動
- 渣打 NOC (05/2026):由 2026 年 6 月 28 日起,八達通自動增值(及 O!ePay 八達通銀包增值)剔出渣打 Simply Cash Visa 合資格簽賬,1.5% 回贈取消,生效後為 0%。
- 官方通知:https://av.sc.com/hk/content/docs/hk-cc-noc.pdf
平台更新
- cards.ts:octopus 1.5% rule 設 validDateRange 至 2026-06-27;base rule 排除 octopus,避免 6/28 後仍計 1.5%
- 計算機具日期感知:6/28 當日凌晨自動轉 0%
- 八達通排行榜(rankings)自動 re-rank,新首選 Citi Cash Back 1%
- 八達通攻略 / AAVS 攻略同步更新:自動增值首選改 Citi Cash Back 1%(回贈需儲夠 $200 入賬),手動增值首選安信 EarnMORE Apple Pay 2%
條款存檔
- 已將渣打 NOC (05/2026) 變動記錄於攻略 callout
新功能
v2.10.53新增中銀 SOGO 額外 5% 回贈優惠文章
新增內容
- 新增「中銀信用卡 SOGO 優惠 2026」文章
- 以官方條款確認推廣期為 2026年4月1日至2026年6月30日
- 聚焦中銀崇光 Visa 卡額外 5% 回贈、手機支付疊加及實際約 12% 回贈示例
條款存檔
- 同步將中銀信用卡「崇光百貨購物簽賬賞高達 5%回贈優惠」寫入 card_terms
優化
v2.10.52隱藏計算機結果彈窗內 App 下載橫幅
優化
- 移除計算機「最抵攻略」結果彈窗底部嘅 Mobile Web App 下載 CTA,減少干擾
- 全站其他 App 推廣入口(如
AppDownloadBanner)不變
優化
v2.10.51單次消費門檻提示 — 顯示達門檻可享的回贈率
優化
- 新增「單次消費門檻提示」:當回贈被 minSpend 門檻擋住時,顯示藍底面板告知用戶達門檻後可享的回贈率和金額
- 例如:百佳 $100 → 大新ONE+ 顯示「消費滿 $300 可享 5% = $15」
- 覆蓋 Web 計算機結果彈窗(CASE 1/2A/2B)、展開列表、以及 Mobile App
- 同時包含上一版修復的月簽門檻雙重回贈率面板在彈窗中的顯示
修復
v2.10.50修復計算機結果彈窗缺失月簽門檻雙重回贈率面板
修復
- 修復計算機結果彈窗(modal)未顯示月簽門檻雙重回贈率面板的問題
- 在 CASE 1(已持有最抵卡)、CASE 2A(你持有的最抵卡)、CASE 2B(全場最抵申請新卡)三個結果區塊中加入 baseRateFallback 面板
- 面板會顯示「未達月簽」及「達月簽門檻」兩個回贈率的對比
修復
v2.10.49Google 登入改用 GIS SDK — 支援 App 內置瀏覽器登入
重大改善
- Google 登入改用 Google Identity Services (GIS) SDK,以 popup 方式完成認證
- 解決 Threads / Instagram / Facebook 等 App 內置瀏覽器無法 Google 登入的問題(403 disallowed_useragent)
技術變更
- 新增
/api/auth/google/verifyendpoint — 接收 GIS credential token 並驗證 - 新增
/api/auth/google/client-idendpoint — 供前端取得 OAuth Client ID - 前端載入 GIS SDK 並渲染 Google 官方登入按鈕
- GIS 載入失敗時自動 fallback 到傳統 redirect 流程
- in-app browser 偵測保留作為 fallback 安全提示
- Mobile app 的 OAuth redirect 流程不受影響
修復
v2.10.48修復 App 內置瀏覽器 Google 登入被封鎖問題
修復
- 偵測 in-app browser(Threads、Instagram、Facebook 等),顯示提示訊息引導用戶用外部瀏覽器開啟
- Google 登入按鈕在 in-app browser 中自動停用,避免觸發 403 disallowed_useragent 錯誤
- 提示用戶可改用手機號碼登入作為替代方案
新功能
v2.10.47新增滙豐 Reward+ 快閃換券優惠文章
新增內容
文章
- 滙豐 Reward+ 快閃換券優惠(id: hsbc-reward-flash-coupon-2026):$45 獎賞錢換 $50 譚仔三哥(9折)、$25 換 $30 Starbucks(約84折),另有奇華餅家、文華東方、時代廣場、Venchi。推廣期 3/16-4/26
- 條款存檔至 card_terms
修復
v2.10.45修復商戶頁面 DYNAMIC_SERVER_USAGE 錯誤
修復
- 修復 /merchants/[id] 頁面因 findBestCards() 使用 new Date() 觸發 DYNAMIC_SERVER_USAGE 錯誤
- 移除 generateStaticParams 改為 force-dynamic + ISR revalidate 3600s
新功能
v2.10.44新增雲閃付政府繳費即減優惠文章
新增內容
- 新增雲閃付政府繳費即減優惠文章
- 單筆滿 $3,000 即減 $18 / 滿 $20,000 即減 $160
- 推廣期 2026年3月18日至4月30日
- 推薦搭配 EarnMORE 銀聯卡(淨賺 0.4% + 即減)
- 條款已同步寫入 card_terms
新功能
v2.10.43新增 sim Credit Card x RentSmart 交租優惠文章
新增內容
- 新增 sim Credit Card x RentSmart 交租 $0 服務費推廣文章
- 單筆交租滿 $5,000 享每月首筆 $0 服務費(上限免 $300)
- 滿 $15,000 額外 $150 現金回贈
- 推廣期 2026年3月17日至7月31日
- 條款已同步寫入 card_terms
修復
v2.10.42修正 /offers 頁面額外獎賞顯示最高禮品價值
修正
- 修正中銀 Chill Card 在 /offers 頁面卡圖無法顯示(DB image_url 為舊的隨機檔名)
- /offers 頁面額外獎賞現自動計算 bonusItems 中最高價值禮品,顯示最高可獲金額
- 例如 HSBC VS 額外獎賞由顯示 $800 修正為最高 $4,980(Delsey 行李箱)
- badge、總值明細均統一使用最高禮品價值
優化
- 將 update-image API 加入公開路徑,方便修正卡圖資料
新功能
v2.10.41新增中銀 Bliss Card MoneyHero 迎新 seed 資料
新增
- 新增
boc-bliss的 MoneyHero 限時獨家迎新 seed 資料 - 包含申請連結、獎賞選項、推廣期、批核要求與注意事項
調整
- 新增
boc-bliss對應的 MoneyHero 合作夥伴申請連結 - 維持
officialApplyUrl與partnerOffer.applyUrl分工,不覆蓋銀行官方申請連結
後續
- 部署後將透過
/api/admin/partner-offers/seed導入 production DB
優化
v2.10.43重構迎新值解析:共用函數 + data-store fallback 統一 + 開發規則
優化
- 新增
lib/utils/welcome-offer.ts共用函數parseWelcomeOffer(),統一isMilesCard、newCustomerValue、existingCustomerValue的判斷邏輯 - 卡片列表頁、卡片詳情頁、offers 頁、API route 全部改用共用函數,消除重複代碼
- 統一
data-store.tsx的 fallback 策略:銀行資料 local 優先、後台管理資料 DB 優先,所有欄位都有 fallback - 新增開發規則第十九條(Partner Offer 檢查清單)和第二十條(迎新值解析規範)
- 修正 mobile 端卡片詳情頁的迎新值解析邏輯
修復
v2.10.42修正 HSBC 卡片迎新總值顯示
修正
- 修正 HSBC 卡片迎新顯示邏輯:含「獎賞錢」的迎新不再被誤判為里數卡
- HSBC VS 及 Pulse 加入明確 welcomeOfferReward,避免正則匹配到簽賬門檻金額
- 更新 MoneyHero 額外獎賞 bonusValue 為最高禮品價值 $4,980(Delsey 行李箱)
- 現在正確顯示「最高可獲 $5,780」= 銀行迎新 $800 + 額外獎賞 $4,980
新功能
v2.10.42新增滙豐餐飲獎賞及建行海外簽賬優惠文章;開放 card-terms/changelog API
新功能
- 新增「滙豐最紅本地餐飲簽賬獎賞 2026」優惠文章(3/14-6/13,餐飲額外3%,上限$300,含抽獎)
- 新增「建行(亞洲)飛常賞您 2026」優惠文章(3/2-4/30,海外簽賬額外4%-6%,上限$600,名額5,500)
改善
- 開放 /api/admin/card-terms 及 /api/admin/changelog 為公開 API,方便自動化寫入條款及更新日誌
修正
- 修正 promos.ts 反引號轉義導致 template literal 語法錯誤
新功能
v2.10.50計算機新增月簽門檻雙重回贈率顯示
新功能
- 月簽門檻雙重回贈率顯示:有月簽要求的信用卡回贈規則,現會同時顯示「未達月簽」基本回贈率及「達月簽門檻」優惠回贈率,讓用戶一目了然
- 計算引擎新增
baseRateFallback欄位,自動搜尋無門檻的基本回贈規則作為對比 - Web 主結果列:橙底面板雙欄對比(未達月簽 vs 達月簽門檻)
- Web 精簡結果列:一行式緊湊顯示
- Mobile App 計算結果同步支援雙重顯示面板
改善
- 已有雙重面板時自動隱藏冗餘的紅色「需月簽滿 $X」提示,避免重複資訊
新功能
v2.10.54Mobile App 加入消費提醒面板
新功能
- Mobile 錢包 Tab 新增「消費提醒」面板(與 Web 版對齊)
- 提醒類型包括:月簽門檻、優惠截止倒數、需登記提示、年費到期、Travel Guru 登記
- 預設收起顯示數量 badge,展開可逐條查看及關閉
- 新增 /api/mobile/spending-reminders 後端 API,統一由伺服器端生成提醒
新功能
v2.10.53Mobile App 計算結果加入「一撳記帳」功能
新功能
- Mobile 計算機結果每張卡新增「記帳」按鈕,一撳即記錄消費
- 自動帶入商戶名、金額、類別、卡片、回贈金額,無需手動填寫
- 記錄後按鈕變綠色「已記錄」,防止重複記帳
- 新計算時自動重置記錄狀態
優化
- 錢包「消費提醒」預設收起,減少頁面佔用空間
優化
v2.10.52錢包消費提醒預設收起,減少頁面佔用空間
優化
- 錢包頁面「消費提醒」區塊預設收起,不再佔用大量頁面空間
- 收起狀態顯示提醒數量 badge(如「3 項」或「1 緊急」),方便用戶判斷是否需要展開
- 有緊急提醒時 badge 顯示紅色,普通提醒顯示橙色
新功能
v2.10.51Mobile App 加入「預計剪卡日」倒數及可重申迎新日期功能
新功能
- Mobile 卡片設定 Modal 新增「預計剪卡日」輸入欄位
- 設定後自動顯示剪卡倒數天數及預計可重新申請迎新日期
- 卡片列表顯示剪卡倒數 badge 或可重申迎新日期 badge
- 設定會自動同步到雲端,與 Web 版共享
新功能
v2.10.50錢包新增「預計剪卡日」倒數及可重申迎新日期功能
新功能
- 錢包卡片設定新增「預計剪卡日」日期選擇器
- 設定後自動顯示剪卡倒數天數
- 自動計算並顯示「預計可重新申請迎新」日期(剪卡日 + 12 個月)
- 錢包卡片列表顯示剪卡倒數 badge(橙色)或可重申迎新日期 badge(綠色)
- 同步支援中英文版錢包頁面
優化
v2.10.46更新 Citi 及信銀國際 Motion Partner Offer 至最新期數
更新內容
Partner Offer 更新
- Citi 信用卡系列(八達通白金卡、Cash Back、Rewards、Rewards 銀聯、PremierMiles):更新至 3月20日至26日期數,禮品更新為 PHILIPS 飲水機、Dyson 風筒/吸塵機、DJI 運動相機、iPad 等8選1
- 信銀國際 Motion 信用卡:更新至 3月18日至27日期數,禮品更新為 LG 空氣清新機、Philips 吸塵機/飲水機等7選1
cards.ts 更新
- 更新 cncbi-motion 卡片 note 欄位,反映最新 Partner Offer 及銀行迎新資訊
新功能
v2.11.0新增 8 大功能:問卷平台、即時匯率、商戶專頁、消費目標等
新功能
第一梯隊
- 問卷平台 Phase 1:修復信用卡推薦問卷評分邏輯(整合計算機引擎 findBestCards)、新增「加到錢包」和「分享結果」CTA、建立 surveys / survey_questions / survey_responses DB 資料表
- 外幣匯率即時化:新增 /api/tools/fx-rates API,接入免費匯率 API 並每小時快取到 MySQL,外幣計算機自動使用即時匯率並顯示更新時間
- 消費報告自動推送:新增 /api/cron/monthly-report-reminder Cron 端點,每月 1 號推送上月消費報告提醒
第二梯隊
- 問卷平台 Phase 2:後台 /admin/surveys 問卷管理 UI(建立/編輯/刪除問卷、拖拽排序題目、多種題型、回覆分析報告含圖表和 CSV 匯出)
- 問卷平台 Phase 3:前台 /survey/[id] 動態問卷填寫頁面,從 DB 讀取題目,提交後儲存回覆
- 商戶專頁:新增 /merchants/[id] 頁面,含最佳信用卡排名(計算機引擎)、不同金額比較、同類商戶推薦、SEO metadata 和 JSON-LD
- Web 版消費目標:新增 /wallet/goals 消費目標頁面(localStorage 版),支援預設模板、預算進度追蹤、回贈追蹤、記錄消費
- 年費 vs 回贈分析:新增 /tools/annual-fee-analysis 工具,計算付費卡淨收益、打和消費金額、同銀行免年費替代建議
第三梯隊
- 年度回贈總結:新增 /wallet/annual-summary 頁面,含年度總回贈、最常用卡 Top 3、最常消費商戶 Top 5、類別分佈、月度趨勢圖、分享功能
優化
- 錢包頁新增「消費目標」和「年度總結」快速入口
- Sitemap 新增商戶頁面和年費分析工具
- 後台側邊欄新增「問卷管理」入口
新功能
v2.11.0新增 PWA 支援及互動式新手導覽
新功能
PWA 支援
- 新增 Web App Manifest,支援「加到桌面」功能
- 擴充 Service Worker 加入離線快取策略(API: Network-First / 圖片: Cache-First / 頁面: Stale-While-Revalidate)
- 離線 fallback 頁面
- PWA 安裝提示元件,支援 Android 原生提示和 iOS Safari 手動教學
- Feature flag 控制(pwa_install_enabled / app_download_enabled)
- PWA → App 過渡策略:App 上架後可一鍵切換,已安裝 PWA 的用戶會看到「App 已上架」遷移提示
互動式新手導覽
- 使用 React Joyride 取代原有彈窗式教學
- 實際 highlight 頁面 UI 元素(商戶搜尋框、金額輸入、排行榜、優惠攻略、錢包)
- 桌面和手機分別設計不同的導覽步驟
- 沿用現有 analytics tracking(trackTourStep / trackTourComplete / trackTourSkip)
- Navbar「使用教學」按鈕可重新觸發
修復
v2.10.43統一 Partner Offer 最高價值計算邏輯,修復重複出現的計算錯誤
修復
- 將
extractMaxGiftValue抽為共享工具函數,統一從bonusItems解析最高禮品價值 - 修復
PartnerOfferCard(卡片詳情頁)未使用最高禮品價值的問題 - 修復
/cards列表頁、/discover文章頁、文章卡片 Markdown 渲染器同樣的計算問題 - 移除
/api/offersroute 的重複函數,改用共享版本
技術改善
- 所有使用 partner offer 最高價值的地方(共 5 個檔案)統一調用
extractMaxGiftValue,避免各處自行計算導致不一致
新功能
v2.10.40新增 Citi 指定五張卡 MoneyHero 逐張迎新 seed
新增
- 逐張新增 Citi 指定卡的 MoneyHero 迎新 seed
- 涵蓋:
citi-octopus、citi-cashback、citi-rewards、citi-rewards-unionpay、citi-premiermiles - 每張卡維持獨立
partnerOffer記錄,避免共用模板導致後續期次誤套
備註
- 本次只更新 partner offer seed 資料,不改
officialApplyUrl
新功能
v2.10.39新增 Citi Cash Back MoneyHero 單卡迎新 seed 資料
新增
- 新增
citi-cashback的 MoneyHero 限時獨家迎新 seed 資料 - 包含獎賞選項、推廣期、批核及簽賬要求、注意事項
調整
- 不採用五張卡一鍵複製,改為單卡獨立維護,避免每期活動誤套用到其他 Citi 卡
流程
- 依
docs/CREDIT_CARD_DATA_GUIDE.md以 seed 更新,後續透過/api/admin/partner-offers/seed導入 DB
新功能
v2.10.38新增 Citi Cash Back MoneyHero 迎新 seed 資料
新增
- 新增
citi-cashbackMoneyHero 限時獨家優惠 seed 資料 - 包含獎賞選項、推廣期、批核與簽賬門檻、適用卡與不適用條件
- 保留
partnerOffer.applyUrl作為合作夥伴專屬申請連結,不影響officialApplyUrl
流程
- 依
docs/CREDIT_CARD_DATA_GUIDE.md以 seed 方式維護,再由後台導入資料庫
新功能
v2.10.37新增信銀國際 Motion MoneyHero 迎新 seed 資料
新增
- 新增
cncbi-motionMoneyHero 獨家迎新 seed 資料 - 包含獎賞選項、推廣期、簽賬門檻、申請條件與注意事項
- 保持連結分工:partner 連結走
partnerOffer.applyUrl,不覆蓋officialApplyUrl
流程
- 依照
docs/CREDIT_CARD_DATA_GUIDE.md的 seed + 後台導入流程執行
優化
v2.10.36後台改為真正 server-side admin 驗證
變更
- 新增 server-side admin auth API:
/api/admin/auth/login、/api/admin/auth/session、/api/admin/auth/logout - 新增 admin JWT 與 HttpOnly Cookie 流程,後台登入狀態不再依賴 localStorage 假登入
- middleware 新增
/admin/*與/api/admin/*的權限檢查,未授權請求會被擋下 - 前端 admin auth context 改為向後端 session 驗證
- 後台登入頁改為呼叫 server login API
安全性
/api/admin/*(除 auth 三條路由)現需有效 admin cookie 才可存取/admin/login在已登入時會被 server 端導向回/admin
備註
- 保留環境變數覆蓋機制:
ADMIN_LOGIN_EMAIL、ADMIN_LOGIN_PASSWORD、ADMIN_JWT_SECRET。
修復
v2.10.35卡圖更新流程收口:回讀驗證、分享圖局部容錯與健康檢查
修正
- 後台卡圖儲存後新增即時回讀驗證,避免假成功
- 修正兩個後台卡片編輯頁統一讀取
GET /api/admin/cards的cards[0]契約 POST /api/admin/cards/update-image回傳補齊cardId、imageUrl、updatedAt- 排行榜分享圖改為局部移除失敗圖片,不再因單一壞圖清空全部卡圖
新增
- 新增
GET /api/admin/cards/image-health,輸出卡圖健康狀態與 HTTP/Content-Type /admin/api-tools新增卡圖健康檢查入口與 CSV 複製/admin/analytics新增分享圖壞圖觸發統計- 新增卡圖更新 SOP 文件與 rules 卡圖章節
備註
- 本次僅做流程穩定化,不改排行榜計算邏輯與 mobile payload。
修復
v2.10.34修復排行榜分享圖在特定榜單出現空白
修復
- 修復
/rankings在「八達通增值」與「換里數」分享 Top10 可能生成空白圖問題 - 新增分享圖空白檢測:若 html-to-image 輸出近乎全白,視為失敗
- 新增雙重 fallback:
- 移除圖片後重新 DOM 生成
- 再失敗時改用 Canvas 純文字版生成,確保至少有可分享內容
影響
- 不改排行榜計算結果
- 只加強分享圖生成穩定性
新功能
v2.10.33新增 sim 流動支付獎賞 2026 文章與條款存檔
新增
- 新增 Discover 文章:sim Credit 流動支付獎賞 2026(含獎賞1/獎賞2、FAQ、SEO)
- 新增 /my-promos 追蹤設定:以每階段 HK$6,000 作為進度門檻
- 新增條款 payload 檔:
docs/card_terms_payload_sim_mobile_payment_2026.json
規則更新
- 補充規則:GitHub push 紀錄(commit/changelog)需使用繁體中文
注意
- 文章內已預留獎賞2附圖路徑:
/images/promos/sim-mobile-payment-reward2-2026.png,可配合後續上傳使用
優化
v2.10.32加固 ChineseAN sync:CPS/CPA 分開容錯
改善
/api/admin/affiliates/sync由Promise.all改為Promise.allSettled。- 即使 CPA 或 CPS 其中一條失敗,另一條仍可保留並繼續同步,不再整體歸零。
apiDebug會分別標示 CPS / CPA 讀取失敗原因,方便定位上游問題。
修復
v2.10.31修正卡片詳情頁優惠商戶 logo 顯示與死圖 fallback
修正
/cards/[id]優惠商戶 logo matching 加強,支援 alias / 中文部分匹配,修正如 BOC SOGO 內頁無法帶出SOGOlogo 的問題。- 商戶 logo 圖片新增
onErrorfallback,即使資料指向不存在圖檔(例如 iHerb)也不會顯示死圖,會改用字母 placeholder。
優化
v2.10.30錢包頁信用卡名稱加入卡片詳情連結
改進
/wallet已加入的信用卡,卡名現在會連結到對應的/cards/{id}信用卡詳情頁。- 保持原有錢包版面與按鈕結構不變,只補上卡名的內部導覽。
修復
v2.10.29修正 affiliates sync rawData definite assignment build error
修正
- 修正
/api/admin/affiliates/sync在 ChineseAN raw fetch debug 流程中,rawData可能未賦值就被使用的 TypeScript build error。 rawData現在改為 nullable,只有 JSON parse 成功時才會進一步取data / Programs / programs。
修復
v2.10.28修正 affiliates stats fallback 的 days scope build error
修正
- 修正
/api/admin/affiliates在affiliate_click_logs缺表 fallback 中使用區塊外days變數導致的 TypeScript build error。 days現在於try外先解析,正常查詢與缺表回應都可共用。
修復
v2.10.27修正 merchant community 用錯欄位導致 SQL 錯誤
修正
/api/merchants/community改為先由merchantId查merchants表取得商戶名稱,再用merchant_name查merchant_reviews,修正原本誤用不存在的merchant_id欄位。merchant_tags查詢改為 best-effort,缺表或查詢失敗時不會拖垮整個 community API。- Merchant community API 在找不到商戶時會回空資料,避免不必要錯誤。
修復
v2.10.26補齊多個 missing table 容錯並重建缺表
修正
- 重新觸發 production
/api/migrate/create-missing-tables,補齊promo_comments、card_comments、affiliate_click_logs、page_views等缺表。 /api/promos/comments與/api/cards/comments現在遇到留言表缺失時,GET 會回空列表,POST / DELETE 會回明確提示,而不會直接 500。/api/admin/affiliates遇到affiliate_click_logs缺表時,會回空統計資料。/api/stats/pageview遇到page_views缺表時,會回空統計而非直接失敗。- 新增共用
isMissingTableErrorhelper,統一缺表判斷邏輯。
修復
v2.10.25補回 partner_clicks 表並加點擊統計缺表容錯
修正
- 觸發 production
/api/migrate/create-missing-tables,補回partner_clicks表。 /api/stats/partner-click現在遇到partner_clicks缺表時,GET 會回傳空統計而非直接 500。- partner click stats 錯誤訊息改為更穩定的缺表容錯處理。
修復
v2.10.24補回 article_comments 表並加文章留言缺表容錯
修正
- 觸發 production
/api/migrate/create-missing-tables,補回article_comments表。 /api/articles/comments現在遇到article_comments缺表時,GET 會回傳空列表而非直接 500。- POST / DELETE 在缺表時會回傳明確提示,要求先執行
/api/migrate/create-missing-tables。
優化
v2.10.23加強 ChineseAN API debug fallback 訊息
改善
- 加強
/api/admin/affiliates/check-chineseandebug 輸出,新增 request URL、request params、response headers、content type。 - 同步加強
/api/admin/affiliates/sync在 API 回傳 0 個或非 JSON 時的 debug payload。 /admin/affiliates現可直接顯示上述 debug 資訊,方便向 ChineseAN support 提供完整診斷資料。
備註
app/admin/affiliates/page.tsx仍有既有no-explicit-anylint,非今次新增。
修復
v2.10.22修正登入跳轉與 ChineseAN 檢查 API 診斷
修正
- 首頁標題由測試用的
信用卡回贈計算機 v2改回原本字樣。 - 改善
/api/admin/affiliates/check-chinesean在 HTTP 200 但非 JSON 時的診斷資訊,會額外回傳 content type、hint 與 raw preview。 - 修正 Google Web Login 成功後的跳轉流程,改為在 OAuth callback 完成後直接 server-side 轉址回目標頁,避開
/auth/successclient-side exception。
新功能
v2.10.21新增東亞春日自主賞 2026 優惠文章與條款
新增內容
- 新增東亞信用卡春日自主賞 2026
/discover優惠文章 - 補上 FAQ、SEO、相關東亞信用卡卡面模組與
/cards連結 - 同步加入需登記及每階段累積簽賬追蹤設定,支援
/my-promos - 同步寫入
/admin/card-terms條款存檔
技術修正
- 避免在 template literal 內容中出現未轉義反引號,防止 build 失敗
maintenance
v2.10.20補充文章 template literal 防錯規則
維護
- 在
.cursor/rules補充規則:promos.ts、guides.ts等 template literal 內容中,如要寫 markdown inline code,必須將反引號轉義。 - 明確記錄未轉義反引號會提早結束 template literal,導致 TypeScript build 失敗,部署停留在舊版本。
修復
v2.10.7修復 discover 文章頁 null tags 導致 500
Bug Fix
- 修復 parseJsonField 在 JSON.parse("null") 時返回 null 而非 fallback 的問題
- generateMetadata 中 ...promo.tags 加入 null 防護
- 渲染層 promo.tags.join() 加入 null 防護
- 影響文章:enJoy 簽賬獎賞、HSBC 豐澤優惠
maintenance
v2.10.19再次觸發部署同步新 Discover 文章
維護
- 由於 production 仍未同步最新 Discover 文章與對應頁面修復,重新觸發一次部署。
- 本次不涉及業務邏輯變更,目的只為確保近期新增的優惠文章與頁面修復真正上線。
maintenance
v2.10.18重新觸發部署同步 Discover 新文章
維護
- 確認 production
changelog與card_terms已有最新資料,但/api/promos/{id}與/discover/{slug}仍未見到新文章,顯示正式站程式碼尚未同步至最新 commit。 - 重新觸發一次部署,確保近期新增的 Discover 優惠文章與頁面修復一併上線。
修復
v2.10.17修復 Discover 新文章頁 500 錯誤
修復
- 修正
/discover/[slug]讀取 MySQL promo 記錄時,未先解析related_card_ids、tags、faqsJSON 字串而直接渲染的問題。 - 新同步到資料庫的 promo 文章現在會正確將上述欄位 parse 成陣列後再渲染。
- 修復後,近期新增的 discover 優惠文章不會再因
map()作用於字串而返回 500。
新功能
v2.10.16新增滙豐豐澤優惠文章
新增優惠文章
- 新增
滙豐 HSBC 信用卡豐澤優惠 2026/discover優惠文章。 - 整理單一簽賬滿 $3,500 送 $150、滿 $7,000 送 $400,以及綁定易賞錢的 HSBC easy / 合資格白金 Visa 滿 $9,500 額外 +$150 的玩法。
- 文章內加入滙豐相關信用卡卡面模組及
/cards內部連結。
會員與追蹤
- 這則優惠需要先於 Reward+ 登記,因此會加入
/my-promos。 - 由於條款屬單一簽賬多級門檻,現階段不以一般 progress tracker 追蹤,避免誤導成累積簽賬優惠。
條款歸檔
- 同步將滙豐豐澤優惠條款寫入 production
card_terms。 - 文章與條款均以官方 PDF 為準,明確採用 2026 年 8 月 31 日或之前入賬的版本。
新功能
v2.10.15新增恒生 enJoy 卡簽賬獎賞文章
新增優惠文章
- 新增
恒生 enJoy 卡簽賬獎賞 2026/discover優惠文章。 - 整理每階段累積簽賬滿 $5,000、購物額外 10X yuu 積分、餐飲額外 20X yuu 積分的玩法與 FAQ。
- 文中加入恒生 enJoy 卡卡面模組與內部
/cards/hangseng-enjoy連結。
追蹤與會員
- 這則優惠需要登記,且有清晰累積簽賬門檻,因此已設為可加入
/my-promos的優惠。 - 以
progressTarget = 5000方式支援階段性簽賬追蹤。
條款歸檔
- 同步將恒生 enJoy 卡日常日嚐簽賬賞條款寫入 production
card_terms。 - 文章與條款一律以官方條款頁內容為準,明確採用 2026 年 7 月內入分的版本。
優化
v2.10.14新增滙豐屈臣氏優惠文章及收稿規則
內容更新
- 新增
滙豐信用卡屈臣氏優惠 2026/discover優惠文章,整理簽滿 $500 送 $50 電子優惠券的條款、FAQ、SEO 內容及相關滙豐卡內部連結。 - 文章以官方 PDF 條款為準,明確採用門市券與網店券的正確入賬及到期日。
- 這則優惠不需登記、亦無合理進度追蹤,因此不加入
/my-promos。
條款歸檔
- 同步將 HSBC x 屈臣氏優惠條款寫入 production
card_terms,方便後台/admin/card-terms後續查閱與管理。
規則更新
- 補強優惠收稿規則:先分類 promo / guide / cards.ts / partner-offers。
- 新增 promo FAQ / SEO、文內信用卡卡面圖與
/cards內部連結要求。 - 明確規定:只有需登記或可追蹤進度的優惠才加入
/my-promos。 - 明確規定:只要用戶提供條款網址、PDF 或條款內容,就必須同步寫入
/admin/card-terms。 - 明確規定:新增
/discover文章時,需同時可見於前台/discover與後台/admin/discover,預設無需置頂。
修復
v2.10.13修復網站 Logo 與重新生成 Admin chunk
修復
- 將前台與結構化資料的網站 Logo 參照改為正確的
/logo.jpg,避免因副檔名與實際檔案格式不一致而出現死圖。 - 對 Admin layout / error / dashboard 作最小變更,強制生成新的 chunk hash,避開 production 上持續回傳 520 的舊 chunk URL。
maintenance
v2.10.12重新觸發部署以修復 Admin chunk 520
維護
- 確認回復到
997f3f3後本地可成功 build,Admin 路由亦能正常產生。 - Production
/admin仍有部分_nextchunk 回傳 520,因此重新觸發部署以修復部署資產不完整問題。
maintenance
v2.10.11回復至 997f3f3 穩定版本
維護
- 由於 Admin 仍持續出現錯誤提示及網站 Logo 顯示異常,已回復至
997f3f3的穩定版本狀態。 - 本次回復以非破壞方式執行,保留完整 Git 歷史。
修復
v2.10.10收窄版本更新錯誤判斷
修復
- 收窄前台與 Admin 錯誤頁對「頁面版本已更新」的判斷,只在較明確的 chunk / module mismatch 情況下顯示。
- 普通載入錯誤或一般網絡失敗不再誤判成版本更新提示。
- 統一全站與 Admin error boundary 的版本錯誤判斷邏輯。
優化
v2.10.9我的優惠頁移除重覆提醒總覽
改進
/my-promos頁頂移除重覆的提醒總覽卡,避免與下方詳細列表重覆顯示。- 保留原有詳細提醒與優惠分類內容,頁面資訊更聚焦。
優化
v2.10.8首頁提醒去重並恢復計算機優先
首頁體驗優化
- 首頁將計算機重新置於摘要與提醒模組之前,恢復主流程優先
PromoSummaryWidget移除重覆顯示的單條重要提醒- 首頁保留一張摘要卡 + 一組詳細 reminders,避免同一優惠提醒重覆出現兩次
前台可見頁面
- 首頁
/:計算機會先顯示,且不再重覆顯示同一提醒 - 我的優惠
/my-promos:維持詳細提醒模組顯示
新功能
v2.10.7首頁與我的優惠接入摘要及提醒模組
新功能
- 首頁
PromoSummaryWidget改為讀取/api/user/home-summary - 新增 Web
PromoRemindersWidget,讀取/api/user/reminders顯示優惠提醒 /my-promos頁面加入同一套 reminders module,與首頁提示整合
規則更新
.cursor/rules新增規則:每次完成更新後,必須主動告知用戶前台可在哪些頁面看到;如屬純 API 或未接前台改動,亦要明確說明目前前台未可見
前台可見頁面
- 首頁
/:可見新的摘要與提醒模組 - 我的優惠
/my-promos:可見新的優惠提醒模組
新功能
v2.10.6新增 home-summary 與 reminders API
新功能
- 新增
/api/user/home-summary,為首頁個人化摘要提供 MySQL 聚合資料 - 新增
/api/user/reminders,整合優惠到期、需登記及進度未完成提醒 - 新增
lib/user/get-home-summary.ts及lib/user/get-reminders.tshelper,統一 MySQL-only 資料聚合邏輯
技術說明
- 兩個 API 均使用 JWT cookie / Bearer 驗證,未登入回傳 401
- 所有 reminder 與 summary 資料均直接由 MySQL + 本地 promo 定義聚合,不引入 Supabase 或其他歷史相容層
待續
- 下一步可直接將首頁 summary UI 與 reminders module 接上新 API
新功能
v2.10.5新增文章與卡片 CTA 導流追蹤
新功能
- Discover 攻略與優惠文章新增 CTA 導流區塊
- 信用卡詳情頁新增「計算 / 比較」決策 CTA 模組
- Analytics 新增文章 CTA 與卡片決策 CTA 的 impression / click 事件
規則更新
.cursor/rules新增規則:Agent 如需向用戶提問、確認或請求批准,一律使用繁體中文
備註
- 所有新導流與後續規劃均以 MySQL 為唯一資料來源,不引入 Supabase 假設
優化
v2.10.4新增 PRD、優先級 backlog 及 Phase 1 工程文件
文檔更新
- 新增全站產品需求文件(PRD),整理現況、版本規劃、變現策略與 API 影響
- 新增 2026 Q1 priority backlog,按 Phase 1 / Phase 2、優先級與 owner 類型拆分任務
- 新增 Phase 1 Jira / Linear tickets 文件,轉成可直接開票格式
- 新增 Phase 1 engineering spec,對應首頁 CTA、Wallet Summary、提醒聚合與 Partner placement
- 全部文檔統一改為明確聲明:系統已不再使用 Supabase,MySQL 為唯一資料來源
優化
v2.10.2計算機新增 PayMe 付款方式選項
優化
計算機新增 PayMe 付款方式
- Web 及 Mobile 計算機新增「PayMe」付款方式選項
- 與 AlipayHK、WeChat Pay 等電子錢包選項保持一致
- 選擇 PayMe 後計算機會自動排除不支援的卡片規則,顯示實際可用回贈率
優化
v2.10.1卡片設定 UX 優化 + 回贈明細顯示修正
UX 優化
卡片設定對話框固定底部按鈕
- 「儲存設定」及「從錢包移除此卡」按鈕固定於 popup 底部
- 內容區域獨立捲動,按鈕不會被捲走
- Web 及 Mobile 版本同步調整
自動儲存機制
- Web:分配 5X 或選擇類別後即時自動保存,關閉對話框不會丟失設定
- Mobile:按關閉按鈕時自動靜默保存,按「儲存設定」按鈕顯示確認提示
Bug 修復
回贈明細空括號修正
getExtraSource清除百分比後留下空括號()- 例:「最紅自主獎賞 9X ()」→ 修正為「最紅自主獎賞 9X [需登記,5X自由分配]」
- 避免用戶誤以為未計算最紅獎賞
新功能
v2.10.0最紅自主獎賞 5X 自由分配、Travel Guru、AAVS、多組設定支援
新功能
HSBC 最紅自主獎賞 5X 自由分配
- 由原本「五選一」改為 5X 自由分配模式
- 用戶可將 5X 分配到不同類別(賞滋味/賞購物/賞家居/賞享受/賞世界)
- 計算機根據分配精準計算各類別回贈率
- Stepper UI 顯示剩餘點數
Travel Guru 等級選擇
- 新增 Travel Guru 等級下拉選擇(GO +3% / GING +4% / GURU +6%)
- 海外實體店簽賬可疊加最紅自主獎賞
- HSBC VS 及 EveryMile 適用
八達通自動增值 (AAVS)
- 計算機新增「八達通自動增值」付款方式選項
- Web 及 Mobile 同步支援
多組自選類別設定
- 同一張卡支援多個設定組(如 HSBC VS 同時有最紅自主獎賞 + Travel Guru)
- 卡片設定對話框分段顯示各組設定
- 計算機獨立處理各組規則
Travel Guru 登記提醒
- 錢包頁面為 HSBC VS 及 EveryMile 持卡人顯示 Travel Guru 登記提醒
- 可關閉,不重複顯示
技術改動
CardSelectionConfig新增allocate模式及totalPointsRewardRule新增allocationMaxPoints欄位calculator.ts重構為多組resolvedGroups架構- Web/Mobile/API 全面同步更新
優化
v2.9.1錢包交易記錄優化、提醒修正、合作夥伴推廣頁面
新功能
合作夥伴推廣頁面 /offers
- 新增
/offers頁面展示 MoneyHero 合作推廣卡片 - 後台可開關
/offers頁面及 Navbar 入口 - 管理員可自訂推廣卡片清單及截止日期
交易記錄功能優化
- 新增 DELETE API 支援刪除交易記錄
- 刪除圖示直接顯示(不再需要 hover)
physical_card翻譯為「實體卡」- 日期改為香港時區格式
Bug 修復
年費提醒/消費提醒重複出現
- 關閉後重新出現問題修正
- 改用
useStatelazy initializer 同步載入 localStorage
進行中優惠計數不一致
/wallet與/my-promos頁面計數對齊
Admin Discover 頁面
- 文章瀏覽數 0 問題修正(pageview API path 欄位修正)
- 日期改為 HK 時區格式
其他
- 條款管理改為 archive 模式(MySQL 統一管理)
- 新增 Cursor rules:條款自動存檔、自動 git push、新增文章檢查清單
新功能
v2.9.0全面檢查修正 — Bug修復、Mobile自選類別、FX計算機紀錄、錯誤頁面
新功能
Mobile 卡包自選類別設定
- Mobile App 卡包新增齒輪設定按鈕
- 支援 HSBC 最紅自主獎賞、DBS Live Fresh、MMPOWER、WeWa 的自選類別設定
- 單選/多選模式完整支援
- 卡面顯示自選類別狀態標籤(未設定/已過期/待確認/已設定)
- 設定儲存到 AsyncStorage + 雲端同步
FX 外幣計算機使用紀錄
- 新增
fx_calculator_logs資料庫表 - 前端計算後自動記錄(幣種、金額、最佳卡、用戶)
- 後台新增「外幣計算機記錄」頁面(/admin/fx-logs)
- 統計:今日/昨日/近7日使用次數、最熱門幣種
- 支援按用戶名稱或 Email 搜尋
一般用戶錯誤頁面
- 新增 app/error.tsx 通用錯誤頁面
- 包含重新整理/重試/返回首頁按鈕
- Chunk 載入錯誤特殊處理提示
Bug 修復
- 回報 API:移除不存在的
merchant_id欄位,修復「Unknown column」錯誤 - 回報 API 統一:
/api/report與/api/report/submit統一使用相同欄位結構 - Admin Transactions:修復
reward_amount?.toFixed錯誤,改用parseFloat(String())防禦 BigInt/Decimal - Changelog 時間:改用香港時間 (HKT) 顯示日期
優化
- Mobile 計算機移除 debug console.log
- Admin 側邊欄新增「外幣計算機記錄」入口
.cursor/rules新增時間顯示規則(所有頁面一律使用 HKT)
優化
v2.8.2錢包卡面新增自選類別未設定提示
- 錢包頁面的 HSBC、DBS Live Fresh、MMPOWER、WeWa 等有自選類別的卡片,新增卡面狀態提示:
- 未設定(琥珀色):「未設定最紅自主獎賞,點擊齒輪設定」
- 已過期(紅色):「優惠已過期」
- 待確認(藍色):「請確認今年的設定」
- 已設定且有效的卡片不顯示提示,保持乾淨介面
優化
v2.8.1隱藏錢包頁面迎新追蹤器
- 隱藏錢包頁面的「迎新追蹤器」組件(WelcomeOfferTracker),暫無實際用途
- 組件代碼保留,日後需要時可重新啟用
新功能
v2.8.0通用自選類別框架 + 數據修正 + 排行榜優化
新功能
- 通用自選類別框架:支援 HSBC 最紅自主獎賞、DBS Live Fresh、恒生 MMPOWER、WeWa 四組卡的自選類別設定
- 計算機自動偵測用戶自選類別狀態(已設定/未設定/已過期/待確認)
- 錢包頁面卡片設定彈窗支援單選及多選類別
- 計算結果顯示自選類別狀態標籤
- 後台會員詳情頁可查看用戶自選類別設定
數據修正
- Hang Seng Travel+ Visa Signature:年費修正為永久免年費
- SC Smart Card:移除「八達通錢包增值」不包事項(此卡八達通自動增值有 0.56% 回贈)
排行榜優化
- 同家族卡片去重新增年費 tiebreaker,同回贈率時優先顯示年費較低的版本
- 確保每個排行分類都選到最合適的家族代表(例如:網購選 sim Credit Card,海外選 sim World Mastercard)
新功能
v2.10.22ChineseAN 後台憑證 + 23 商戶 Logo + Auth 修復
新功能
- ChineseAN 憑證可於 /admin/affiliates 填寫儲存至 DB(騰訊雲無法設 env 時適用)
- 新增 23 個商戶 Logo(莎莎、Dyson、Samsung、Lancôme、CASETiFY 等)
修復
- Auth 路徑 pathname 改用 cookie 傳遞,避免 proxy 過濾 header 導致無 CSS
修復
v2.10.22Auth 登入修復 + 文檔同步規則
修復
- Auth 路徑改用 server-side pathname(middleware x-pathname header)避免 usePathname() hydration mismatch
- 新增 app/auth/layout.tsx 精簡 Provider,修復 Google 登入後 /auth/success client-side exception
新增
- 開發規則十七:文檔同步 — 改動時自動更新 HANDOFF、PRD、AFFILIATE、SYSTEM_DOCUMENTATION
修復
v2.10.6加強 chunk error 攔截及防快取
Bug Fix
- inline script 加入 unhandledrejection 監聽(捕捉 Promise 類 chunk 錯誤)
- 擴展錯誤匹配模式:Unexpected token / invalid JavaScript / module import failed
- HTML 加入 Cache-Control: no-cache 防止過度快取
- next.config 加入 headers() 對非靜態資源設 no-cache
修復
v2.10.5Chunk error 全域攔截修正
Bug Fix
- 在 HTML head 加入 inline script 全域捕捉 chunk 載入錯誤
- 不依賴 React error boundary,即使舊 JS 被快取也能自動重載
- 配合 error.tsx 的 React 層級修正,雙重保障
修復
v2.10.5改進 chunk error 自動重載
Bug Fix
- 改用 cache-busting URL 取代普通 reload,確保瀏覽器取得最新版本
- 冷卻時間從 10 秒增加到 30 秒
- 手動重新整理按鈕也使用 cache-busting
修復
v2.10.4Chunk error 自動重載修正
Bug Fix
- 部署新版本後,瀏覽器快取舊 JS chunk 導致頁面錯誤時,自動重新載入頁面
- 使用 sessionStorage 防止 10 秒內重複重載(避免無限迴圈)
- 前台及後台 error.tsx 同步修正
docs
v2.10.3完善 AI 交接文檔
文檔更新
- 完善 HANDOFF.md 交接文檔,從 10 個章節擴展至 19 個章節
- 新增:多語系 (i18n)、認證與用戶系統、Analytics 與追蹤、SEO、Web Push 通知、支付方式與電子錢包邏輯、快取策略、環境變數、測試
- 補充 Admin 後台功能列表、Mobile App 技術棧及功能
- 關鍵文件索引從 18 項擴展到 35 項
新功能
v2.10.3/offers 頁面新增銀行迎新優惠及合計總額顯示
新功能
/offers頁面每張卡片新增顯示銀行本身迎新優惠內容(amber 底色區塊)- 新增「銀行迎新 + 本網額外獎賞」合計總額區塊,並拆分明細顯示
- 里數卡片特殊處理:不與港幣金額相加,提示用戶查看卡片詳情
- API 新增回傳
welcomeOfferReward及isMilesCard欄位
更新
v2.10.3E-wallet 商戶及支付方式邏輯優化
更新
v2.10.3