成就系統
成就(Achievements)是需要累積進度才能完成的長期目標,與勳章的差別在有進度條。會員在 LIFF profile 可以看「還差多少完成」,是「目標感」的核心設計。
進入路徑
後台左側 社群 & 遊戲化 → 成就管理。
勳章 vs 成就 差異
| 面向 | 勳章(Badge) | 成就(Achievement) |
|---|---|---|
| 進度條 | 無(拿或沒拿) | 有(0/100 → 47/100 → 100/100) |
| 顯示 | 勳章牆 icon 網格 | 進度列 + 已解 / 未解分類 |
| 觸發 | 條件達成瞬間發 | 每次行為更新 progress |
| 加分 | points_reward 一次性 | 完成時 points_reward + 過程無分 |
| 適合 | 里程碑(第一次、連續 7 天) | 長期目標(發滿 100 篇、拿滿 10 個勳章) |
預設成就(30 個 seed)
模組首次啟用 seed 30 個常見成就,涵蓋發文 / 留言 / 打卡 / 讚 / 勳章 / MGM 6 大類:
| Key | 名稱 | 條件 | 完成加分 |
|---|---|---|---|
post_10 | 十發之貼 | 發 10 篇 | +20 |
post_50 | 五十連發 | 發 50 篇 | +50 |
post_100 | 百篇作者 | 發 100 篇 | +100 |
comment_50 | 熱心參與 | 留 50 則 | +30 |
checkin_30 | 一月不斷 | 累積打卡 30 天 | +50 |
like_500 | 人氣爆棚 | 累積收 500 讚 | +100 |
badge_10 | 勳章收藏家 | 拿到 10 個勳章 | +50 |
mgm_10 | 推廣達人 | 推薦 10 人 | +100 |
| ... | (共 30 個) | ... | ... |
欄位說明
Key / 名稱 / Icon / 顏色 同勳章。
分類(category) content / social / streak / collection / mgm / special 6 種,LIFF 按分類 tab 展示。
目標數(target) 例如「發滿 50 篇」的 50。
條件事件(tracked_event) 哪個 point event 累加進度。預設對應:
post_count→post_created事件計數comment_count→comment_created事件計數checkin_total→daily_checkin事件計數received_like_total→received_like事件計數badge_count→ 拿到的勳章數mgm_signup→referral_signup事件計數
完成加分(points_reward) 達到 target 時一次性加分。
啟用(is_active) 關閉後不再追蹤進度,已完成的保留。
進度追蹤機制
會員每次觸發相關 point event,系統呼叫 evaluateRewards helper(位於 badge-helper.ts):
- 對照 achievement 的
tracked_event(如post_count/comment_count/streak_days) - 找出該會員該成就的
gc_achievement_progressrow(沒有就插入) current_value依最新計數更新- 若
current_value >= target且尚未completed_at,標記完成 + 發points_reward+ fireachievement_completedtrigger
evaluateRewards 在兩個時機呼叫:
- 即時:會員發文 / 留言 / 打卡等動作完成後立即觸發(
liff.ts) - 排程:每日 Cron 批次掃所有會員重算(
gc-runners.ts),補償即時觸發可能漏掉的邊界情況
操作
新增成就
+ 新增成就→ 填 name / category / tracked_event / target / points_reward → 儲存
查看某會員進度
- 「積分事件」頁選會員 → 側欄「成就進度」看該會員全部成就當前 %
批次調整 target
- 若已上線後發現「post_100 太難」,直接編輯 target 改成 50,已完成的會員不受影響(保留 completed 狀態),未完成的會員 progress % 立刻重算。
成就設計建議
分類要清楚 content / social / streak / collection / mgm 讓會員 LIFF 端 tab 清晰。
每分類階梯化 post_10 / post_50 / post_100,一個成就完成解鎖下個目標感。
別堆到 100 個 30-50 個成就剛好,太多會員看膩。
特殊事件成就(special 分類):季節、活動、限量。
常見情境
新客戶開通模組要客製化 保留系統預設 30 個 → 依客戶行業把「發滿 100 篇」改成「發滿 20 篇」(低頻社群)或加入「參加線下聚會 3 次」(活動導向)。
追蹤 KPI 「勳章收藏家(拿 10 個勳章)」的完成率能反映會員黏著度,在「模組儀表板」看比例。
常見問題
Q1 成就進度會不會 reset
不會。current_value 只累加不減,即使會員被扣分或違規也不影響進度。這保護會員的努力感。
Q2 完成成就後,成就本身變什麼樣
LIFF 端該成就從「進度中」tab 移到「已完成」tab,completed_at 打時間戳,points_reward 一次性發到 current_points。可炫耀顯示於 profile。
Q3 同一 tracked_event 有多個成就會怎樣
都同步累加。例如 post_created 同時追蹤 post_10 / post_50 / post_100 3 個成就,會員發第 10 篇時 post_10 完成,繼續發到 50 時 post_50 完成。
Q4 可以加「多重條件」的成就嗎(例如「發 10 篇 AND 拿 3 個勳章」)
Phase 1 不支援。目前只支援單 tracked_event。多重條件是 Phase 2 park 的「自訂規則 builder」。若真的需要,可暫時分成兩個成就。