UGOMK 操作手冊
08 章 / 共 18

排行榜

排行榜(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)。若需要更長期分析或手動清理舊資料,請聯繫客服。