Skip to content

feat(ops): 人力短缺/罷工事件實效化 + 軸承備品正名(傳動軸承組 T3) - #116

Merged
dofliu merged 1 commit into
mainfrom
claude/wind-farm-game-dev-ik3kt7
Jul 9, 2026
Merged

feat(ops): 人力短缺/罷工事件實效化 + 軸承備品正名(傳動軸承組 T3)#116
dofliu merged 1 commit into
mainfrom
claude/wind-farm-game-dev-ik3kt7

Conversation

@dofliu

@dofliu dofliu commented Jul 9, 2026

Copy link
Copy Markdown
Owner

概述

接續 §17 內容查核,補上兩處邏輯完整性缺口——把「只影響展示、不影響決策」的事件接上實際機制,並修正一組權宜共用的備品命名。皆為 ROADMAP 明列的待辦項。

1. 人力短缺/罷工事件實效化(#crew)

問題crew_shortage(−3)、strike(−6) 事件原本只調整展示用 techAvailOPS_DISPATCH/OPS_INSPECT 完全不讀 → 事件承諾了後果卻不兌現(純展示)。

做法:缺工直接折抵戰情室「可同時開的現場作業面」

  • crewShortfallJobs = ⌈(techTotal − techAvail) / CREW_PER_JOB⌉CREW_PER_JOB = 4
  • effectiveJobCapOf = max(1, jobCapOf − crewShortfallJobs);兩個 OPS 守衛改用有效上限。

設計要點

  • 滿編不懲罰:以「缺額」而非「絕對人數」計,techAvail = techTotal 時 shortfall = 0 → 不影響任何船隊(含頂級母船)。
  • 下限 1:極端缺工仍可派一組;遠端重啟不占名額、主線工單不受此限 → 不會硬鎖遊戲;techAvail 每日休整 +1 逐步回復。
  • 開局改滿編 30/30(原 24/30)+ tech 升級同步 techAvail(+2):避免開局或擴編後憑空產生缺額。
  • 戰情室透明化FleetOpsModal):新增「可出勤班組」統計;短手時顯示 👷 橫幅(vesselCap → cap、少 N 面)與「現場已滿」成因區分(人力 vs 船舶)。

→ 事件從純展示變成「先遠端重啟軟故障 / 批次搶修 / 靠港補人」的真實取捨。

2. 軸承備品正名(#bearing)

問題:主軸承振動(bearing)與發電機振動(gen_vibration)原本權宜共用「變槳軸承」(pitch_bearing)備品(規避 Tier 閘門)。

做法

  • 新增 Tier 3 專屬備品 「傳動軸承組(發電機/主軸)」drive_bearing, ◎130 萬),兩者改指——與 Tier 4「主軸承」全換(main_bearing)語意區隔(振動維修級 vs 重吊更換)。
  • 新增 pitch_bearing_wear(變槳軸承磨耗)事件,讓 pitch_bearing 備品保有真實消費端(呼應既有 cs_pitch_bearing_wear 案例研究)、不成孤兒。

測試與驗證

  • npm test159 passed / 0 failed(新增 5 項)
    • crewShortfallJobs/effectiveJobCapOf:滿編不折抵、缺工折抵、下限 1
    • OPS_DISPATCH 缺工時第 3 派工受阻 vs 滿編可派(SOV cap 4)
    • crew_shortage/strike 事件 apply → techAvail↓ → 有效上限↓(連上機制)
    • 開局滿編、tech 升級不生假缺額
    • drive_bearing 正名、pitch_bearing 仍有消費端、Tier 一致性不變式
  • npm run typecheck:通過
  • npm run build:通過
  • npm run sim:策略排序維持正確(passive ≪ active < full-crew;full-crew 平均妥善率 97%)

變更檔案

  • src/state/game.tsCREW_PER_JOB/crewShortfallJobs/effectiveJobCapOf、OPS 守衛、開局滿編、tech 升級同步 techAvail
  • src/state/incidents.tsbearing 改指 drive_bearing;新增 pitch_bearing_wear
  • src/ui/data.ts:新增 drive_bearing 備品(Tier 3)
  • src/ui/faults.tsgen_vibration 改指 drive_bearing
  • src/ui/FleetOpsModal.tsx:可出勤班組統計、缺工橫幅、成因區分
  • test/run.mjs:+5 測試
  • docs/GAME_DESIGN.md(§18)、docs/ROADMAP.mdSTATUS.yaml:文件對齊

相容性

  • 純加法/取代,無破壞性變更;既有存檔相容(techAvail/techTotal 既有欄位;舊檔若非滿編僅短暫折抵,每日休整自癒)。
  • 無新增字串檔相依(事件/備品名稱皆內嵌 i18n)。

🤖 Generated with Claude Code

https://claude.ai/code/session_01AC7ERcxjL7dhsYv9PncydP


Generated by Claude Code

補上兩處「只影響展示、不影響決策」的邏輯完整性缺口:

人力短缺/罷工實效化(#crew):
- crew_shortage(-3)/strike(-6) 原本只改展示用 techAvail,OPS_DISPATCH/
  OPS_INSPECT 完全不讀 → 事件承諾後果卻不兌現。
- 新增 crewShortfallJobs/effectiveJobCapOf:缺工直接折抵「可同時開的現場
  作業面」= max(1, jobCapOf − ⌈(techTotal−techAvail)/CREW_PER_JOB⌉)。
- 滿編不懲罰(以缺額計,不影響頂級船隊)、下限 1(短手仍可派一組、遠端重啟
  不占名額、主線工單不受此限)、每日休整回復。
- 開局改滿編 30/30;tech 升級同步 techAvail(+2)避免憑空缺額。
- 戰情室新增「可出勤班組」統計 + 短手 👷 橫幅(vesselCap→cap)+ 成因區分。

軸承備品正名(#bearing):
- 主軸承振動(bearing)與發電機振動(gen_vibration)原權宜共用「變槳軸承」
  (pitch_bearing)。新增 Tier 3 專屬「傳動軸承組(發電機/主軸)」
  (drive_bearing, ◎130萬)並重新指派,與 Tier 4 主軸承全換(main_bearing)
  語意區隔(振動維修級 vs 重吊更換)。
- 新增 pitch_bearing_wear(變槳軸承磨耗)事件,讓 pitch_bearing 保有真實
  消費端(呼應 cs_pitch_bearing_wear 案例)、不成孤兒。

測試/文件:
- test/run.mjs +5 測試(159 passed):crewShortfall/effectiveJobCapOf、
  OPS_DISPATCH 缺工受阻 vs 滿編可派、事件連上機制、開局滿編/升級不生
  假缺額、drive_bearing 正名與消費端一致性。
- GAME_DESIGN §18、ROADMAP、STATUS.yaml 對齊。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AC7ERcxjL7dhsYv9PncydP
@dofliu
dofliu marked this pull request as ready for review July 9, 2026 14:42
@dofliu
dofliu merged commit cb77514 into main Jul 9, 2026
2 checks passed
dofliu pushed a commit that referenced this pull request Jul 14, 2026
README.md / README.zh-TW.md:
- 更新測試數 154→164、故障型錄「5 種」→「25 種、五大科別」。
- 戰情室補「人力短缺/罷工實效化」(缺工折抵現場作業面)。
- 教學設計補「獨立測驗模式」與「教師檢視面板+掌握度個別鑽取」。
- 技術補「母港建設疊實境/漫畫背景」與 PWA/啟動安全網。
- 專案結構補 exam.ts/mastery.ts/records.ts、ExamModal/TeacherModal/PortModal、cloud/api.ts。

docs/HANDOFF.md:
- 全面刷新:現況(main=PR #117、164 測試、dev branch 名)。
- 把 bearing/crew/exam/mastery-cloud/port 五項由「下一步候選」移到「已完成」。
- 重寫「後續接續工作」(立即可做/需後端/願景)並保留視覺驗證與模擬器蝴蝶效應備忘。

docs/ROADMAP.md:
- 補 PR #116/#117 完成註記,更新測試數 154→164、複審日期。
- 新增「後續接續工作 — Next」接手清單章節。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AC7ERcxjL7dhsYv9PncydP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants