Commit Graph
12 Commits
Author SHA1 Message Date
JianMiauandClaude Fable 5 1ff149621f 新增 V2 場地排程頁面與實力權重系統
根本原因:
V1 三輪配對制不符合實際打球流程:實際是 2、3 號場地各打 8 局雙打、
每局換搭檔輪休;且配對完全沒考慮成員實力,會出現強強同隊的失衡對戰。

影響:
- 首頁改為 V2 場地排程:每局從全員挑 8 人分兩場地打雙打,其餘自動輪休,
  搭檔組合在全部輪過一遍之前不重複,每人上場局數落差最多 1 局
- tg_members 新增 skill 欄位(1~10,預設 1),attendance API 一併帶出實力,
  新增 GET /api/skills 供頁面開啟時載入全體實力表(載完才能產生賽程)
- V2 依實力排點:搭檔強弱互補、每局兩隊實力總和盡量接近,
  滑鼠停在隊伍上會浮出實力泡泡;讀取指定日期可回填已上傳的 V2 賽程
- V1 完整保留於 /v1,讀取出席名單改為依實力自動分 A / B 區
- V2 推送 LINE 固定走測試目標(LINE_TARGET_ID_LOCAL),不碰正式群組,
  訊息改用綠底標題+斑馬紋對戰列的新版 Flex 卡片
- 上傳沿用 badminton 表,battlecombination 改以場地為 key 存 16 組搭檔

修法:
App.tsx 拆為路由(/ 進 AppV2、/v1 進 AppV1);AppV2 排程演算法以 105 種
完美配對窮舉搭配重試 40 次,取「重複最少、總實力差最小」的一份賽程;
server 新增 /api/skills、LINE V2 Flex 訊息與 target 覆寫,attendance 查詢
LEFT JOIN tg_members 取得 skill(user_id 優先、nickname 備援、預設 1)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 11:28:21 +08:00
JianMiauandClaude Fable 5 121a5fee4c 新增讀取 Telegram 出席名單功能,讀取指定日期改為自動 fallback
根本原因:
Node-RED 的 Telegram bot「建喵打羽球」已把報名名單寫進同庫的 attendance 表,但配對器沒有任何入口讀取,每次仍需手動把出席者一個個打進名單。

影響:
- 新增 GET /api/attendance/:time,用既有 pool 讀 attendance 表,沒資料回 404
- 「讀取指定日期」改為兩段:先讀 badminton 配對資料,該日還沒配對時自動改載入出席名單
- 新增「讀取今日出席」按鈕可直接載入出席名單
- attendance 表沒有分區資訊,出席者一律先放 A 區、清空 B 區與既有配對,由使用者自行分配
- badminton 表結構與上傳流程不變

修法:
server.mjs 新增 attendance 端點;App.tsx 新增 findAttendance / loadAttendance / applyAttendance,loadResults 改用 findMatchResults 判斷後 fallback,移除不再使用的 loadMatchResults;README 補上讀取今日出席章節與 attendance 表結構。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 11:46:13 +08:00
JianMiauandClaude Fable 5 8cc05183f7 兩區人數落差時改為跨區平衡,並調整結果版面
根本原因:
原本配對邏輯只以人數多的一區為基準,缺額全部補「那個」。例如 A 區 7 人、B 區 5 人時會補 2 個「那個」,但總人數 12 是偶數,其實可以讓 A 區 1 人跨區支援就湊滿 6 隊真人對打。

影響:
- 兩區差距 2 以上時,每輪自動抽「差距÷2」人跨區支援,且每輪輪替不同人,跨區的人平均分攤
- 只有總人數為奇數時才會補 1 個「那個」
- 三輪之間維持無重複搭檔、同輪無人重複上場
- 「推送到 LINE」按鈕移到上方操作列,三組結果改為三欄並排顯示
- 摘要卡改顯示跨區支援與補位人數

修法:
新增 balanceZones / pickCrossMembers 依輪次輪替抽出跨區成員,createRoundTeams 改在每輪平衡後再建立隊伍;移除不再使用的 prepareParticipants 與 .share-row/.share-button 樣式,並同步更新 README 規則說明。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 15:22:04 +08:00
JianMiau 78142488f3 Show badge only in local test environment 2026-04-15 16:32:53 +08:00
JianMiau c343dc6f11 Set docker compose default to production mode 2026-04-15 16:28:12 +08:00
JianMiau 39b9ed8c08 Update README for current app workflow 2026-04-15 16:24:19 +08:00
JianMiau 2bed4f6df0 Add LINE push integration and target mode config 2026-04-15 16:22:19 +08:00
JianMiau 1687223631 Fix README path after moving project directory 2026-04-15 16:09:16 +08:00
JianMiau 27196dc2bf Add overwrite confirmation and update README 2026-04-15 10:35:17 +08:00
JianMiau 35eab44a7a Add loading match results by date 2026-04-15 10:11:53 +08:00
JianMiau 6c3ff0e3d1 Add DB upload flow and Docker deployment setup 2026-04-14 23:17:45 +08:00
JianMiau 268e76bf0d Initial React badminton team matching app 2026-04-14 22:35:03 +08:00