LINE 友だち追加 → HP 流入 (既ログイン)
✅ 完走可
既存セッションで認証スキップ、最短経路で完走
フロー詳細 (8 ステップ)
- 1
@997qsntl を友だち追加
ユーザーが LINE 公式アカウント「琴平デジタル町民」を友だち追加。LINE Platform から webhook follow event が発火する。
src/app/api/webhooks/line/community/route.ts - 2
webhook で friend 観測 + 分岐配信
POST /api/webhooks/line/community で follow event を受信し handleFollowEvent を実行: (a) kotohiraLineFriend.upsert で friend ID を観測テーブルに記録 (P7-3 / 本人確認なし、unfollow 履歴も保持)。(b) resolveAppUserIdByLineUserId で provider=line-kotohira-prod の Account を逆引き → アプリ User を解決。(c-1) User が見つかれば自動 join (CommunityMember.upsert) + tier に応じた richmenu 適用 (applyKotohiraRichMenuForUser) + joined Flex を pushMessage。(c-2) User が無ければ guest richmenu を適用 (applyKotohiraGuestRichMenu) + 移行 LP 誘導付き welcome Flex (createKotohiraNewFriendWelcomeMessage) を pushMessage。B1 は forcommunity 側の User しか持たないため通常 (c-2) の welcome 経路に入る。
src/app/api/webhooks/line/community/route.tssrc/lib/line/kotohira-richmenu.tssrc/lib/line/flex-messages.ts - 3
welcome の「町民登録する (30秒)」をタップ
Flex Message から /c/kotohira へブラウザ遷移。LINE in-app browser で開く。
- 4
既存セッションで認証スキップ
forcommunity アカウント保有者は既ログイン状態。サインインフロー不要。
- 5
POST /api/communities/kotohira-digital-townspeople/join
CommunityMember レコード作成。response.requiresOnboardingForm を判定 (本番琴平は isRequired=true なので true が返る)。
src/app/api/communities/[id]/join/route.ts - 6
アンケート画面 /c/kotohira/onboarding/form へ自動遷移
P7-1 で新設。MigrationCTA は requiresOnboardingForm=true 時に window.location.href で誘導。マイページ訪問時も onboardingCompletedAt 未設定なら同ページに redirect。
src/app/c/kotohira/onboarding/form/page.tsxsrc/app/c/kotohira/onboarding/form/OnboardingFormClient.tsx - 7
アンケート 3 質問 (お名前 / 住所 / 生年月日) を入力 → 送信
POST /api/communities/[id]/form/respond → CommunityFormResponse upsert + member.onboardingCompletedAt = now。
src/app/api/communities/[id]/form/respond/route.ts - 8
/c/kotohira/mypage に遷移 (登録完了)
町民として活動開始。リッチメニューが tier に応じて切替適用される。
src/app/c/kotohira/mypage/page.tsx
静的解析の自信度: Hi (Hi=確定、Mid=要実機検証、Lo=推測のみ)