- user_iduuid pk
- buddy_keytext
- buddy_nametext
- favorite_topicstext[]
- appearancejsonb
ユーザー状態の保存
バディ種別、バディ名、好きなもの、現在の見た目はユーザー体験に直結するため、まず保存対象にする。
重要イベントだけ記録
バディコメント表示、学習完了、30 秒授業生成、記述模試、サブスク購入など、後で意思決定に使うイベントを優先する。
詳細な分析基盤
すべての UI 操作ログや全文プロンプト保存は、費用・プライバシー・運用負荷が大きい。MVP では避ける。
データの流れ
ユーザー操作
学習開始、コメント表示、提案表示、購入など。
アプリ内イベント
必要最小限の event_name と properties を作る。
Supabase
ユーザーに紐づく学習・バディ・通知状態を保存。
外部サービス
Crashlytics、RevenueCat、広告 SDK など。
分析
継続率、正答率、提案受諾率、購入率を見る。
バディ関連
バディプロフィール
新規テーブル現在選んでいるバディ、名前、着せ替え、好きなもの 3 つを保存する。コメント生成時のパーソナライズ入力にも使う。
- テーブル
user_buddy_profiles- MVP
buddy_key,buddy_name,favorite_topics,appearance- 後回し
- 着せ替え履歴、有料アイテム監査、アイコン生成履歴
バディコメントログ
新規テーブルどのコメントが学習継続や正答率に効いたかを後で見るためのログ。全文プロンプトは保存しない。
- テーブル
buddy_comment_logs- 保存する
- 表示文、画面文脈、trigger、テンプレートキー、参照した好きなもの
- 保存しない
emotion/direction。現状は UI 側で固定的に決まるため。
学習ログ
学習後おすすめ
スコアに応じて 30 秒授業 / 記述模試を提案したか、受け入れたかを保存する。
- テーブル
study_recommendation_logs- 見る指標
- 表示率、承諾率、閉じられた率
30 秒授業
点数がないためクイズ attempt とは分ける。生成状態とカスタマイズ内容だけ保存する。
- テーブル
interactive_lesson_generations- 本文保存
- MVP ではしない
記述模試
1 回分の学習と問題ごとの回答・正誤を持つため、既存の challenge / answer に乗せる。
- study_mode
written_mock_test- answer_method
written_mock_test
通知
通知は「ユーザー設定」「端末トークン」「送信イベント」に分ける。設定と実際の送信履歴を混ぜない。
| 役割 | テーブル | 保存する内容 |
|---|---|---|
| 通知設定 | user_notification_preferences |
学習リマインド ON/OFF、時間帯、timezone、quiet hours |
| 端末 | user_push_tokens |
Expo / FCM / APNs の token、platform、last_seen_at |
| 送信履歴 | notification_events |
scheduled / sent / opened / failed と error |
広告・サブスク
広告ログ
MVP では広告ネットワークの管理画面で足りる可能性が高い。リワードやプロダクト判断に使うなら内部ログを持つ。
- テーブル
ad_events- イベント
loaded,impression,click,reward,failed
サブスク
App Store / Play Billing を直接自前実装するより、RevenueCat webhook から権限状態を同期する方が現実的。
- 権限
user_entitlements- イベント
subscription_events- 書き込み
- service role / webhook のみ
ログ / 分析
推奨スタック
| 用途 | 候補 |
|---|---|
| クラッシュ・安定性 | Firebase Analytics + Crashlytics |
| プロダクト分析 | Supabase または PostHog 系 product events |
最初に取るイベント
テーブル候補一覧
- user_iduuid
- context_typetext
- triggertext
- messagetext
- template_keytext
- note_iduuid
- scorenumeric
- recommendation_typetext
- shown_attimestamptz
- accepted_attimestamptz
- generation_typetext
- customization_focustext
- statustext
- modeltext
- error_messagetext
- user_iduuid
- entitlement_keytext
- activeboolean
- sourcetext
- expires_attimestamptz
- event_nametext
- screentext
- propertiesjsonb
- app_versiontext
- platformtext
RLS / SQL 化の注意
守ること
- 既存 RLS はなるべく変更しない。
- 新規テーブルは
auth.uid() = user_idの owner read を基本にする。 - Webhook / provider / AI 生成ログの書き込みは service role に寄せる。
避けること
- 分析用 jsonb に重要指標を全部閉じ込める。
- 全文プロンプトや回答全文を安易にログ保存する。
- ユーザーが subscription event の raw payload を直接読める設計にする。