# Line Project Bot

LINE 平台遊戲測試 Bot 控制台（LP_Bot 重構版）。選擇平台與環境後以 Line Token 登入，可進入機台自動 Spin 測試。

## 功能

- **登入頁**：選擇平台（LP1、LC1...）與環境（Dev / B2B / Out）＋ Line Token
  - 平台清單與連線設定即時讀取 Google 試算表「專案_架構 Reference Guide」
  - 「開遊戲」按鈕：直接開啟該平台「跳過維護阻擋(ver2.0 use)」網址
  - 平台／環境／Token 皆記憶於 localStorage
  - 下拉選單支援滑鼠滾輪切換選項
- **大廳**：玩家資訊（aId / 暱稱 / 金幣）＋ 機台清單（SD 機台有徽章標示）
  - SD 機台 → 開啟自製 Spin 面板；其他機台 → 新視窗開啟 server 網址
- **SD Spin 面板**：押注、延遲、倍率停、轉數停設定 ＋ Spin/Stop ＋ Log 終端

## 開發

```bash
npm install
npm run dev      # http://localhost:8000
npm run build    # 輸出至 ./build
```

首次使用需將 Google service account 憑證放到 `config/credentials.json`
（格式參考 `config/credentials.example.json`，需有試算表唯讀權限）。

## 技術備註

- Vite + React 19 + antd 6，TypeScript
- **不可使用 React.StrictMode**：開發模式雙重掛載會使 NetManagerSD 等靜態單例的
  socket 連線互相覆蓋，請求全部失敗（status:-1）
- Google Sheets 讀取為純前端：service account 簽 JWT 換 token；
  非安全來源（區網 IP http）無 WebCrypto 時自動 fallback 至 jsrsasign
- SD socket 協定：依 gameUrl 本身的協定決定 ws/wss（bot 頁面協定不可靠）
- Spin 需帶 `mode:0` 的機台：1310、1311、1801、1803、1804、1805
  （特例類別在 `src/define/Game/SlotXXXX.ts`，依 SD3 客戶端原始碼）
  - 新增特例：建立類別檔覆寫 `SpinMode`，並在 `src/define/Game/Base/Slot.ts` 匯出
- 遊戲表 `build-templates/shared/jsons/` 來源：`SD2-Dev/_Debug/shared/jsons`
- 連線參數可用網址參數強制覆寫：`?host=`、`?port=`、`?patch=`、`?downloadurl=`、`?liffid=`

## 部署

```bash
npm run build
# 將 ./build 內容複製到網站目錄，例如 W:\web\MyWeb\Line_Project_Bot
```
