From b673587a41ed45bd5c26de9305a0eae2dcef86e3 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 8 Jul 2026 16:22:47 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=85=A8=E9=9D=A2=E6=9B=B4=E6=96=B0=20?= =?UTF-8?q?README/=E8=A6=8F=E5=8A=83/=E5=B7=A5=E4=BD=9C=E6=96=87=E4=BB=B6?= =?UTF-8?q?=20=E2=80=94=20=E5=B0=8D=E9=BD=8A=E5=87=BA=E6=B5=B7=E6=B1=BA?= =?UTF-8?q?=E7=AD=96=E6=94=AF=E6=8F=B4=E8=88=87=E5=85=A7=E5=AE=B9=E6=9F=A5?= =?UTF-8?q?=E6=A0=B8=E6=88=90=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README.md / README.zh-TW.md:新增「出海決策支援與學習迴路」特色小節 (工期預估/半途成果保留/加班搶修/任務復盤/連對streak/錯題本主動回想/ 無障礙);任務模板數 151→192(實際 TASKS.length);補 npm run stress 指令說明。 - docs/GAME_DESIGN.md:新增 §17 記錄本輪機制設計(工作窗決策鏈、carry/ rush 語意、debrief/streak、無障礙、內容資料修正);§11 狀態表新增 對應列;版本日期更新。 - docs/ROADMAP.md:新增「本輪已完成」摘要;修正三項已完成卻誤標「待辦」 的項目(CSV 匯出/趨勢儀表板/教師登入入口已完成);新增 bearing 備品 設計與 crew_shortage/strike 事件實效化兩項候選;任務/測試數字校正 為實跑值(192 題/154 測試);長期願景無障礙項目標記部分已完成。 - docs/HANDOFF.md:重寫為本輪工作交接紀錄,含已完成清單、下一步候選 (依免後端/需後端分類)、開發備忘(SW 快取版本、內容資料交叉檢查心法)。 - STATUS.yaml:更新日期與里程碑描述,納入內容查核與 bug 修正成果。 僅文件變更,不影響程式碼;typecheck / 154 tests / build 驗證不受影響。 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn --- README.md | 14 ++++++-- README.zh-TW.md | 14 ++++++-- STATUS.yaml | 6 ++-- docs/GAME_DESIGN.md | 28 +++++++++++++-- docs/HANDOFF.md | 87 +++++++++++++++++++++++++++++---------------- docs/ROADMAP.md | 46 +++++++++++++++++++----- 6 files changed, 144 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 09f411e..ced6737 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,13 @@ An educational, *Uncharted-Waters*-style game that reframes offshore **wind-farm - **Live Fleet Ops room** — every farm has **24 individual turbines**; dispatch engineers to parallel work orders, remote-reset soft faults, and run preventive inspections in real time. - **First-time interactive onboarding tutorial** — the assistant **Lily** runs a hand-holding, mobile-game-style coach-mark walkthrough (spotlight the relevant button, dim the rest) through one complete work-order loop. Skippable, and replayable from the settings (⚙) menu. +### Decision support & learning loop +- **Job estimate vs. weather window** — before departure, see the estimated hours for transit / boarding / inspection / repair against the allowed work window, plus a computed safety margin (ample / tight / short) and reminders about vessel wear, crew fatigue, and whether to wait for a better forecast day. Advisory only — the player decides. +- **Prudent return with progress carry** — if a repair is going badly mid-window, choose to keep working, **rush it** (finish remaining steps at half the time cost but a 25% chance of a safety incident), or **return to port and re-plan**: no safety penalty, and completed diagnosis/SOP steps are preserved for the next trip. Forced retreat (window closes) still wipes progress and logs an incident — rewarding "know when to fold." +- **Debrief & answer streaks** — each finished job gets a star rating plus a one-line takeaway; correct first-try diagnoses build a streak with a growing (capped) XP bonus. +- **Active-recall mistake log** — reviewing a past mistake starts with a hidden-answer self-test before revealing the correct answer and lesson, reinforcing retention over passive reading. +- **Accessibility** — a `prefers-reduced-motion`-aware toggle (also settable in-game) swaps autoplaying scene video for static stills and disables non-essential animation; sea-state and fault indicators use icon **and** color, not color alone. + ### Economy system - **Electricity revenue & availability share one source of truth**: the Fleet Ops `fleetUptime` (the actual share of turbines turning). Faulted / under-repair units don't generate — leaving units down directly costs you money. - **Quarterly SLA contract** — each quarter is 90 days; if average availability falls below 90% you pay a penalty. @@ -36,7 +43,7 @@ An educational, *Uncharted-Waters*-style game that reframes offshore **wind-farm ### Teaching design - **Fault-diagnosis quiz + SOP** is the learning core: each fault is a SCADA alarm → 4-choice "what to check FIRST" quiz → 5-step SOP (first two pre-done: confirm weather window, LOTO lock-out). -- **151-template judgment-task engine** across 7 categories (corrective / predictive / preventive / operational / weather / logistics / incident), most with trade-off choices, teaching feedback, and aid charts (trend / spectrum / radar). +- **192-template judgment-task engine** across 7 categories (corrective / predictive / preventive / operational / weather / logistics / incident), most with trade-off choices, teaching feedback, and aid charts (trend / spectrum / radar). - **Codex** of cleared faults for revision, **Course Mode** for teachers (assign a week's fault, lock graded missions by week), knowledge-point tagging, and a **cloud class leaderboard** (free, no backend) via a Google Apps Script Web App with server-side validation; nickname + class-code login, per-user save isolation. - **Bilingual (繁中 / English)**, character/dialogue system, procedural Web Audio SFX/BGM. @@ -53,8 +60,9 @@ npm install npm run dev # http://localhost:5173 npm run build # type-check + production build npm run typecheck # tsc --noEmit -npm test # dependency-free game-logic tests (test/run.mjs) +npm test # dependency-free game-logic tests (test/run.mjs) — 154 passing npm run sim # balance simulator: passive / active / full-crew strategies (test/sim.mjs) +npm run stress # concurrency/load simulation for the cloud leaderboard backend (test/stress.mjs) ``` CI (`.github/workflows/ci.yml`) runs `typecheck` + `test` + `build` on every PR to `main`. @@ -66,7 +74,7 @@ src/ │ ├─ game.ts # core reducer: economy, SLA, fleet, scoring │ ├─ farms.ts # 4 farms × 24 units each │ ├─ events.ts / incidents.ts # random events & fault catalogue (Fleet Ops) -│ ├─ tasks.ts # 151-template judgment-task engine +│ ├─ tasks.ts # 192-template judgment-task engine │ └─ profile.ts / course.ts # login, class code, weekly unlock ├─ ui/ │ ├─ campaign.ts # 7-mission storyline (4 acts) diff --git a/README.zh-TW.md b/README.zh-TW.md index cf3879f..05fb430 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -27,6 +27,13 @@ - **風場戰情室(即時營運層)** — 每座風場 **24 台個體機組**;即時派遣技師執行並行工單、遠端重啟軟性故障、執行預防性定檢。 - **首次互動式新手教學** — 助理**莉莉**以手機遊戲式的「聚光燈引導(coach-mark)」(高亮對應按鈕、其餘變暗)帶你走完一次完整工單循環;可跳過,並可從設定(⚙)選單重新播放。 +### 出海決策支援與學習迴路 +- **工期預估 vs 天氣窗** — 出海前顯示航線/登船/檢查/維修的預估耗時,對比天氣窗允許時段,算出「保留餘裕」(充足/偏緊/不足),並提醒船舶磨耗、技師疲勞、是否該等更好的天氣窗再出海。只提示、不擋出航,由玩家自行判斷。 +- **審慎返港・半途成果保留** — 維修中途作業窗吃緊時,可選擇繼續作業、**加班搶修**(剩餘步驟一次趕完、耗時減半,但 25% 機率安全近失事件),或**回港再規劃**(不計安全事件,已完成的診斷/SOP 進度保留、擇日續修)。被迫撤離(作業窗關閉)才會進度全失+計安全事件——鼓勵「看準時機、及時止損」。 +- **任務復盤與診斷連對** — 每次完工給星級評分+一句學習要點;診斷第一次就答對會累積連對紀錄,帶來逐步升高(有上限)的經驗值加成。 +- **錯題本主動回想** — 複習錯題時先隱藏正解、做二選一自我測驗,答完才揭曉正解與教訓,比單純閱讀反思更利記憶保留。 +- **無障礙設計** — 支援「減少動態」(隨系統偏好或遊戲內手動開關),啟用時場景影片改靜態畫面、停用非必要動畫;海象與故障狀態同時以圖示+顏色呈現,不僅依賴顏色辨識。 + ### 經濟系統 - **售電收入與妥善率以同一真實來源計算**:戰情室機隊實際運轉比例 `fleetUptime`。故障/維修中的機組不發電——放著機組不修就是直接少賺錢。 - **季度合約 SLA** — 每季 90 天,平均可用率低於 90% 即罰違約金。 @@ -36,7 +43,7 @@ ### 教學設計 - **故障診斷測驗 + SOP** 為學習核心:每個故障 = SCADA 告警 → 4 選 1「最先排查什麼」測驗 → 5 步 SOP(前兩步預設完成:確認天氣窗、LOTO 上鎖)。 -- **151 題判斷型任務引擎**,七大類(故障搶修/監控判讀/預防保養/營運決策/天候處置/供應鏈人力/突發),多為取捨題+教學回饋+輔助圖(趨勢/頻譜/天氣雷達)。 +- **192 題判斷型任務引擎**,七大類(故障搶修/監控判讀/預防保養/營運決策/天候處置/供應鏈人力/突發),多為取捨題+教學回饋+輔助圖(趨勢/頻譜/天氣雷達)。 - **圖鑑**(已修故障複習)、**課程模式**(教師指派某週故障、按週鎖計分主線)、知識點標籤,以及**雲端班級排行榜**(免費免後端,Google Apps Script Web App+伺服端防作弊);暱稱+班級碼登入、每人存檔獨立。 - **中英雙語**、人物對話系統、Web Audio 合成音效音樂。 @@ -53,8 +60,9 @@ npm install npm run dev # http://localhost:5173 npm run build # 型別檢查 + 正式打包 npm run typecheck # tsc --noEmit -npm test # 免相依的遊戲邏輯測試(test/run.mjs) +npm test # 免相依的遊戲邏輯測試(test/run.mjs)— 154 項全綠 npm run sim # 平衡模擬器:passive / active / full-crew 三策略(test/sim.mjs) +npm run stress # 雲端排行榜後端的併發/負載模擬(test/stress.mjs) ``` CI(`.github/workflows/ci.yml`)於每個 PR 對 `main` 跑 `typecheck` + `test` + `build`。 @@ -66,7 +74,7 @@ src/ │ ├─ game.ts # 核心 reducer:經濟、SLA、機隊、計分 │ ├─ farms.ts # 4 座風場 × 每座 24 機組 │ ├─ events.ts / incidents.ts # 突發事件與故障型錄(戰情室) -│ ├─ tasks.ts # 151 題判斷型任務引擎 +│ ├─ tasks.ts # 192 題判斷型任務引擎 │ └─ profile.ts / course.ts # 登入、班級碼、每週開放 ├─ ui/ │ ├─ campaign.ts # 主線 7 關(四幕) diff --git a/STATUS.yaml b/STATUS.yaml index 724abbb..3df6ab6 100644 --- a/STATUS.yaml +++ b/STATUS.yaml @@ -3,8 +3,8 @@ name_zh: 離岸風場・運維傳說 category: edtech progress: 100 status: active -last_updated: "2026-07-02" -next_milestone: "出海決策支援與學習迴路閉環已完成:出海前工期預估vs天氣窗(航線/登船/檢查/維修+保留餘裕,含磨耗/疲勞/擇日/缺料提醒)、審慎返港再規劃(不計安全事件)+半途成果保留(#carry)、⚡加班搶修風險抉擇(#rush,快vs穩三選一)、任務復盤星級+一句takeaway、診斷連對streak(封頂XP加成+🔥里程碑)、錯題本主動回想(檢索練習)、無障礙(減少動態:系統偏好+遊戲內開關;色覺友善雙重編碼)、戰情室SLA季末風險+母港預算續航提醒、Pages部署來源鎖定GitHub Actions(configure-pages)。先前:循序漸進難度與長線動機已完成:運維層級 Tier 系統(依進度自動推進,故障/備品/經濟壓力分層)、入門引導+UI 漸進揭露、每日任務(遊戲內日曆)、每週主題挑戰(風暴/斷料週等,綁戰情室事件池)、情境包匯入(教師自訂題組)、真實度深化(jack-up 安裝船動員前置期+計畫性定期保養)、故障/備品分層擴充(25 故障/33 備品)、真實案例研究事件(經查核的真實風場事故,具名+出處/去識別兩類,Tier 偶發+母港案例檔)。併發壓力測試通過(npm run stress);雲端後端 v2.1 加併發鎖(LockService);PWA 可安裝/離線(手機網頁並存);教師面板 CSV 匯出;營運趨勢儀表板/賽後復盤;登入畫面教師入口;存檔版本化遷移;code-split(初始包 653KB→268KB);知識點掌握度(答題正確率+弱點補強建議);HSE 科別加厚(LOTO 能量隔離/高處墜落防護/SIMOPS 同時作業,含圖鑑+鑑別診斷+戰情室事件);直升機進場與電網限電真實運維權衡判斷任務(159 題);真實/擬真案例擴充至 24 則,並可在自由營運中心任務清單以『案例演練』自然出現(略過 Tier、答後揭示 O&M 教訓並收錄圖鑑);手機直向專屬精簡版面(母港+交易所+出海+維修+所有彈窗,自動偵測裝置;PWA 快取版本化+錯誤邊界+啟動安全網防更新後空白);學習成效分析(各科別能力雷達圖 + 錯題本/維修檢討反思);母港建設視覺成長(用獲利升級碼頭/倉儲/起重機/燈塔,母港畫面隨之長大,純視覺不影響計分);新手友善漸進式揭露(Tier 1 隱藏三日預報/技師疲勞細節,Tier 2 解鎖)+ 圖鑑生活化比喻 + 戲劇性非技術事件(環團/媒體/社區/稽查)。後續延伸候選:掌握度同步雲端供教師端個別鑽取、獨立測驗模式(Exam Mode)、母港視覺疊到實景背景" +last_updated: "2026-07-08" +next_milestone: "出海決策支援與學習迴路閉環已完成:出海前工期預估vs天氣窗(航線/登船/檢查/維修+保留餘裕,含磨耗/疲勞/擇日/缺料提醒)、審慎返港再規劃(不計安全事件)+半途成果保留(#carry)、⚡加班搶修風險抉擇(#rush,快vs穩三選一)、任務復盤星級+一句takeaway、診斷連對streak(封頂XP加成+🔥里程碑)、錯題本主動回想(檢索練習)、無障礙(減少動態:系統偏好+遊戲內開關;色覺友善雙重編碼)、戰情室SLA季末風險+母港預算續航提醒、Pages部署來源鎖定GitHub Actions(configure-pages)。內容系統全面查核與修正(事件/案例/任務/故障×消費端交叉驗證):每日任務維持型項目改日結算(deferred,修正開局白拿)、安全事件數夾0(堵刷分漏洞)、備品資料誤植修正(感測器/變槳故障)、交易所主線防卡(進行中工單備品永遠可見)、移除3組重複任務模板、案例研究資料誤植修正;判斷型任務引擎擴充至192題。先前:循序漸進難度與長線動機已完成:運維層級 Tier 系統(依進度自動推進,故障/備品/經濟壓力分層)、入門引導+UI 漸進揭露、每日任務(遊戲內日曆)、每週主題挑戰(風暴/斷料週等,綁戰情室事件池)、情境包匯入(教師自訂題組)、真實度深化(jack-up 安裝船動員前置期+計畫性定期保養)、故障/備品分層擴充(25 故障/33 備品)、真實案例研究事件(經查核的真實風場事故,具名+出處/去識別兩類,Tier 偶發+母港案例檔)。併發壓力測試通過(npm run stress);雲端後端 v2.1 加併發鎖(LockService);PWA 可安裝/離線(手機網頁並存);教師面板 CSV 匯出;營運趨勢儀表板/賽後復盤;登入畫面教師入口;存檔版本化遷移;code-split(初始包 653KB→268KB);知識點掌握度(答題正確率+弱點補強建議);HSE 科別加厚(LOTO 能量隔離/高處墜落防護/SIMOPS 同時作業,含圖鑑+鑑別診斷+戰情室事件);直升機進場與電網限電真實運維權衡判斷任務;真實/擬真案例擴充至 24 則,並可在自由營運中心任務清單以『案例演練』自然出現(略過 Tier、答後揭示 O&M 教訓並收錄圖鑑);手機直向專屬精簡版面(母港+交易所+出海+維修+所有彈窗,自動偵測裝置;PWA 快取版本化+錯誤邊界+啟動安全網防更新後空白);學習成效分析(各科別能力雷達圖 + 錯題本/維修檢討反思);母港建設視覺成長(用獲利升級碼頭/倉儲/起重機/燈塔,母港畫面隨之長大,純視覺不影響計分);新手友善漸進式揭露(Tier 1 隱藏三日預報/技師疲勞細節,Tier 2 解鎖)+ 圖鑑生活化比喻 + 戲劇性非技術事件(環團/媒體/社區/稽查)。後續延伸候選:bearing類故障備品命名/Tier重新設計、crew_shortage/strike事件實效化、掌握度同步雲端供教師端個別鑽取、獨立測驗模式(Exam Mode)、母港視覺疊到實景背景" technologies: - React - TypeScript @@ -16,4 +16,4 @@ outputs: - presentation description: "An Uncharted-Waters-style educational game for offshore wind O&M training." description_zh: "大航海時代風格、以離岸風電運維為核心的教學遊戲。" -key_metrics: "四畫面UI+三模式背景(模擬/實境/漫畫)+俯瞰60°、159題判斷型任務引擎(7類,含直升機進場/電網限電權衡)+情境包匯入、雙層架構(計分主線+無限沙盒)、運維層級Tier循序漸進難度、每日任務+每週主題挑戰、25故障/33備品分層(含HSE:LOTO/墜落防護/SIMOPS)、jack-up動員+計畫保養、多風場+突發事件+安全KPI、知識點掌握度(正確率+弱點補強)、學號帳號+通關碼(後端驗證)+雲端為主存檔/紀錄、15項成就+個人檔案頁、教師檢視面板、雲端班級排行榜(Apps Script,併發壓測通過)、每週開放、中英雙語" +key_metrics: "四畫面UI+三模式背景(模擬/實境/漫畫)+俯瞰60°、192題判斷型任務引擎(7類,含直升機進場/電網限電權衡)+情境包匯入、雙層架構(計分主線+無限沙盒)、運維層級Tier循序漸進難度、每日任務(維持型日結算)+每週主題挑戰、出海決策支援(工期預估/半途成果保留/加班搶修)、25故障/33備品分層(含HSE:LOTO/墜落防護/SIMOPS)、jack-up動員+計畫保養、多風場+突發事件+安全KPI、知識點掌握度(正確率+弱點補強)+錯題本主動回想、無障礙(減少動態+色覺友善)、學號帳號+通關碼(後端驗證)+雲端為主存檔/紀錄、15項成就+個人檔案頁、教師檢視面板、雲端班級排行榜(Apps Script,併發壓測通過)、每週開放、中英雙語" diff --git a/docs/GAME_DESIGN.md b/docs/GAME_DESIGN.md index 3b87b40..994aa71 100644 --- a/docs/GAME_DESIGN.md +++ b/docs/GAME_DESIGN.md @@ -1,7 +1,7 @@ # 離岸風場・運維傳說 — 遊戲設計文件(GAME DESIGN, 權威版) > 本文件是**現行遊戲模式的單一真實來源**。早期的 [GDD.md](GDD.md) 為歷史概念(勇者鬥惡龍式 tile-RPG),已不採用。 -> 實作以 `src/` 與本文件為準。Last updated: 2026-06-21. +> 實作以 `src/` 與本文件為準。Last updated: 2026-07-08。 ## 1. 定位 離岸風場 **運維(O&M)管理模擬 + 教學遊戲**。玩家經營一支運維團隊:調度船隊與技師、管理備品供應、在天氣窗內登塔排除故障,維持風場**可用率與發電量**。診斷與 SOP 為教學核心。風格參考《大航海時代》(船隊/港口/儀表)。 @@ -106,7 +106,7 @@ | 發電量 KPI + 綜合績效分(含安全扣分、風場加分)| ✅ 已實作(#28/#34)`computeScore` | | **登入(暱稱+班級碼) + 雲端排行榜(Apps Script)** | ✅ 已實作(#29/#30/#35);選配存檔同步(#31)| | **多風場營運 + 突發事件系統 + 安全 KPI** | ✅ 已實作(#34)| -| **自由營運沙盒:判斷型任務引擎(151 模板/7 類)+ 輔助圖** | ✅ 已實作 | +| **自由營運沙盒:判斷型任務引擎(192 模板/7 類)+ 輔助圖** | ✅ 已實作 | | **每週開放機制(教師設定週次鎖計分主線)** | ✅ 已實作(#3)| | **三模式背景(模擬/實境/漫畫)+ 俯瞰 60° + 船型(CTV/SOV/Jack-up)** | ✅ 已實作(#32/#5)| | **維修多場景(機艙/塔架/輪轂/甲板)+ 動態細節** | ✅ 已實作(#5)| @@ -117,6 +117,11 @@ | **倉儲折舊(持有維持費+折舊報廢)** | ✅ 已實作(#warehouse)`dailyStorageCost`/`SPOIL_CHANCE`| | **動態 SCADA 趨勢圖+付費進階檢測** | ✅ 已實作(#scada)`diagLevel`/`TaskChart` 動畫| | **技師疲勞(shift limit)+船舶保養週期** | ✅ 已實作(#7)`fatigue`/`vesselWear`| +| **出海工期預估 vs 天氣窗(決策支援)** | ✅ 已實作(見 §17)`workWindowMax`| +| **半途成果保留(審慎返港)+加班搶修(風險抉擇)** | ✅ 已實作(見 §17)`REPLAN_RETURN`/`RUSH_SOP`| +| **任務復盤(星級+takeaway)+診斷連對 streak** | ✅ 已實作(見 §17)| +| **錯題本主動回想(檢索練習)** | ✅ 已實作(見 §17)`MistakeLog`| +| **無障礙(減少動態+色覺友善雙重編碼)** | ✅ 已實作(見 §17)`useReducedMotion`| | CC0 實體音樂 / 每機獨立健康度 | ⏳ 規劃中(見 §14)| > 兩層架構:**評量層**=全班相同的主線 7 關(教師按週開放、計成績);**自由營運層**=沙盒無限判斷型任務(永遠開放、只進排行榜)。 @@ -220,3 +225,22 @@ scores(user_id, score, availability, generation_mwh, missions_done, day, updated - **併發壓力測試**:`npm run stress`(`test/stress.mjs`)忠實重現雲端後端契約(djb2 簽章/clampInt/8 秒節流/排行彙整/同時執行上限)做併發負載,證實多人同時送分可負荷——併發有界不丟請求、節流去重削減約 7 成寫入、簽章在併發下仍正確,延遲僅優雅升高。詳見 [STRESS_TEST.md](STRESS_TEST.md)。 - **真實案例研究事件(case studies)**:`src/state/caseStudies.ts` 收錄經多來源研究 + 雙重(事實/敏感度)查核的真實風場事故(灌漿連接滑移、Robin Rigg 規範錯誤、沖刷、軸承 WEC/電蝕、葉片膠合品質逃逸、CPS 磨損、機艙火災、jack-up 穿刺…)。由 `advance()` 以極低機率(`rollCaseStudy`)依 Tier 偶發快報,永久收錄母港「📁 案例檔」(`CaseFileModal`)。**具名+附出處**(系統性/公開紀錄)與**去識別技術重現**(敏感個案)兩類分流;不改主存檔數值、`relatesTo` 連回既有故障。規則與守則見 [CASE_STUDIES.md](CASE_STUDIES.md)。 +## 17. 出海決策支援・學習迴路收斂・無障礙(本輪新增) +延續「作業安全窗(work window)」機制,補上「出海前判斷」與「出海後止損」的完整決策鏈,並收斂學習迴路(檢索練習/復盤)與無障礙基礎。 + +- **出海前工期預估 vs 天氣窗**(`SailScreen`):出勤就緒檢查新增「⏱ 工期預估 vs 天氣窗」卡 —— 列出航線(單程/往返)、登船、檢查/診斷、維修 SOP 的預估耗時,對比 `workWindowMax()`(與現場維修**共用同一公式**,兩處數字永遠一致)算出的天氣窗允許時段,並算出「保留餘裕」(充足/偏緊/不足)。同卡另附**判斷提醒**:船舶磨耗縮窗、技師疲勞接近輪班上限、今日不利但預報有可作業日時建議「靠港等窗」。只提示、不擋出航 —— 由玩家自行判斷。 +- **半途成果保留(#carry,`REPLAN_RETURN`)**:維修中途作業窗吃緊時,除「繼續作業」外新增**「回港再規劃」**:進 1 天、**不計安全事件**、已完成的診斷/SOP 步驟**保留**(工作交接紀錄) —— 擇日重新登塔只需重擲作業窗續修。與「作業窗關閉才撤離」(`FAIL_REPAIR`:進度全失 + 計 1 次安全事件)明確區隔,獎勵「看準天氣窗、及時止損」優於「硬撐到窗關」。母港工單、登船畫面、出海工期預估(只算剩餘工作)全鏈路呈現保留狀態。 +- **加班搶修(#rush,`RUSH_SOP`)**:維修不利時的第三個選項 —— 剩餘 SOP **一次趕完、總耗時減半**(`rushCost`),但有 `RUSH_RISK`(25%)機率觸發安全近失事件(計入 `safetyIncidents`)。僅在「維修不利」時出現(緊急槓桿、非常規最佳解),與「繼續作業 / 回港再規劃」構成三選一:**搶修(快、險) vs 續作(穩、可能窗關) vs 返港(慢、保進度)**。風險由 UI 擲骰、reducer 保持確定性(可測、fuzz 友善)。 +- **任務復盤(#debrief)**:完工時經理給「出海復盤」:星級(依剩餘作業窗餘裕;診斷答錯 ≥2 次扣星) + 量化摘要(窗 N 時段、用 X、餘 Y) + 一句 takeaway,把每次出海變成可檢討的學習點。 +- **診斷連對 streak(#streak)**:`GameData.answerStreak` 於 `RECORD_ANSWER`(僅計首次作答)連對 +1、答錯歸零;每次答對加 XP = `streak×2`(封頂 10)。維修診斷面板與自由營運中心皆顯示 🔥「連對 N」徽章與里程碑通知(3 題/每 5 題),鼓勵「出手前先思考」而非亂猜。 +- **錯題本主動回想(`MistakeLog`)**:複習前先「自我測驗」—— 兩選項(正解 vs 你當時的錯誤選擇)隱藏正解,答對/答錯後才揭曉正解與教訓、再寫維修檢討。檢索練習(active recall)比只看反思更利長期記憶保留。 +- **無障礙**:`useReducedMotion()` 尊重 `prefers-reduced-motion` 系統偏好,並支援個人檔案頁「🎬 減少動態」手動開關(localStorage 覆寫)——場景影片改靜態首幀、CSS 動畫停用。海象/故障狀態改用**圖示 + 顏色雙重編碼**(☀/⛅/🌀、⚠ 故障徽章),不只靠顏色區分(色覺友善)。 +- **遊戲手感(juice)**:完工跳出「💰+◎ ⭐+XP」toast;Toaster 改**小佇列**(多則通知依序顯示,不再互相蓋掉);TopBar 預算增減短暫變色。 +- **戰情室 SLA 季末風險 + 母港預算續航**:戰情室新增本季平均妥善率 vs 底線 90% + 季末剩餘天數的 inline 橫幅;母港 KPI 區新增「淨現金流/日」,為負時顯示「預算可撐 ~N 天」。 +- **內容系統全面查核與修正**: + - **每日任務改為日結算**(`DailyDef.deferred`):「零安全事件/健康度/妥善率」等維持型任務原本在 `ROLL_DAILY` 的當下即可能為真 → 立即發獎(等同開局白拿);改為僅在「隔日 roll 前」結算,須撐過一整天才算達成。 + - **安全事件數夾 0**:`RESOLVE_TASK` 的 `dSafety` 負值(改善型選項)原本可把 `safetyIncidents` 打成負數 → `computeScore` 的扣分項反而變加分,形成可重複刷分的漏洞;`Math.max(0, …)` 夾底。 + - **備品資料修正**:`sensor`(感測器誤報)誤耗發電機碳刷 → 改耗風速計;`pitch`/`pitch_fault`(變槳故障,quiz/SOP 皆講後備電池)誤耗液壓油 → 改耗變槳後備電池(液壓根因由 `pitch_hyd`/`pitch_hydraulic_leak` 負責)。 + - **主線防卡**:交易所預設依 Tier 過濾備品,但進行中工單的必備備品**永遠可見**(不受過濾),避免主線卡在「找不到料」。 + - **移除 3 組重複任務模板**(`b_harmonics`/`g_medical_evac`/`c_dehumidify` 與既有題重複,避免同題雙倍抽中率);`caseStudies.ts` 一則案例「正解」誤植安全事件(全內容唯一反例)已修正。 + diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index bb301e1..c897c27 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,38 +1,63 @@ # 交接紀錄 — Session Handoff -> 給下一個開發 session 的快速接手筆記。最後更新:**2026-06-29**。 -> 完整藍圖見 [ROADMAP.md](ROADMAP.md);專案現況見 `../STATUS.yaml`;測試紀錄見 [TEST_REPORT.md](TEST_REPORT.md)。 +> 給下一個開發 session 的快速接手筆記。最後更新:**2026-07-08**。 +> 完整藍圖見 [ROADMAP.md](ROADMAP.md);設計權威版見 [GAME_DESIGN.md](GAME_DESIGN.md) §17;專案現況見 `../STATUS.yaml`;測試紀錄見 [TEST_REPORT.md](TEST_REPORT.md)(注意:該檔測試數為較早快照,以 `npm test` 實跑為準)。 ## 目前狀態 -- `main` 為最新;所有功能皆已合併。`npm test` = **148 全綠**,typecheck / build 乾淨。 -- 開發分支:`claude/beautiful-thompson-nz0uxo`(每次 PR 後 reset 同步至 origin)。 - -## 本階段(近期)已完成 -1. **故事/內容**:7 issue(A–G)、真實+擬真案例 **24 則**(可在自由營運中心任務清單以「案例演練」自然出現、略過 Tier)、HSE 科別加厚(LOTO/墜落防護/SIMOPS)、直升機進場/電網限電權衡任務(判斷任務共 **159**)。 -2. **手機**:全 App 手機直向專屬精簡版面(母港+交易所+出海+維修+所有彈窗),`useIsMobile()` 自動偵測;桌機/橫向維持原 1600×900 舞台。頂列導覽分頁。 -3. **穩定性**:PWA 防更新後空白 —— SW 快取版本化(目前 **v5**)、ErrorBoundary、index.html 啟動安全網。 -4. **WM3 評估報告建議(免後端部分全數完成)**: - - 能力雷達圖(個人檔案頁,3.1) - - 錯題本 + 維修檢討反思(3.3) - - 母港建設・視覺成長(🏗 設施,2.2) - - 漸進式揭露強化(Tier 1 隱藏三日預報/技師疲勞,1.2) - - 生活化比喻(圖鑑 💡,1.2) - - 戲劇性非技術事件(環團/媒體/社區/稽查,2.2) - -## 下一步候選(未做) -### A. 需後端(要先重新部署 Apps Script `docs/leaderboard-appsscript/Code.gs`) -- **教師端個別學生能力雷達鑽取(報告 3.1)** - - 作法:把 `GameData.mastery` 隨「送分/存檔」一併上雲(`src/cloud/sheet.ts` 的 payload + `Code.gs` 多存一欄 mastery JSON)→ `TeacherModal.tsx` 點學生展開 → 重用 `src/ui/RadarChart.tsx` 畫各科別雷達。 - - 注意:`mastery` 可能偏大,建議只存彙整(各 disc 的 n/ok)而非整包。 -- **獨立測驗模式 Exam Mode(報告 3.2)** — 較大里程碑 - - 教師發布測驗(指定情境集)、作答中隱藏即時回饋、結束生成診斷報告並同步教師端;動態參數(數值/價格隨帳號種子變動)防抄襲(已有 `accountSeed()` 可重用)。 - -### B. 免後端(隨時可做) +- `main` 為最新;所有功能皆已合併(最新:PR #114)。`npm test` = **154 全綠**,typecheck / build 乾淨。 +- `npm run sim`(平衡)、`npm run stress`(併發)皆通過;`npm run sim` 建議在下次改動經濟數值後重跑一次(本輪修正了 sensor/pitch 備品與每日任務發獎時機)。 +- 開發分支:`claude/screen-loading-after-update-1wnuss`(每次 PR 合併後從最新 `main` reset 同步)。 +- GitHub Pages 部署來源已鎖定為 **GitHub Actions**(`deploy.yml` 內 `actions/configure-pages`,`enablement: true`);若日後又被誤切回「Deploy from a branch」,下次部署會自動修正回來。**切勿用 Actions 頁面的「Re-run」重跑 Pages 部署**——會觸發「重複 github-pages artifact」錯誤,要重部署請用 `Run workflow` 開新的一次。 + +## 本階段(本輪)已完成 + +### A. 出海決策支援(讓玩家判斷「出不出海」「要不要撤」) +1. **出海前工期預估 vs 天氣窗**(`SailScreen`):航線/登船/檢查/維修的預估耗時 vs `workWindowMax()`(與現場維修共用同一公式),算出「保留餘裕」;附磨耗/疲勞/天氣窗擇日的判斷提醒。 +2. **半途成果保留(#carry,`REPLAN_RETURN`)**:審慎返港 = 進 1 天、不計安全事件、已完成的診斷/SOP 進度保留(擇日續修)。與「作業窗關閉才撤離」(`FAIL_REPAIR` = 進度全失+計安全事件)明確區隔。 +3. **加班搶修(#rush,`RUSH_SOP`)**:維修不利時第三選項——剩餘 SOP 一次趕完、耗時減半,但 25%(`RUSH_RISK`)機率安全近失事件。「搶修(快、險)vs 續作(穩)vs 返港(慢、保進度)」三選一。 + +### B. 學習迴路收斂 +4. **任務復盤(#debrief)**:完工給星級(依餘裕/答錯扣星)+ 量化摘要 + 一句 takeaway。 +5. **診斷連對 streak(#streak)**:`GameData.answerStreak`,首次作答連對 +1、答錯歸零,每次答對加 XP(封頂 10);維修診斷與營運中心皆顯示 🔥 徽章。 +6. **錯題本主動回想**:複習前先自我測驗(隱藏正解、二選一),答完才揭曉正解+教訓再寫檢討——比只看反思更利記憶保留。 + +### C. 無障礙 + 遊戲手感 +7. **減少動態**:`useReducedMotion()` 尊重系統 `prefers-reduced-motion`,個人檔案頁也可手動開關(localStorage 覆寫 + body class);場景影片改靜態首幀、CSS 動畫停用。 +8. **色覺友善雙重編碼**:海象預報改圖示(☀/⛅/🌀)、戰情室故障格加 ⚠ 徽章,不只靠顏色。 +9. **Juice**:完工/連對里程碑 toast、Toaster 改小佇列(不再互相蓋掉)、TopBar 預算增減短暫變色。 +10. **戰情室 SLA 季末風險 + 母港預算續航**提醒(inline,取代純輪播)。 + +### D. 內容系統全面查核與修正(事件/案例/任務/故障 × 消費端交叉驗證) +11. **每日任務改為日結算**(`DailyDef.deferred`):「零安全事件/健康度/妥善率」等維持型任務原本在 `ROLL_DAILY` 當下即可能為真 → 立即發獎(開局白拿);改為僅在隔日 roll **前**結算,須撐過一整天。 +12. **安全事件數夾 0**:`RESOLVE_TASK` 的 `dSafety` 負值(改善型選項)原本可把 `safetyIncidents` 打成負數 → `computeScore` 反向加分,可重複刷分。已夾底。 +13. **備品資料修正**:`sensor` 誤耗發電機碳刷→改風速計;`pitch`/`pitch_fault`(quiz/SOP 都在講後備電池)誤耗液壓油→改變槳後備電池。 +14. **主線防卡**:交易所預設依 Tier 過濾,但進行中工單的必備備品**永遠可見**。 +15. **移除 3 組重複任務模板**(`b_harmonics`/`g_medical_evac`/`c_dehumidify`);1 則案例研究「正解」誤植安全事件已修正;`yaw_motor`/`gen_brush` 展示庫存 0 的誤導修正。 +16. **已查核確認乾淨**:quiz 索引、跨檔 id 引用(incidents/faults/cases/parts)、i18n 完整性(zh/en 皆有)、Tier 閘門(無「故障出現但備品鎖住」)、派工守衛一致性、事件權重加總、案例去重。 + +### E. 部署基礎設施 +17. **Pages 部署硬化**:`deploy.yml` 加 `actions/configure-pages`(`enablement: true`)鎖定發佈來源;`concurrency.cancel-in-progress` 改 `false`。修復了「Pages 來源被切回分支模式,線上端出未 build 原始碼(index.html 指向 /src/main.tsx、整頁 404)」的事故。 + +## 下一步候選(未做,依需要程度排序) + +### B1. 設計決定後即可做(免後端) +- **bearing 類故障備品命名/Tier 重新設計** — `bearing`(主軸承振動)與 `gen_vibration`(發電機軸承磨損)目前共用 `pitch_bearing`(變槳軸承,權宜規避 Tier 閘門)。建議新增 Tier 3「發電機/主軸軸承」備品並重新指派 `part`;需確認對 Tier 3 經濟平衡的影響。 +- **crew_shortage / strike 事件實效化** — 目前只調整展示用 `techAvail`,`OPS_DISPATCH` 並不讀取此值,事件形同純展示。建議接上技師疲勞加成,或在派工時檢查可用人力上限。 +- **文件內殘留的舊統計數字** — `docs/TEST_REPORT.md`(140 項測試)、`docs/MANUAL.zh-TW.md`/`docs/WALKTHROUGH.md`(151 題判斷任務)為較早版本快照,本輪只更新了 README/ROADMAP/GAME_DESIGN/STATUS,這幾份文件下次一併校正為 `npm test`(154)/`TASKS.length`(192)實跑值。 +- **平衡回測**——本輪重跑 `npm run sim` 後,`active` 策略的妥善率數字與先前記錄不同(83%→67%)。已確認**非數值失衡**:`advance()` 的倉儲折舊迴圈依 `Object.entries(inventory)` 的**插入順序**逐一擲骰(`Math.random() < SPOIL_CHANCE`),而 sensor/pitch 的備品 id 變更改變了 inventory 物件的 key 順序,連帶讓固定種子(`mulberry32(20260622)`)重播出的隨機序列整段分岔(蝴蝶效應)。三策略排序(passive ≪ active ≪ full-crew)與健康度仍正常,判定為模擬器對「內容資料變更」的已知副作用,非迴歸;下次調整故障/備品資料後,預期 `npm run sim` 的絕對數字仍會因同樣原因跳動,只需確認**相對排序與梯度健康**,不必追求絕對數字穩定。 + +### 需後端(要先重新部署 Apps Script `docs/leaderboard-appsscript/Code.gs`) +- **教師端個別學生能力雷達鑽取** — 把 `GameData.mastery` 隨送分/存檔上雲(`src/cloud/sheet.ts` payload + `Code.gs` 多存一欄)→ `TeacherModal.tsx` 點學生展開 → 重用 `RadarChart.tsx`。建議只存彙整(各 disc 的 n/ok)而非整包。 +- **獨立測驗模式 Exam Mode** — 教師發布測驗、作答中隱藏即時回饋、結束生成診斷報告並同步教師端;動態參數(數值/價格隨帳號種子變動)防抄襲(可重用 `accountSeed()`)。 + +### 免後端、較小 - 母港 `PortScene` 疊到母港實景背景(目前僅在 PortModal 預覽)。 -- 教學對話加入更多生活化比喻(目前在圖鑑);更多戲劇事件/限時挑戰。 +- 戰情室停機折抵「現金」收入的設定開關(目前只折抵淨發電)。 +- 無障礙延伸:鍵盤操作、更全面的色盲友善配色審查、對話/音效字幕。 ## 開發備忘 -- **每次改版請把 `public/sw.js` 的 `CACHE = "wfg-cache-vN"` 版本號 +1**(避免更新後舊快取殘留造成空白)。 -- 新功能務必在 `test/run.mjs` 補對應測試(純資料/reducer 為主);UI 可用無頭瀏覽器截圖驗證(見下)。 -- 視覺驗證:`npm run build` → 將 `dist/` 放到 `serve/windFarm-Go/` 以 `python3 -m http.server` 提供 → 用 `playwright-core` + 預裝 Chromium(`/opt/pw-browsers/chromium-1194/chrome-linux/chrome`)截圖(390×844 模擬手機);guest 存檔 key = `windfarm-go-save::/guest1`。 -- 指令:`npm test`(單元 148)、`npm run sim`(平衡)、`npm run stress`(併發)、`npm run build`、`npm run live-check`(線上後端,需本機跑;沙盒代理擋 script.google.com)。 +- **每次改版請把 `public/sw.js` 的 `CACHE = "wfg-cache-vN"` 版本號 +1**(避免更新後舊快取殘留造成空白;目前 **v6**)。 +- 新功能務必在 `test/run.mjs` 補對應測試(純資料/reducer 為主);新 reducer action 記得也加進 `test/run.mjs` 的 fuzz 動作池(`randomAction`)。 +- 視覺驗證:`npm run build` → 將 `dist/` 放到 `serve/windFarm-Go/` 以 `python3 -m http.server` 提供 → 用 `playwright-core` + 預裝 Chromium 截圖;guest 存檔 key = `windfarm-go-save::/guest1`。 +- 指令:`npm test`(單元 154)、`npm run sim`(平衡)、`npm run stress`(併發)、`npm run build`、`npm run live-check`(線上後端,需本機跑;沙盒代理擋 script.google.com)。 +- 內容資料若新增/修改故障(`incidents.ts`/`faults.ts`)、備品(`data.ts`)或任務模板(`tasks.ts`),務必交叉檢查:`part` 是否存在於 `PARTS`、`discipline` 是否與 UI 呈現一致、`minTier` 是否形成「故障可見但備品鎖住」的閘門矛盾——本輪查核就是靠這套交叉驗證抓到多筆歷史資料誤植。 diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index e1739a7..521d5fd 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -2,13 +2,38 @@ > 以 zh-TW 為主、English secondary。本藍圖依現況([STATUS.yaml](../STATUS.yaml)、[GAME_DESIGN.md](GAME_DESIGN.md))盤點已完成與待辦,並提出**規劃方向**。 > ⚠ 標示為**規劃中/推測(speculative)**者尚未實作,請勿當成現況;本文為**規劃**而非承諾。 -> Lead with zh-TW; English summaries follow. Last reviewed: 2026-06. +> Lead with zh-TW; English summaries follow. Last reviewed: 2026-07-08. + +--- + +## 本輪已完成 — 出海決策支援・學習迴路收斂・無障礙・內容全面查核 + +對應 [GAME_DESIGN.md](GAME_DESIGN.md) §17: + +- **出海前工期預估 vs 天氣窗**:出勤就緒檢查新增工期預估卡(航線/登船/檢查/維修 + 保留餘裕),並附磨耗/疲勞/天氣窗擇日提醒。只提示、不擋出航。 +- **半途成果保留(#carry)**:審慎返港再規劃 —— 進 1 天、不計安全事件、已完成的診斷/SOP 進度保留,與「作業窗關閉才撤離」(進度全失+計安全事件)明確區隔。 +- **加班搶修(#rush)**:維修不利時的第三選項 —— 剩餘 SOP 一次趕完、耗時減半,但 25% 機率安全近失事件。「快 vs 穩」風險抉擇。 +- **任務復盤 + 診斷連對 streak**:完工給星級復盤(依餘裕/答錯扣星)+一句 takeaway;診斷連對累積 🔥 徽章與封頂 XP 加成。 +- **錯題本主動回想**:複習前先自我測驗(隱藏正解、二選一),答完才揭曉正解與教訓,比只看反思更利記憶保留。 +- **無障礙**:`prefers-reduced-motion` 系統偏好 + 個人檔案頁手動開關(影片改靜態首幀、動畫停用);海象/故障狀態圖示化雙重編碼(不只靠顏色)。 +- **遊戲手感**:完工/連對里程碑 toast、Toaster 佇列化(不再互相蓋掉)、TopBar 預算增減變色。 +- **戰情室 SLA 季末風險 + 母港預算續航**提醒(inline,非母港輪播)。 +- **內容系統全面查核與修正**(事件/案例/任務/故障 × 消費端交叉驗證): + - 每日任務「維持型」項目改為**日結算**(deferred),修正開局即可白拿獎勵的問題。 + - `RESOLVE_TASK` 的安全事件數**夾 0**,堵住「降低事件」選項可刷成負值反向加分的漏洞。 + - 備品資料誤植修正:感測器誤報(sensor)誤耗發電機碳刷→改風速計;變槳故障(pitch)誤耗液壓油→改變槳後備電池。 + - 交易所預設 Tier 過濾下,進行中工單的必備備品**永遠可見**,避免主線卡關。 + - 移除 3 組重複任務模板;1 則真實案例研究「正解」誤植安全事件已修正。 + - 已查核確認乾淨:quiz 索引、跨檔 id 引用、i18n 完整性、Tier 閘門、派工守衛一致性、事件權重、案例去重。 +- **Pages 部署硬化**:`deploy.yml` 新增 `actions/configure-pages`(鎖定發佈來源為 GitHub Actions,避免誤切回「Deploy from a branch」導致線上端出未 build 原始碼);`concurrency.cancel-in-progress` 改 false。 + +**已知留待下次的候選(需設計決定,見下方「進行中或下一步」)**:bearing 類故障共用「變槳軸承」備品的命名/Tier 取捨;`crew_shortage`/`strike` 事件目前只影響展示用 `techAvail`,尚未接入實際派工邏輯。 --- ## 近期已完成里程碑摘要 — Recently shipped -以下為**已實作並驗證**的核心(對應 GAME_DESIGN §11/§14/§15): +以下為**已實作並驗證**的核心(對應 GAME_DESIGN §11/§14/§15/§17): - **核心玩法**:出勤就緒閘門、四畫面循環(母港/交易所/出海/維修)、診斷測驗 + SOP + 作業窗、出航航線俯瞰圖、登船延誤。 *Mobilization-gated work-order loop, diagnosis quiz + SOP + work window.* @@ -16,7 +41,7 @@ *Single-source economy: revenue & availability from live fleet uptime; quarterly SLA, storage spoilage, fatigue, vessel wear, multi-turn overhaul.* - **風場戰情室(活體營運層)**:4 風場 × 24 機組、並行工單派遣、遠端重啟、預防性定檢、船舶並行上限。 *Live Fleet Ops: parallel dispatch, remote reset, preventive inspection.* -- **雙層架構**:主線 7 關(每週開放、計分)+自由營運沙盒(159 題判斷型任務、7 類、即時輔助圖、付費進階檢測)。 +- **雙層架構**:主線 7 關(每週開放、計分)+自由營運沙盒(192 題判斷型任務、7 類、即時輔助圖、付費進階檢測)。 - **擬真系統**:微觀天氣三日預報、機組健康度與連鎖反應、突發事件、安全 KPI、綜合績效分。 - **互動式新手教學(莉莉聚光燈導覽)**:首次進場由莉莉以手機遊戲式 coach-mark(高亮當下按鈕、其餘變暗)手把手帶完一次完整工單循環(接單→出海→出勤檢查→登塔→診斷→SOP→完工);可跳過、可從 ⚙ 選單重新播放。 *First-time interactive coach-mark onboarding by Lily; skippable & replayable.* @@ -34,7 +59,7 @@ - **直升機進場 / 電網限電真實權衡任務**:自由營運沙盒新增 8 題真實運維判斷——直升機吊掛進場(封船海象/遠海急件/作業限值/成本效益)與電網限電(負電價降載/限電補償/低電壓穿越 FRT/順勢維修)。 *Real-ops tradeoffs: helicopter access & grid-curtailment judgment tasks.* - **呈現**:三模式背景(模擬/實境/漫畫)、60° 俯瞰、多場景登塔(機艙/塔架/輪轂/甲板,含實景/漫畫情境圖與出海/大修場景影片)、Web Audio 音效音樂、中英雙語。母港左側「設施/風場動態」面板可各自獨立收合,設施項目皆有專屬圖示(含技師人物立繪)。 -- **工程**:自動化測試 `npm test`(140 項)、平衡模擬器 `npm run sim`、併發壓力測試 `npm run stress`、PR CI(typecheck/test/build)。完整系統測試紀錄見 [TEST_REPORT.md](TEST_REPORT.md)、壓測細節見 [STRESS_TEST.md](STRESS_TEST.md)。 +- **工程**:自動化測試 `npm test`(154 項)、平衡模擬器 `npm run sim`、併發壓力測試 `npm run stress`、PR CI(typecheck/test/build)。完整系統測試紀錄見 [TEST_REPORT.md](TEST_REPORT.md)(測試數為本文撰寫時的既有紀錄,隨版本增加,以 `npm test` 實跑結果為準)、壓測細節見 [STRESS_TEST.md](STRESS_TEST.md)。 --- @@ -50,12 +75,15 @@ - **✅ 故障/備品分層擴充** — 已完成(#82)。在 Tier 框架下新增防蝕/變壓器套管/海纜接頭過熱等故障(22 故障/30 備品),使海纜/塔架/變壓器成為多重根因。 - **✅ 併發壓力測試** — 已完成。`npm run stress` 忠實重現後端契約做併發負載,證實「多人同時送分」可負荷(見 docs/STRESS_TEST.md)。 - **✅ 真實案例研究事件** — 已完成並擴充至 **24 則**(具名+出處 / 去識別技術重現兩類,涵蓋基礎/齒輪箱/葉片/海纜/電氣火災/船舶/偏航/變槳/雷擊/電網/變壓器等)。除依 Tier 偶發快報外,**自由營運中心任務清單會以約 1/4 機率自然抽出「📁 案例演練」(略過 Tier、答後揭示 O&M 教訓並收錄母港「案例檔」、計入科別掌握度)**(見 docs/CASE_STUDIES.md)。 -- **教師面板 CSV 匯出** — 在現有教師檢視面板上加「匯出 CSV」,方便登分與課後分析。(延伸候選) +- **✅ 教師面板 CSV 匯出** — 已完成。教師檢視面板可一鍵「⬇ 匯出 CSV」全班績效/天數/可用率/發電量,前端產檔下載、不經雲端,方便登分與課後分析。 - **✅ 營運趨勢儀表板 / 賽後復盤** — 已完成。每次推進日累積 KPI 歷史,母港「📈 營運趨勢·賽後復盤」顯示妥善率/健康度/收入vs支出/淨額/累積發電的時間序列圖 + 期間摘要(平均/最低妥善率、總收入/支出/淨額、發電增量),作教學覆盤工具。 -- **登入畫面教師入口(選配)** — 讓教師不必先進遊戲即可開啟教師檢視。 -- **試玩微調與平衡回測** — 依 `npm run sim` 持續校正故障率/經濟手感。 +- **✅ 登入畫面教師入口** — 已完成。登入畫面提供教師入口(免先登入遊戲),輸入班級碼+教師碼即可開啟唯讀教師檢視。 +- **✅ 出海決策支援・學習迴路收斂・無障礙**(本輪) — 見上方「本輪已完成」與 [GAME_DESIGN.md](GAME_DESIGN.md) §17。 +- **bearing 類故障備品命名/Tier 重新設計** — 主軸承振動(`bearing`)與發電機軸承磨損(`gen_vibration`)目前共用「變槳軸承」(`pitch_bearing`)備品(權宜規避 Tier 閘門,見本輪查核)。建議新增一個 Tier 3「發電機/主軸軸承」備品並重新指派,需與設計者確認 Tier 平衡影響。 +- **crew_shortage / strike 事件實效化** — 目前這兩個事件只調整展示用 `techAvail` 數字,未接入任何派工/派船的實際限制(`OPS_DISPATCH` 不讀取此欄位)。建議接上技師疲勞加成或派工人力上限檢查,讓事件真正影響決策而非純展示。 +- **試玩微調與平衡回測** — 依 `npm run sim` 持續校正故障率/經濟手感;本輪修正備品資料與每日任務發獎時機後,建議重跑一次完整回測。 - **戰情室停機折抵「現金」收入的選項** — 目前停機已折抵淨發電;提供把戰情室層也接入售電現金的設定開關(需與設計者確認)。 -- **文件持續對齊** — README / 手冊 / 攻略隨數值變動同步維護。 +- **文件持續對齊** — README / 手冊 / 攻略隨數值變動同步維護;`docs/TEST_REPORT.md`、`docs/MANUAL.zh-TW.md`、`docs/WALKTHROUGH.md` 內的測試數/任務題數等統計為較早版本快照,下次更新時一併校正為 `npm test`/`TASKS.length` 實跑值。 --- @@ -83,7 +111,7 @@ - **行動裝置 RWD** — 目前為 1600×900 等比舞台。**✅ 已先上 PWA(階段 1)**:可「加到主畫面」、離線可玩、橫向全螢幕、單一程式碼庫(網頁/手機並存),平板橫向現況即可用;後續可再做手機直向的響應式版面與(選配)Capacitor 商店包殼。 - **多人 / 班級競賽模式** — 在現有雲端排行榜之上,加入限時班級賽季、合作經營或對抗情境。 -- **無障礙與音效字幕** — 鍵盤操作、色盲友善配色、對話/音效字幕與旁白,符合教學場域無障礙需求。 +- **無障礙與音效字幕(部分已完成)** — ✅ 減少動態(`prefers-reduced-motion` + 手動開關)與海象/故障狀態圖示化雙重編碼已完成(見 [GAME_DESIGN.md](GAME_DESIGN.md) §17);尚待規劃:鍵盤操作、更全面的色盲友善配色審查、對話/音效字幕與旁白。 - **CC0 實體音樂 / 各地點專屬場景美術** — 以授權乾淨的素材替換或補強現有合成音樂與場景(GAME_DESIGN §11 已列規劃)。 - **每機獨立健康度 / 更細的預測性維護** — 由全場健康度延伸到每台機組的健康指標與剩餘壽命(RUL)建模,深化預測性維護教學。 - **內容編輯器 / 教師自製故障** — 讓教師以資料驅動方式新增故障、題目與課程週次,無需改程式碼。