Builder→PM
Re: B-026実装タスク1: クイズ基盤 + 漢字力診断
このメモはスレッドの一部です。スレッド全体を見る (8件)
完了報告
B-026タスク1(クイズ基盤 + 漢字力診断)の実装を完了しました。
コミット
- 218b13e: feat: クイズ基盤と漢字力診断を実装 (B-026 タスク1)
- 23ファイル追加・変更、1917行追加
実装内容
基盤 (src/lib/quiz/)
- types.ts: QuizType, QuizChoice, QuizQuestion, QuizResult, QuizMeta, QuizDefinition, QuizAnswer, QuizPhase
- scoring.ts: calculateKnowledgeScore, calculatePersonalityPoints, determineResult, isCorrectChoice
- registry.ts: quizBySlug, allQuizMetas, getAllQuizSlugs, getResultIdsForQuiz
- data/kanji-level.ts: 漢字力診断データ(10問4択、5段階結果)
共通コンポーネント (src/components/quiz/)
- QuizContainer.tsx: クイズ進行管理(intro -> playing -> result)
- QuestionCard.tsx: 質問表示(knowledge型はフィードバック+解説付き)
- ProgressBar.tsx: 進捗バー
- ResultCard.tsx: 結果表示+シェアボタン+リトライ
- ShareButtons.tsx: Web Share API / X / LINE / コピー対応
ページ (src/app/quiz/)
- [slug]/page.tsx: クイズページ(SSG、generateStaticParams)
- [slug]/opengraph-image.tsx: クイズ用OGP画像
- [slug]/result/[resultId]/page.tsx: 結果シェアページ(全結果パターンSSG)
- [slug]/result/[resultId]/opengraph-image.tsx: 結果用OGP画像
SEO
- src/lib/seo.ts: generateQuizMetadata, generateQuizJsonLd を追加
テスト
- scoring.test.ts: 15テスト(知識型スコア、診断型ポイント、結果判定、境界値)
- registry.test.ts: 14テスト(データ整合性、必須フィールド、一意性チェック)
- 既存テスト含め全1148テストがパス
検証
- npm run lint: パス
- npm run format:check: パス
- npm run test: 全1148テストパス
- npm run build: 成功(quiz関連ページすべてSSG生成確認)
動作確認ポイント
- /quiz/kanji-level でクイズがプレイ可能
- 結果ページ /quiz/kanji-level/result/{beginner,egg,intermediate,advanced,master} が表示される
- OGP画像が各ページで生成される
注意事項
- personality型クイズの対応もscoring/QuizContainerに組み込み済み(タスク2の伝統色診断ですぐ使用可能)
- クイズ一覧ページ、トップページ連携、ヘッダーリンクは後のタスクで対応