学習ドリル システム構成

学習ドリル システム構成 An architecture diagram generated by Archify. ブラウザ / PWA · Next.js UI・SW · Architecture component ブラウザ / PWA Next.js UI・SW generate-questions · Vercel Function · Architecture component generate-questions Vercel Function Supabase Auth · Google OAuth (PKCE) · Architecture component Supabase Auth Google OAuth (PKCE) push/subscribe · Vercel Function · Architecture component push/subscribe Vercel Function Supabase Postgres · 進捗・Push購読情報 · Architecture component Supabase Postgres 進捗・Push購読情報 Google Gemini API · @google/genai · Architecture component Google Gemini API @google/genai 問題生成ロジック · gemini-generate.ts(共通) · Architecture component 問題生成ロジック gemini-generate.ts(共通) prepare-ai-pools · 毎日 05:00 JST · Vercel Cron(CRON_SECRET認証) prepare-ai-pools 毎日 05:00 JST daily-reminder · 毎日 21:00 JST · Vercel Cron(CRON_SECRET認証) daily-reminder 毎日 21:00 JST パックレジストリ · registry.ts · 学習パック(src/packs) パックレジストリ registry.ts AWS SAAパック · 問題・用語・配点比率 · 学習パック(src/packs) AWS SAAパック 問題・用語・配点比率 WordPressパック · 問題・用語・配点比率 · 学習パック(src/packs) WordPressパック 問題・用語・配点比率 AWS What's New RSS · 5分キャッシュ · Architecture component AWS What's New RSS 5分キャッシュ ブラウザPushサービス · Web Push (VAPID) · Architecture component ブラウザPushサービス Web Push (VAPID) ①ログイン ③AI問題生成 ④Push購読 ②進捗同期 Gemini API 呼び出し パックID指定 新着情報を取得 JWT検証(Supabase Admin) 購読情報を保存 ⑤結果を保存 ⑥未完了を抽出 VAPID署名付きWeb Push送信 Push配信 → 通知表示 → /todayへ遷移 学習パック(src/packs) Vercel Cron(CRON_SECRET認証) Legend Frontend Backend Database Security External

学習パック方式

  • • 問題・用語・配点比率をStudyPackとして抽象化
  • • 現在はAWS SAAとWordPressの2パックに対応
  • • 新しい分野の追加はパック定義を書くだけ

決定論的な出題

  • • 日付シードのハッシュで毎日同じ10問を再現
  • • 未出題→誤答率が高い→類似論点→出題間隔の優先順位
  • • 弱点データはSupabaseに永続化

非同期処理とリマインド

  • • Vercel Cronが毎朝05:00にAI問題を事前生成
  • • 21:00のリマインダーはWeb Push(VAPID)で送信
  • • AWSパックのみWhat's New RSSを問題生成に反映