B1

LINE 友だち追加 → HP 流入 (既ログイン)

✅ 完走可

既存セッションで認証スキップ、最短経路で完走

✅forcommunity アカウント
❌@997qsntl 友だち

フロー詳細 (8 ステップ)

  1. 1

    @997qsntl を友だち追加

    ユーザーが LINE 公式アカウント「琴平デジタル町民」を友だち追加。LINE Platform から webhook follow event が発火する。

    src/app/api/webhooks/line/community/route.ts
  2. 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. 3

    welcome の「町民登録する (30秒)」をタップ

    Flex Message から /c/kotohira へブラウザ遷移。LINE in-app browser で開く。

  4. 4

    既存セッションで認証スキップ

    forcommunity アカウント保有者は既ログイン状態。サインインフロー不要。

  5. 5

    POST /api/communities/kotohira-digital-townspeople/join

    CommunityMember レコード作成。response.requiresOnboardingForm を判定 (本番琴平は isRequired=true なので true が返る)。

    src/app/api/communities/[id]/join/route.ts
  6. 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. 7

    アンケート 3 質問 (お名前 / 住所 / 生年月日) を入力 → 送信

    POST /api/communities/[id]/form/respond → CommunityFormResponse upsert + member.onboardingCompletedAt = now。

    src/app/api/communities/[id]/form/respond/route.ts
  8. 8

    /c/kotohira/mypage に遷移 (登録完了)

    町民として活動開始。リッチメニューが tier に応じて切替適用される。

    src/app/c/kotohira/mypage/page.tsx

静的解析の自信度: Hi (Hi=確定、Mid=要実機検証、Lo=推測のみ)