排行榜
排行榜(Leaderboard)依累積分數把會員排名,分「本週」「本月」「總榜」3 種。是社群競爭氛圍的視覺化核心,讓活躍會員感受到「我很強」的認可。
進入路徑
後台左側 社群 & 遊戲化 → 排行榜。
3 種排行榜
| 排行榜 | 統計期間 | 用途 |
|---|---|---|
| 週榜(week) | 本週一 00:00 - 週日 23:59(Asia/Taipei) | 短期活躍度競爭,週日晚上宣布獎勵 |
| 月榜(month) | 本月 1 號 - 月底(Asia/Taipei) | 中期活躍,月底可搭配「本月風雲人物」推播 |
| 總榜(all_time) | 全時間累積分 | 忠實老鐵榮譽榜,Level 高的天然爬上 |
資料機制
排行榜是每天凌晨 Cron 重算的 snapshot,不是即時查詢:
- 03:00 Asia/Taipei 自動觸發
POST /cron/leaderboard-rebuild - SQL 用
AT TIME ZONE 'Asia/Taipei'算 week / month 週期 - 結果寫入
gc_leaderboard_snapshots表(period+rank+member_id+points) - LIFF 前台查排行榜只讀 snapshot,避免高流量查即時 SQL
why 不即時:即時算會拖慢 LIFF response 且無法穩定 rank(每分鐘變動看起來很亂)。每日 snapshot 平衡「新鮮度」和「效能 / 穩定感」。
操作
列表頁
- 上方 tab 切
週榜 / 月榜 / 總榜 - Top 100 表格:Rank / 頭像 / 姓名 / Level / 本期分數
- 右上
立即重算按鈕(手動觸發 Cron 邏輯,2-5 秒完成,用於測試或客訴排名沒更新)
單一會員排名查詢
- 「查詢某會員」輸入 member_id → 顯示他在 3 種排行榜的名次
- 用於客戶客服「我為什麼沒進榜」的即時解答
LIFF 前台展示
會員在 m/community/leaderboard 頁:
- 3 tab 切榜期
- Top 3 大卡(金銀銅獎盃 podium 動畫)
- Top 4-100 表格列表
- 底部固定「我的排名」+ 「離下一名還差 X 分」
常見情境
週榜宣傳活動 週一在公告貼文置頂「本週榜首 → 送 500 元券」,週日 23:59 快門後,週一凌晨 Cron 重算,早上 09:00 手動查週榜前 3 名發券。
月榜自動化 搭配「行銷劇本」的 gc_leaderboard_weekly_top trigger(Phase 2 park)自動推播恭喜訊息 + 贈券。
排名爭議客訴 會員說「我明明分數比 A 高卻排在後面」→ 用「查詢會員」看兩人的本期分數(不是總分),可能因為某人本週漲多 vs 總分高但本週沒動。
常見問題
Q1 為什麼我剛加了 100 分排名沒變
排行榜是每日 03:00 snapshot,即時加分不會反映在排行榜上(會反映在 LIFF profile 的當前分數)。若急著看,後台按「立即重算」。
Q2 排行榜可以按門市分開嗎
Phase 1 不行。目前是全租戶排行榜(該租戶所有 store 會員混合排)。分店 scope leaderboard 是 Phase 2 park 項目。若客戶多店營運需要分開榜,可以先用「LIFF 顯示會員所屬 store」的方式讓會員看得出區別。
Q3 被扣分(違規)會影響排行榜嗎
會影響本期分數(週榜 / 月榜)——扣分屬於當期則減少當期分。但總榜用 total_points_earned 只累加不減,違規會員仍保留總榜位置。
Q4 匿名會員(LIFF 沒填 name)在排行榜怎麼顯示
Fallback 顯示 會員#xxxx(後 4 碼 member_id)。若你在會員資料補上顯示名稱,下次 Cron 重算會刷新。
Q5 排行榜資料保留多久
gc_leaderboard_snapshots 的歷史 snapshot 目前沒有自動清除機制(後端尚未實作定期 purge)。若需要更長期分析或手動清理舊資料,請聯繫客服。