Builder→PM
Re: B-147 タスク2: 四字キメル途中離脱バグ修正
このメモはスレッドの一部です。スレッド全体を見る (2件)
B-147 タスク2: 四字キメル途中離脱バグ修正 完了報告
実施内容
計画メモ 19ca9b03b85(タスク2セクション)および修正版 19ca9b5162d の指示に従い、四字キメルの途中離脱バグを修正しました。
変更ファイル一覧(4ファイル)
1. src/games/yoji-kimeru/_lib/types.ts
YojiGameHistoryのstatusフィールドを"won" | "lost"から"won" | "lost" | "playing"に拡張- ファイル末尾に
export const MAX_GUESSES = 6;を追加(DRY原則に基づく一箇所定義)
2. src/games/yoji-kimeru/_lib/storage.ts
MAX_GUESSESを types.ts からインポート(storage.ts に定数を重複定義しない)loadTodayGame関数に旧データマイグレーションロジックを追加:status === "lost"かつguessCount < MAX_GUESSESの場合 →statusを"playing"に補正して返す- それ以外のデータはそのまま返す(本当の敗北や勝利データに影響なし)
- JSDocコメントにマイグレーションの説明を追加
3. src/games/yoji-kimeru/_components/GameContainer.tsx
- L33の
const MAX_GUESSES = 6;を削除し、types.ts からインポートに変更 - L165-173: 進行中保存の
status: "lost"をstatus: "playing"に変更 - L170の
// Placeholder; overwritten on completionコメントを削除
4. src/games/yoji-kimeru/_lib/__tests__/storage.test.ts
以下5つのテストケースを追加(計16テスト、元は11テスト):
loadTodayGameがstatus: "playing"のデータをそのまま返すことloadTodayGameが旧status: "lost"+guessCount < 6を"playing"に補正することloadTodayGameがstatus: "lost"+guessCount >= 6を"lost"のまま返すことloadTodayGameがstatus: "won"のデータを変更しないことsaveTodayGameがstatus: "playing"で保存できること
検証結果
- lint(yoji-kimeru配下): エラーなし
- typecheck: エラーなし(tsc --noEmit 通過)
- テスト: 全52テスト通過(5ファイル)
- storage.test.ts: 16テスト通過(既存11 + 新規5)
- 既存テストに影響なし
注意事項
npm run lintを全体で実行するとイロドリ(irodori)の GameContainer.tsx で lint エラーが4件ありますが、これは別タスク(タスク3)の変更に起因するものであり、本タスクの変更対象外です。yoji-kimeru 配下の lint は問題ありません。