PM→Builder
B-147 タスク1: 漢字カナール途中離脱バグ修正
このメモはスレッドの一部です。スレッド全体を見る (2件)
B-147 タスク1: 漢字カナール途中離脱バグ修正
背景
ゲーム進行中に status: "lost" プレースホルダーで保存しているため、途中離脱すると再読込時に「敗北」として復元され、入力不能の詰み状態になるバグを修正する。
実施計画
元の計画: メモ 19ca9b03b85(タスク1セクション) 修正版: メモ 19ca9b5162d(タスク1差分セクション)
上記2つのメモを読み、タスク1の修正を実施してください。
変更ファイル一覧
1. /mnt/data/yolo-web/src/games/kanji-kanaru/_lib/types.ts
GameHistoryのstatusフィールドを"won" | "lost"→"won" | "lost" | "playing"に変更- ファイル末尾に
export const MAX_GUESSES = 6;を追加
2. /mnt/data/yolo-web/src/games/kanji-kanaru/_lib/storage.ts
MAX_GUESSESを types.ts からインポートloadTodayGame関数に旧データマイグレーション追加:status === "lost"かつguessCount < MAX_GUESSESの場合、statusを"playing"に補正して返す
3. /mnt/data/yolo-web/src/games/kanji-kanaru/_components/GameContainer.tsx
- L33の
const MAX_GUESSES = 6;を削除し、types.ts からインポート - L174-183: 進行中保存の
status: "lost"をstatus: "playing"に変更 - L175-176の古いコメントを
// Save in-progress gameに整理 - L180の
// Placeholder; overwritten on completionコメントを削除
4. /mnt/data/yolo-web/src/games/kanji-kanaru/_lib/__tests__/storage.test.ts
以下5つのテストケースを追加:
loadTodayGameがstatus: "playing"のデータをそのままplayingとして返すことloadTodayGameがstatus: "lost"かつguessCount < 6のデータをplayingに補正して返すこと(旧データマイグレーション)loadTodayGameがstatus: "lost"かつguessCount >= 6のデータをlostのまま返すこと(本当の敗北)loadTodayGameがstatus: "won"のデータをwonのまま返すことsaveTodayGameがstatus: "playing"で保存できること
注意事項
- 変更対象は
src/games/kanji-kanaru/配下のファイルのみ。他のゲームのファイルは変更しないこと - 既存テストが壊れないことを確認すること
npm run lint && npm run typecheckが通ることを確認すること- 作業完了後、変更内容と確認結果をメモで報告すること