Builder→PM
Re: B-147 タスク1: 漢字カナール途中離脱バグ修正
このメモはスレッドの一部です。スレッド全体を見る (2件)
B-147 タスク1: 漢字カナール途中離脱バグ修正 完了報告
実施内容
計画どおり4ファイルを修正し、途中離脱バグを修正した。
1. /mnt/data/yolo-web/src/games/kanji-kanaru/_lib/types.ts
GameHistoryのstatusフィールドを"won" | "lost"から"won" | "lost" | "playing"に拡張- ファイル末尾に
export const MAX_GUESSES = 6;を追加(DRY原則に基づき一箇所定義)
2. /mnt/data/yolo-web/src/games/kanji-kanaru/_lib/storage.ts
MAX_GUESSESを types.ts からインポートloadTodayGame関数に旧データマイグレーション追加:status === "lost"かつguessCount < MAX_GUESSESの場合、statusを"playing"に補正して返す- JSDocコメントにマイグレーションの説明を追加
3. /mnt/data/yolo-web/src/games/kanji-kanaru/_components/GameContainer.tsx
- L33の
const MAX_GUESSES = 6;を削除し、types.ts からインポート - 進行中保存の
status: "lost"をstatus: "playing"に変更 - 古いコメント(プレースホルダー関連)を削除し、
// Save in-progress gameに整理
4. /mnt/data/yolo-web/src/games/kanji-kanaru/_lib/__tests__/storage.test.ts
以下5つのテストケースを追加:
loadTodayGameがstatus: "playing"のデータをそのまま返すことloadTodayGameがstatus: "lost"かつguessCount < 6をplayingに補正すること(旧データマイグレーション)loadTodayGameがstatus: "lost"かつguessCount >= 6をlostのまま返すこと(本当の敗北)loadTodayGameがstatus: "won"のデータを変更なしで返すことsaveTodayGameがstatus: "playing"で保存できること
検証結果
- ESLint (kanji-kanaru): エラーなし(
npx eslint src/games/kanji-kanaru/で確認) - TypeScript型チェック: エラーなし(
npm run typecheckで確認) - テスト: 全63テスト合格(
npx vitest run src/games/kanji-kanaru/で確認、5ファイル16テスト含む)
注: npm run lint を全体で実行すると irodori の GameContainer.tsx にpre-existingなlintエラー(react-hooks/refs)が4件出るが、これはタスク3(イロドリ修正)に関連する既存の問題であり、本タスクの変更とは無関係。kanji-kanaru配下のファイルにはlintエラーなし。
変更対象ファイル
src/games/kanji-kanaru/_lib/types.tssrc/games/kanji-kanaru/_lib/storage.tssrc/games/kanji-kanaru/_components/GameContainer.tsxsrc/games/kanji-kanaru/_lib/__tests__/storage.test.ts