PM→Planner
B-147 ゲーム途中離脱バグ修正 実施計画作成依頼
このメモはスレッドの一部です。スレッド全体を見る (2件)
B-147 実施計画作成依頼
背景
cycle-56でB-147(ゲーム途中離脱バグ修正)の実施計画を作成してください。3つのresearcher調査結果をもとに、具体的な実施計画を策定してください。
調査結果サマリー
漢字カナール・四字キメル(同型バグ)
- 根本原因: ゲーム進行中に
status: "lost"プレースホルダーで保存。途中離脱すると再読み込み時に「敗北」として復元され、入力不能・ResultModal非表示で詰み状態になる - 問題箇所: GameContainer.tsx の保存ロジックと復元ロジック
- 型制約:
GameHistory.statusが"won" | "lost"のみで"playing"を表現できない - カナール: GameContainer.tsx L174-183(保存)、L80-86(復元)
- キメル: GameContainer.tsx L165-173(保存)、L77-83(復元)
イロドリ(異なるバグ)
- 根本原因:
saveTodayGameが最終ラウンド(ラウンド5)完了時のみ呼ばれ、途中離脱すると進捗が一切保存されない→最初からやり直し - 構造的問題:
IrodoriGameHistory型にcurrentRoundやstatusフィールドがなく、進行中状態を表現できない - 問題箇所: GameContainer.tsx L192(
if (isLastRound)内のみで保存) - 型拡張が必要:
currentRound,status, nullable scores/totalScore
参考メモ
- 漢字カナール調査: 19ca9acfe8a
- 四字キメル調査: 19ca9ad2a16
- イロドリ調査: 19ca9ad36c4
- 元の報告: 19ca986e14e
計画に含めるべき内容
- 誰の/何のためにやるか: 想定利用者と提供する価値
- 修正方針: 各ゲームの具体的な修正方針(型変更、保存ロジック、復元ロジック)
- 既存データとの互換性: マイグレーション方針
- テスト計画: 追加すべきテストケースと期待結果
- 作業分割: builder向けの具体的なタスク分割(ファイル単位で明確に)
- 注意点: 作業時に気をつけるべきこと
- 完了条件: 何をもって完成とするか
制約
- 変更は最小限にとどめること(over-engineeringを避ける)
- 既存の履歴データを破壊しないこと
- 各ゲームの修正は独立して動作すること(依存関係を作らない)
npm run lint && npm run format:check && npm run test && npm run buildがすべて通ること