# 皮克敏抽直屬活動系統

依「皮克敏主題｜抽直屬活動企畫書」中的「召集任務」環節設計的小工具，
讓主持人出題、報到處人員回報，兩邊即時同步顯示進度。

- **報到回報端**（`report.html`）：只給報到處一位工作人員使用。畫面是 7 種皮克敏 × 1–9 號的
  按鍵表，有兩種模式：
  - **還沒發布任務時（報到登記模式）**：新生報到拿到身分卡後，直接點下對應按鍵登記，
    同一張卡可以連續點好幾次（代表好幾位新生都拿到那張卡）。這些登記會自動變成主持端
    出題用的卡池，**不需要另外輸入名單**。
  - **任務發布後（回報模式）**：確認新生的身分卡符合目前任務條件，點下對應按鍵回報給
    主持端；按到這張卡剩餘 0 張時該按鍵才會變灰。
- **主持端**（`host.html`）：每一輪只要按「自動產生任務」，系統就會從報到端登記、
  但還沒被叫過的卡片裡自動挑一組保證解得出來的組合，不用手動輸入種類、隻數或力量值總和；
  產生的敘述也可以直接在文字框裡微調再發布。即時看到已上台人數與名單，並保留歷史紀錄。
  發布後如果沒有透過報到端一張一張回報，也可以直接按「標記本輪卡片已收回」，
  把這一輪自動挑到的卡片整批標記成用過，下一輪出題就不會再挑到同一批卡片。

## 快速開始（本機測試，不需要任何帳號）

直接用瀏覽器打開 `index.html`（或用任何簡易伺服器開啟整個資料夾），
分別開兩個分頁進入「主持端」和「報到回報端」。

在還沒設定 Firebase 之前，系統會自動使用「本機測試模式」：靠瀏覽器的
`BroadcastChannel` + `localStorage` 同步，**只能在同一台電腦、同一個瀏覽器的不同分頁間同步**，
方便你在活動前先熟悉操作流程。畫面右上角的「連線模式」會顯示目前是哪一種模式。

## 正式上線（活動當天，不同裝置互通）

活動當天主持端和報到端通常是兩台不同裝置（例如主持人筆電＋報到處平板），
本機測試模式無法跨裝置同步，需要設定 Firebase Realtime Database（免費即可）：

1. 到 [Firebase Console](https://console.firebase.google.com/) 建立一個新專案。
2. 左側選單「建構」→「Realtime Database」→建立資料庫（地區建議選離自己近的，例如新加坡）。
3. 進入「規則」分頁，暫時設定成活動期間都能讀寫（**活動前後記得改回限制，避免長期公開暴露**）：
   ```json
   {
     "rules": {
       ".read": true,
       ".write": true
     }
   }
   ```
4. 左側「專案設定」→「一般」→捲到「您的應用程式」→新增一個「網頁應用程式」，
   複製畫面上出現的 `firebaseConfig` 物件。
5. 把內容貼到 [`js/firebase-config.js`](js/firebase-config.js)，取代裡面的 `YOUR_...` 佔位字串。
6. 重新整理頁面，右上角「連線模式」應該會變成「Firebase（跨裝置）」，
   此時不同裝置只要打開同一個網址，就能即時同步。

## 部署到 GitHub Pages

這是純前端的靜態網站，推上 GitHub 後可以直接用 GitHub Pages 發布：

1. 建立 GitHub repo，把這個資料夾整個推上去。
2. 到 repo 的 Settings → Pages，Source 選 `main` 分支、根目錄 `/`。
3. 等一兩分鐘後，會拿到一個 `https://<你的帳號>.github.io/<repo名稱>/` 的網址，
   活動當天用手機或平板打開這個網址即可，不需要另外架伺服器。

## 卡片卡池是怎麼來的

「自動產生任務」會從卡池裡挑保證解得出來的組合。卡池的主要來源就是報到端的登記
（見上面「報到登記模式」），**活動當天照正常報到流程操作，卡池就會自動建立好，
不需要額外再打一次名單**。

主持端的「卡片名單 / 卡池」區塊只是備用管道，適合活動前想先預登一部分卡片
（例如已經確定的學長姐或已知的分配）時使用：

- **單張新增**：選種類、輸入數字，按新增。
- **批次匯入**：一行一張，格式「種類,數字」，例如：
  ```
  紅,2
  紅,7
  yellow,5
  藍,9
  ```
  種類可以用中文名稱（紅／黃／藍／冰／紫／岩／羽）或代碼（red/yellow/blue/ice/purple/rock/wing）。
- 同一種「種類＋數字」的卡可以登錄很多張，這裡登錄的和報到端登記的會加總算在同一個卡池裡。
- 這裡手動新增的卡片可以點卡片名單裡的卡片刪除單張；報到端登記的卡片如果登記錯誤，
  用報到端的「撤銷上一筆回報」修正即可。

## 客製化

- 皮克敏種類、顏色、名稱：改 [`js/pikmin-data.js`](js/pikmin-data.js)。
- 數字範圍（預設 1–9）：同樣在 `js/pikmin-data.js` 調整 `PIKMIN_NUMBER_MIN` / `PIKMIN_NUMBER_MAX`。
- 版面顏色風格：改 [`css/style.css`](css/style.css)。

## 目前系統範圍

本系統只實作「召集任務」的出題與回報環節，也就是企畫書中「主持人發布召集任務 →
尋找符合條件的皮克敏組合 → 取得上台資格」這段。抽蘑菇分家、抽直屬姓名卡等實體道具
（蘑菇造型卡、姓名卡抽籤盒）仍照企畫書用實體方式進行，不在本系統範圍內。
