← 回主控台
ArenaMate · 進度看板

ArenaMate 進度看板

把「社交 + 競品 Roadmap」和「整體架構藍圖」合併成一個看板,依進度分三欄:已完成 / 進行中 / 待開發。上架前不做的半成品收進下方「暫停區」,策略藍圖收在最底可展開。隨時回來看最新狀態。
2026-06-28 更新:Android 背景推播端到端已驗收(正確 package 重註冊 Firebase,鎖屏實收 sent:1)+ 隊伍全域 Slice 5a(我的戰隊跨館)+ 全域球員身分 5c(他人檔 per-sport 戰績);館間賽營運(P-A~P-G)+ 代表隊體系 + 通知 + 預約/賽事 UI 對齊。狀態皆對照實際 codebase + git。

已完成 進行中 待開發 暫停(上架前不做) 競品模仿 已有規格 老闆點名 商業階段 基建 暫時隱藏
已完成上線可用47
競技核心

賽季天梯 SLP(Phase 1–7)

打正常場即時累積天梯分、升段;規模權重、每日上限、重複對手衰減全上線。

競品模仿

段位 + 排行榜

ELO 評分 + 七段位;本館 / 全國排行榜(即時)。

競品模仿

信任分系統

出席/爽約決定可開場額度、停權保護,鼓勵守約。

防作弊 v1

只算正常場、裁判≠球員、每日規模賺分上限、重複對手衰減。

基建

賽季通行證 + XP

10 級獎勵軌(免費+進階)、XP 累積、領取/升級。

競品模仿
比賽 / 場次

比賽計分

裁判 / 雙計分板 / 第一發球 / 性別平衡分隊 / 開賽前拖移換位。

競品模仿

即時轉播卡 + GPS 自動進場

場次卡顯示即時站位+比分;走進場館圍欄自動進場。

競品模仿

現場加入(路人/隊伍場)

掃入場 QR 加入、把觀戰路人拉進等待區、整隊拖入。

現場加入 #4–#6(直播卡/單向退化/拖人)

轉播卡即時站位+裁判+比分(VenueSessionCard)、隊伍場單向降級為路人場、路人/隊伍兩種拖人補位皆可。含 walkin gate 測試。

已有規格老闆點名

場上↔等待區換人 UX

單擊球員開 4 區小選單(候補接手/換隊/與已準備者交換/確認排下輪)+拖移到底自動捲。抽 PlayerMoveGates(21 測試)+Orchestrator。

已有規格老闆點名

場次結束 + 場次結算

發起人/館長可結束場次;跳出整場次結果:各場比分/勝方/MVP/名單。

今日戰報(個人)

勝敗、評分變化、同場球員戰績 + 讚 + 追蹤、時間區間。

館間賽營運(P-A~P-G + dogfood 追加)

館間聯誼賽(發起→結束)

發起賽事選參數 → 邀請他館 → 收件匣接受/婉拒 → 自動入賽。單淘汰/雙淘汰(4·8隊)/分組淘汰/循環賽 對陣表渲染 + 記分 + 結算 + 館際 Elo。

已有規格老闆點名

場館代表隊體系(各館自決)

每個參賽館自選方式:館方指定 / 辦館內初賽。後台「代表隊設定」欽點一軍(每運動唯一)/二軍(可多支)。指定 picker 候選池=現任代表隊置頂 + 本館最常出沒的隊。一支隊只能代表一個場館(已擋重複)。

老闆點名

場館親近度「最常在本館出沒的隊」

戰隊只要有部分成員出席本館場次(連路人場都算)就計一次出沒;跨館用 user_profile_id 認同一人。只用於選代表隊候選排序,不影響戰隊頁對戰計數。

基建

賽事/選拔在館內訂場地+時間

舉辦賽事/辦館內初賽都選具體場地+時間,與一般預約共用同一本場地時段;同一塊場地不論辦什麼活動都不時間衝突(DB 排他約束硬保證)。辦初賽直接彈場次預約表。

已有規格

開賽門檻

最少報名隊數 + 報名截止後才能產生對陣表/開賽;不達標時「產生對陣表」擋住並提示原因。館內賽/友誼賽精靈都可設。

已有規格

裁判 / 線審名冊

邀請(優先曾任)+ 收件匣接受 + 比賽日報到 + 備用區按接受順序每場輪值 + 每場需裁判+線審才能開賽 + 賽後發初/中/高級徽章。

已有規格老闆點名

比賽日刷卡報到 + 賽事戰報

掃球員證跨館報到(該員本賽事所有隊);賽後戰報:冠軍 + 參賽隊 + 服務過的裁判/線審徽章 + 總場次。對陣表格顯示代表隊名(大)+場館名(小)。

已有規格

戰隊「報名的賽事」卡 + 安排站位

戰隊詳情顯示已報名賽事卡(賽程/賽制/狀態)+ 查看賽事(對陣表/賽事資訊)+ 安排站位/職位(先做排球,半場拖頭像排陣)。

老闆點名

自由命名 + 類型副標

賽事 / 預約場次 / 館內初賽 都可自由命名,卡片標題下顯示類型(館間聯誼賽/館內賽/館內初賽/預約場次)。

老闆點名

館際賽通知(in-app)

別館邀館間賽→受邀館 館主+管理員;被邀裁判/線審→本人;被指定代表隊→該隊成員。寫進通知中心(realtime 紅點),文案含 哪場賽+哪間館。

UI 對齊:預約/賽事

整個「預約/賽事」(入口 + 場次詳情 + 投票 + 預約精靈 + 建賽精靈)從孤兒 Meadow 風轉成與全 App 一致的 AC 共用元件,移除孤兒設計系統。

競品模仿

館際賽測試平台

arena-test.html 一頁走完館間賽生命週期(建賽/代表隊/刷卡報到/記分/戰報),不需實機。

基建

每場排程 + 比賽日直播入口

建館間賽報名截止日必填;主辦在賽事詳情對陣樹「每一場」各自排日期+時間段(只列空檔,共用 gym_sessions DB 排他約束,不可被搶)。比賽日當天:地圖該館冒紅色「今日賽事·直播中」徽章 + 館內當日場次列表頂部直播卡 → 點進賽事;觀眾看現場比分,計分/報到只給主辦/裁判/線審(沿用內部權限 Gate)。每場各自的場次 → 現場計分用對的 session。

已有規格老闆點名
社交

追蹤 / 球友

互相追蹤 = 球友;個人頁、他人檔案可看。

局內 + 隊伍聊天室

同場/同隊即時聊天;隊伍頁顯示最新訊息預覽。

MVP 互投 + Kudos

賽後互投 MVP、給好球/好隊友/風度佳正向聲望。

戰隊系統

創建/職位/隊服/QR入隊/審核/隊伍戰績/隊伍聊天。

場次邀請球友

比賽頁從球友名單邀請來這場(M2)。

賽後社交動作

今日戰報對同場球員:追蹤/讚/加好友 + 約下一次打球 + 邀入戰隊(officer);戰隊正式邀請走通知卡接受入隊。比賽畫面「今日成績」鈕隨時開。

老闆點名

排行榜分組

本館 / 好友 / 戰隊 / 全國 切換(好友=我追蹤的人+我、戰隊=我隊成員)。LeaderboardGates 純規則 + 範圍化空狀態。

競品模仿

通知中心(in-app)

追蹤/場次邀請/戰隊邀請/館間賽三條邀請集中,DB trigger 自動寫入 + realtime,首頁鈴鐺紅點 + 點一則/全部已讀。背景推播 FCM 已通(見下卡)。

競品模仿

背景推播 FCM(iOS + Android 已通)

iOS + Android 雙平台端到端已驗收 ✅:通知→扇出 trigger(pg_net)→send-arena-push→FCM→裝置鎖屏(伺服器 sent:1、兩台手機實收)。Android 2026-06-28 修好:之前 Firebase app 註冊駝峰 package、實際 applicationId 是底線 com.chefsmate.arena_mate → 用正確 package 重註冊(新 appId)+ google-services + gradle plugin + POST_NOTIFICATIONS。⚠️ 僅 iOS production APNs key slot 待填(TestFlight/上架才需)。

基建老闆點名

隊伍完全全域(脫離主場館)

戰隊真正全域、不綁主場館。✅ gym_teams.gym_id 語意=創隊起源館(非擁有,代表某館走 gym_rep_teams 名冊);✅「我的戰隊」跨館顯示(myTeamsProvider);✅ createTeam 無 ownership 邏輯;✅ 後台代表隊指定候選改「本館相關戰隊=建在本館∪常來本館打」(別館真隊也指定得到)。純 Gate team_scope+測。戰隊排行維持本地榜。

基建老闆點名

成就徽章

9 徽章(初勝/常勝/場次 10·50·100/段位 銀金白金鑽石)依賽季統計達標解鎖,個人檔案徽章牆(已解鎖彩色/未解鎖灰)。

競品模仿

出席連續天數火焰

走進場館即累積連續出席天數(同日只算一次、斷一天歸 1),個人檔案火焰 chip + 最佳紀錄。純裝飾不給 SLP。

競品模仿

戰績分享卡

今日戰報一鍵截圖分享 IG/LINE,卡內含 ArenaMate 品牌條拉新。(單場/戰隊專屬版型為後續)

競品模仿

動態牆 Feed

我追的人+我的戰績/成就時間軸,賽後 MVP 自動貼 + 按讚 + 留言 + 手動發文。首頁「動態」入口。

競品模仿

球友推薦

依常一起打球(共打場數)推薦可追蹤的人,動態牆頂「你可能認識」橫向卡 + 一鍵追蹤。arena_coplayer_recos RPC + RecommendGates。

競品模仿

加好友 QR(掃描 / 出示)

個人頁加好友入口,像 LINE:出示我的 QR / 掃描對方 QR → 追蹤(互追=球友)。in-app 掃描 + 系統相機 deep link 都支援。

競品模仿

登入持久化(Keychain)

session 改存 iOS Keychain / Android 加密儲存(原本 SharedPreferences 重裝會被清 → 每次重登)。重裝 App 不再被登出;舊 session 自動遷移免一次重登。

基建

比賽現場直播(多鏡頭)

直播手選鏡頭位置開播(LiveKit 發布相機)、所有人可「觀看現場直播」、多鏡頭左右滑/點位置切換、子母畫面(站位)點擊互換。token 走 livekit-token edge fn(密鑰在 Supabase secrets)。

老闆點名
其他 / 基建

3D Avatar 換裝工坊

角色換裝、戰隊隊服套用(Q版骨架版)。

競品模仿

球員證(Wallet)

Apple / Google 錢包球員證,段位升級卡面升級。

假人測試控制台

網站開測試場、假人進場/報到/分隊,測全流程。+ 游渝伯手機瞬移進/出體育館(測 geofence 自動報到/進場)。

基建

餐廳會員優惠(等級制)

POS 設定兌換餐點/折扣/折價 + 段位門檻 + 兌換次數上限;鏈已通。ArenaMate 端上架前先隱藏

暫時隱藏

設計系統全面對齊

捏麵黏土風套滿全頁:首頁/個人/戰隊/比賽/後台/審核/結算/優惠/賽事/排行/預約/行事曆。

競品模仿
進行中部分完成 / 待收尾2

館間賽現場計分/直播 旗標驗證

對陣表接 match_tab 現場計分 + YouTube 直播 已寫好,但旗標 kArenaTournamentLiveScoringEnabled 預設關;待實機 dogfood 驗 match_tab + YT 憑證後開啟。雙淘汰目前支援 4/8 隊。2026-06-28 已 build+裝機 iPhone(旗標仍關)。

已有規格

全域球員身分改型

gym_athletes 每館一份 → 降級成「在這館的角色」,戰績/RP 搬全域 arena_player_sport(每運動一本不分館)。✅ 結算雙寫全域 RP;✅ 個人 RP 已全改 per-sport(老闆 2026-06-28 拍板):個人檔頭/首頁牌位/他人檔顯示「主運動」那一本(可點選要顯示哪本,單一數字處讓使用者選),他人檔誤導聚合卡已移除。:today_report 每日 RP per-sport + SLP/段位/信任/XP 改全域 per-sport 收尾。

基建
待開發點子池10
📋 6 項可建功能皆已補完工程規格(4 層架構 + 重用基建 + 資料表 + Gate/Orchestrator + 施作順序),見 Apps/arena_mate/docs/待開發功能規格.md;P1–P3 是商業階段(密度到位才啟動)。標籤 已有規格 代表可直接動工。
館間賽 / 隊伍體系(待續)

測試資料清理

各館仍有測試控制台建的假人 athletes(真隊「銘展青果行」已留、測試甲乙丙隊+重複海邊館已清)。其餘假人視需要再清。

基建
社交 / 競品模仿

1:1 私訊

球友私下傳訊(互追才可),從檔案/結算頁發起。重用 chat 模式 + dm_threads/messages。

競品模仿已有規格

揪團貼文 + 留言

發貼文招募、留言/舉手報名,不只靠時段表。與 Feed 合流 + recruit_signups。

競品模仿已有規格

戰隊約戰 / 挑戰

戰隊對戰隊約戰,結果計入隊伍戰績/排名。新表 team_challenges + ChallengeGates。

競品模仿已有規格

直播留言 / 表情

雲端觀看者在轉播卡丟表情/留言。重用 chat(session)+ rate limit。

競品模仿已有規格
基建 / 商業階段

關閉 refresh token rotation ⭐老闆後台

Auth log 每小時 token_revoked(rotation 開著),跟 POS 反覆登出同雷。老闆到 Supabase 後台 → Authentication → Sessions 關掉 rotation(比照 POS)。配合 Keychain 持久化一起解「一直要重登」。

基建老闆點名

防作弊 v2

裝置關聯偵測、GPS spoof 交叉檢查、大獎綁實體現場核身。等天梯獎品有價值(P1+)再做。

基建已有規格

P1 區域賽

單城夠多場館 → 場館辦區域賽 + 場館訂閱 SaaS 變現。

商業階段

P2 全國賽

App 方辦全國賽 + 全國排行榜,門票/報名抽成 + 贊助。

商業階段

P3 大型賽

申請制掛牌大賽 + 現場核身,申請費/抽成/通行證/飯圈廣告。

商業階段
⚠️ 上架前檢查清單 · App Store / Play 上架前一定要做完的事(2026-06-28 整理)

這份是「上架前 must-do」總表。平時 dogfood 沒差、但**正式上架前**要逐項處理。狀態:🔴 還沒做 · 🟡 進行中/待驗 · ✅ 已完成。

A. 功能旗標(lib/feature_flags.dart)— 上架前逐個確認

旗標現況上架前要怎樣狀態
kArenaTournamentLiveScoringEnabledtrue(2026-06-28 老闆「直接翻」已開)現場 dogfood match_tab 計分/結算/YT;若流程有問題改回 false(一秒 kill switch)🟢 已開·dogfood中
kArenaYoutubeBroadcastEnabledtrue(dogfood 預覽開著)後端若沒全驗證完 → 改回 false 再上架(別讓使用者開播失敗)🟡 待確認
kArenaExternalCameraEnabled / UsbEnabledtrue(dogfood 預覽)確認外接相機鏈路驗過,否則改回 false🟡 待確認
kArenaOffersEnabledfalse(關)等合作店家 + POS 會員優惠就緒;上架前維持關🔴 商業階段
kArenaBroadcastModerationEnabledfalse(關)餵圖管線 + Vision API 未接;維持關🔴 未接

B. 背景推播

項目說明狀態
iOS / Android 端到端兩平台都已驗收(鎖屏實收 sent:1)✅ 已完成
iOS production APNs keyFirebase 只填了 development slot;TestFlight/上架要把同一把 .p8 再上傳 production slot🔴 上架前
service account .p8 JSON還在 ~/Downloads(已設成 Supabase secret)→ 可刪🟡 可清

C. RP / 全域球員身分(老闆 2026-06-28 拍板:所有 RP 一律分運動種類)

項目說明狀態
個人 RP 全改 per-sport個人檔頭(toy_profile)/首頁牌位(toy_home)/他人檔(other_profile)已改顯「主運動」那一本全域 RP(我選的/打最多場),可點選要顯示哪一本(arena_player_prefs.display_sport_type);他人檔誤導聚合卡已移除。:today_report 每日 RP 仍是單館聚合 → 老闆選版型(a):一天一張卡、卡內分運動列(排球那行/籃球那行),待做🟡 待裝機驗
RP 重置趁未上架把舊測試 RP 清乾淨,之後不再隨便重置(戰績神聖)🔴 上架前
SLP / XP 改全域 per-sport老闆「照建議做」→ 排下一步 slice。信任已全域(免改)、段位由 RP 衍生已 per-sport(免改);真正要做的只有 SLP+XP:athlete_season_stats / athlete_pass_progress 兩表沒 sport_type 欄 → schema migration + 結算寫分帶運動 + 顯示。三指標說明見 /arena-metrics.html🔴 待續(下一 slice)

D. 隊伍完全全域(Slice 5 剩餘)

項目說明狀態
我的戰隊跨館顯示(5a)已上線✅ 已完成
createTeam 去擁有已驗證:createTeam 只把 gym_id 寫成「創隊起源館」,無 ownership 邏輯✅ 已完成
代表隊指定候選改 affinity後台代表隊指定改用「本館相關戰隊=建在本館 ∪ 常來本館打」(gymBoardTeamsProvider),別館建立的真隊也能被指定。戰隊排行維持本地榜(per-sport affinity fan-out 太重)✅ 已完成
gym_id schema 收斂D1 定案=保留 gym_id 當 origin(不 drop、不改 nullable);end-state 已達成✅ 已完成

E. 測試資料清理

項目說明狀態
假人 athletes各館測試控制台建的假人(真隊「銘展青果行」已留、測試甲乙丙隊已清)。上架前清掉測試假人🔴 上架前
測試館間賽 / 測試隊殘留arena-test.html 建的測試賽事/隊伍🔴 上架前

F. 上架帳號 / 憑證

項目說明狀態
Apple Sign in client secret2026-12-09 到期 → rotate = 用 .p8 重簽一段新 JWT(Apple console 不用動,.p8 還在 ~/Downloads),貼進 Supabase → Auth → Apple provider 的 Secret。可請 Claude 直接簽好再貼🟡 有期限
Play 上傳金鑰每次上傳 versionCode +1;keystore 只在老闆 Mac(gitignored)🟡 流程

暫停 上架前不需上線

這兩件先擱著,不影響上架。等時機到(合作店家就緒 / 老闆建模完成)再回來收尾。

餐廳會員優惠 收尾

主體已做+上架前隱藏(等合作店家+POS)。待:兌換次數的兩裝置 race、套用後棄單漏額度 → 需 server RPC(付款成功才記)。

暫時隱藏暫停

3D 寫實 Avatar

老闆自建中;建模規格(分件/骨架/Mixamo/匯出)已給,完成後接進 App。

競品模仿老闆點名暫停
策略藍圖 · 從「野場揪團」長成「運動競技 + 在地經濟」生態系

一句話定位

ArenaMate = 業餘運動員的「天梯人生」:真實場館打球 → 累積段位與生涯 → 段位變成在地特權(飯圈優惠)與賽事門票,最終由 App 方統籌全國賽事與獎勵經濟。

核心飛輪:球員密度 → 場館價值 → 賽事規模 → 獎勵與段位 → 吸引更多球員,並與 ChefsMate 餐飲會員卡互相導流。

四階段成長飛輪

階段開放變現
P0 冷啟動全免費:揪團/配對/計分/段位無(衝密度)
P1 區域賽場館辦區域賽場館訂閱 SaaS
P2 全國賽App 辦全國賽 + 排行榜門票/報名抽成 + 贊助
P3 大型賽申請制掛牌大賽申請費 + 抽成 + 通行證 + 飯圈廣告

雙(三)幣制(防作弊地基)

指標用途好不好洗
技術分 ELO配對 / 平衡分隊零和,難洗
天梯分 SLP解鎖段位 + 真獎品(每季軟重置)靠公式 + 防制把關
裝飾幣 / XP賣裝飾 / 爽度不影響公平
鐵則:只有 SLP 連動段位與獎品。吃飯打卡/餐廳互動只能給裝飾幣/XP,永遠不給 SLP。獎勵越高、驗證越嚴。

核心公式(已上線)

單場SLP = base(勝8/負3) × 規模(野1/區2.5/全5) × 對手品質 × 信任(0.3–1) × 重複對手衰減(0.7ⁿ),再套每日規模上限;練習場 = 0。

ChefsMate 整合:球證 × 飯圈飛輪

重用 ChefsMate 現成鐵軌(Wallet 卡、loyalty、餐廳端、推播):數位球證 = Wallet 卡(段位升級卡面升級);飯圈 = 場館 10km 內合作店家(憑球證享優惠);身分綁 customer_loyalty_id(嚴禁電話比對);餐廳消費只回饋裝飾幣,永不給 SLP。

※ 完整原文見舊頁 arena-blueprint / arena-social-roadmap(已合併到本看板)。

ArenaMate 進度看板 · 合併自 Roadmap + Blueprint · 由 Claude 維護