AS-IS→TO-BE の後に当てる、顧客側(LINEミニアプリEC)と運営側(管理画面)の画面遷移イメージ。論点①「LINE UI と Web UI の境界線」を“絵”で議論するための叩き台です。
トーンは特定クライアント色を出さない汎用SaaS(インディゴ+スレート)。UI作法は業務SaaSのUI/UXパターン(状態チップ・縦型タイムライン・淡色tintカード・ステータスタブ)を踏襲。確定仕様ではありません。① ログイン — LINEミニアプリSSO(1タップ・パスワード不要)
いまのあなたの状態に合わせて、
受けられるサービスをご案内します。
コミューンと同じシングルサインオン(SSO)
「続ける」を押すと利用規約・プライバシーポリシーに同意したものとみなされます
② ホーム — 受講履歴をもとに“受けられるサービスだけ”を出し分け
受けられるサービス
③ 日程選択 — 空き枠はリアルタイム、満枠はキャンセル待ち、合わない日は新着通知
ご希望の開催日を選択してください
④ カート — 顧客の状態からクーポンを自動適用(コード入力不要)・セット販売
自動適用されたクーポン
※ あなたの受講状態・流入から自動で判定。クーポンコードの手入力は不要です。
⑤ 決済方法の選択 — 方法で画面と「確定タイミング」が変わる(詳細は下の「決済パターン別」)
お支払い方法を選択
⑥ 完了 — LINEに完了通知+リマインドを自動予約(離脱しても入口は1つ)
ありがとうございます。確認メッセージをLINEにお送りしました。
銀行振込・分割・0円クーポン・サブスクなど、パターンで画面と「確定タイミング・枠の扱い」が変わる。各パターンのモックとフローの違いを並べる。タブで切替。
A. クレジットカード — Stripe Checkout(即時確定)
🔒 Stripe により安全に処理
B. 銀行振込 — 入金待ち(枠は仮押さえ)
C. 分割払い — 高額・セット向け(回数選択)
支払回数を選択
D. 0円クーポン — 決済画面をスキップして即確定
E. サブスク / 無料期間 — 月額・初回無料(該当商材のみ)
※ 無料期間中に解約すれば請求は発生しません。
billing_cycle_anchor で初回満額請求日をそろえる)。プレオープン無料→自動課金開始もこの型。解約は管理画面 / Stripe。| 方法 | 確定 | 運営の見え方 |
|---|---|---|
| カード | 即時 | 確定 |
| 銀行振込 | 入金確認後 | 未決済(振込待ち) |
| 分割 | 初回決済 | 確定(継続課金) |
| 0円クーポン | 即時(決済なし) | 確定 |
| サブスク | 登録時(課金は後) | 有効(無料期間中) |
① サービス選択ポータル — Google SSO(Phoenix XAと共通ログイン基盤)
② ダッシュボード — 枠/申込/確定/未決済/キャンセル待ちを1画面で(旧:エンジニア依存→セルフサービス)
| 顧客 | 日程 | 種別 | 金額 | クーポン | 状態 |
|---|---|---|---|---|---|
| 西川 太雄 | 7/12 | 通常新規 | ¥132,800 | セット/紹介 | 確定 |
| 佐藤 花子 | 7/12 | 参加済 | ¥29,800 | 最受講 | 未決済 |
| 鈴木 一郎 | 7/20 | 通常新規 | ¥49,800 | — | キャンセル待ち |
| 田中 美咲 | 7/27 | 日程変更 | ¥0 | — | 確定 |
③ 日程・枠管理 — Salesforceマスタから移行、ここが枠の真実源(データバー=消化率)
| 開催日 | 形式 | 定員 | 申込 | 確定 | 消化率 | 状態 | |
|---|---|---|---|---|---|---|---|
| 7/12(土) | オンライン | 30 | 27 | 24 | 受付中(残3) | 編集 | |
| 7/20(日) | 会場 | 20 | 20 | 18 | 満員(待9) | 編集 | |
| 7/27(土) | オンライン | 40 | 12 | 10 | 受付中(残8) | 編集 | |
| 8/3(日) | オンライン | 40 | 3 | 2 | 公開前 | 編集 |
④ 申込詳細 — 顧客の受講履歴を縦型タイムラインで(Salesforce/BQから)+決済・クーポン
line_uid をキーにSalesforce/BQから集約。出し分け(C2)と同じデータを運営も見る=顧客と運営で同じ真実を共有。⑤ リマインド設定 — 時間差配信(Cloud Tasks/n8n・セルフコア実装を流用)
REBOOSTは全てルートシナリオ経由。申込決済案内(138ステップ・16流入から呼出・月4,600回エラー発火)が、申込種別×日程×クーポン×満枠×キャンセル待ちを多段分岐で捌く。赤=複雑化ホットスポット。
flowchart TB
classDef root fill:#e0e7ff,stroke:#4f46e5,color:#1e1b4b
classDef hot fill:#fde8e8,stroke:#dc2626,color:#7f1d1d
classDef warn fill:#fdf2e3,stroke:#d97706,color:#7c2d12
classDef ext fill:#f0eafe,stroke:#7c3aed,color:#3b0764
start["ルートシナリオ 開始
共通: 流入履歴・Lead作成"]:::root
inflow{"流入経路で分岐
(16の入口から呼出)"}:::root
apply["申込決済案内
138ステップ・月4,600回エラー発火"]:::hot
kind{"申込種別判定
参加済/通常新規/JCC新規
通常日程変更/JCC日程変更=5分岐"}:::hot
avail["申込可能日判定
SF開催マスタ参照"]:::ext
cap{"満枠判定
SF: 可能枠 vs 申込者数"}:::ext
dates{"申込可能日程数判定
3/4/5/6日程で分岐"}:::hot
wait["キャンセル待ち"]:::warn
notify["日程が合わない
→新日程通知登録"]:::warn
recheck{"再判定
申込断面で最新枠を再チェック"}:::hot
retake{"2回目以降 受講判定"}:::warn
coupon["クーポンコード判定
SFクーポンマスタ"]:::ext
form["外部フォームURL生成
状態を11パラメータに詰めて
外部フォームへ"]:::ext
pay["外部決済
セルフコア=Stripe / REBOOST=PayPal"]:::ext
start-->inflow-->apply-->kind-->avail-->cap
cap-->|"空きあり"|dates
cap-->|"満枠"|wait
dates-->|"合わない"|notify
dates-->|"選択"|recheck-->retake
retake-->|"最受講"|pay
retake-->|"新規"|coupon-->form-->pay
LINE/n8n=接客と通知、EC連携層=状態判断・出し分け・決済、Salesforce=真実源(読取)、Stripe=決済とクーポン、管理画面=枠とモニタ。色=担い手。
flowchart TB
classDef line fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef ec fill:#e0e7ff,stroke:#4f46e5,color:#1e1b4b
classDef pay fill:#fdebd3,stroke:#ea580c,color:#7c2d12
classDef data fill:#f0eafe,stroke:#7c3aed,color:#3b0764
classDef ops fill:#eef1f6,stroke:#64748b,color:#1e293b
subgraph L["接客・通知 (LINE / n8n・FUZEN)"]
rich["公式LINE 告知・リッチメニュー"]:::line
n8n["n8n / FUZEN
リマインド・告知送信"]:::line
end
subgraph E["統合ECサイト (連携層オーケストレーター)"]
mini["LINEミニアプリ フロント
受講履歴で商品・価格を出し分け"]:::ec
orch["状態判断ロジック(純関数)
受講状況×枠×クーポン×決済"]:::ec
admin["運営 管理画面
サービス選択→枠/日程/モニタ"]:::ops
end
subgraph P["決済 (Stripe)"]
stripe["Stripe Checkout
サブスク/単発/セット・標準クーポン"]:::pay
rm["決済状態 read model"]:::pay
end
subgraph D["データ真実源"]
sf["Salesforce
受講履歴・会員(読取)"]:::data
sql["Cloud SQL
枠・日程・注文"]:::data
bq["BigQuery
行動履歴・分析"]:::data
end
rich-->|"申込タップ→line_id"|mini
mini-->|"id_token検証"|orch
orch-->|"受講状況 照会(読取)"|sf
orch-->|"空き枠/定員"|sql
orch-->|"出し分け結果"|mini
mini-->|"Checkout生成"|stripe
stripe-->|"webhook"|rm
rm-->|"確定→受講予約 upsert"|sf
rm-->|"行動/決済イベント"|bq
rm-->|"リマインド予約"|n8n
admin-->|"枠/日程 登録"|sql
n8n-->|"配信"|rich
LINEで告知→1tapログイン→受講履歴で「買える棚」だけ表示→日程→カート(クーポン自動適用)→決済→LINEに戻る。離脱しても入口は1つ。
flowchart TB
classDef u fill:#e0e7ff,stroke:#4f46e5,color:#1e1b4b
classDef d fill:#fdf2e3,stroke:#d97706,color:#7c2d12
classDef g fill:#dcfce7,stroke:#16a34a,color:#14532d
a["LINE告知/リッチメニュー
『申し込む』タップ"]:::u
b["ミニアプリ起動
1tapログイン"]:::u
c["ホーム:受けられるサービス
受講履歴で出し分け"]:::u
dd{"受講可否"}:::d
e["選べる商品が並ぶ"]:::u
f["前提未充足はロック+理由"]:::d
g["日程選択
空き枠/満枠はキャンセル待ち"]:::u
h["カート:セット割/参加済割 自動適用"]:::u
i["決済(方法を選択)"]:::u
j["完了→LINEに戻る
リマインド予約済"]:::g
a-->b-->c-->dd
dd-->|"受講可"|e-->g-->h-->i-->j
dd-->|"前提未充足"|f
運営はサービス選択→管理画面で枠・日程登録→申込/決済モニタ。クーポンはStripe、告知URLはマーケがFUZENで設定。エンジニア依存からセルフサービスへ。
flowchart LR
classDef ops fill:#eef1f6,stroke:#64748b,color:#1e293b
classDef line fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef pay fill:#fdebd3,stroke:#ea580c,color:#7c2d12
subgraph OP["運営/事業部"]
o1["Google SSOログイン"]:::ops
o2["サービス選択"]:::ops
o3["日程・枠登録(定員)"]:::ops
o4["申込/決済モニタ
確定/未決済/待ち"]:::ops
o5["当日運営・参加確認"]:::ops
end
subgraph MK["マーケ"]
m1["LINE告知URL/
パラメータ(FUZEN)"]:::line
end
subgraph PC["クーポン"]
c1["Stripeで発行/管理"]:::pay
end
o1-->o2-->o3-->o4-->o5
m1-.->o4
c1-.->o4
commune-integration の確定設計(S-01)を REBOOST に拡張。クライアントの自己申告を信用せず、IDトークンをサーバ検証。縦帯=担い手、横帯=処理フェーズ。
sequenceDiagram
autonumber
actor U as 顧客
box rgb(224,231,255) 顧客接点・統合EC
participant LI as LINEミニアプリ(LIFF)
participant EC as EC連携層
end
box rgb(243,232,255) データ真実源
participant SF as Salesforce(読取)
participant DB as Cloud SQL(枠/注文)
end
box rgb(255,237,213) 決済・通知
participant ST as Stripe
participant N8 as n8n/FUZEN
end
rect rgb(241,245,249)
Note over U,DB: ① 入店・出し分け
U->>LI: 申し込むタップ
LI->>LI: liff.init → getIDToken
LI->>EC: POST /entry (IDトークン)
EC->>EC: 検証 → line_uid 確定
EC->>SF: 受講履歴/会員 照会(読取)
EC->>DB: 空き枠・定員 取得
EC->>EC: 出し分け(純関数)
EC-->>LI: 買える商品・日程・クーポン
end
rect rgb(241,245,249)
Note over U,ST: ② 決済 (有料/無料/振込で確定タイミングが変わる)
U->>LI: 商品/日程 選択
LI->>EC: POST /checkout
EC->>ST: Customer + Checkout Session
ST-->>LI: Checkout URL
U->>ST: 決済
end
rect rgb(241,245,249)
Note over ST,N8: ③ 確定・通知
ST->>EC: 決済完了 Webhook(署名検証)
EC->>DB: 注文・枠確定を記録
EC->>SF: 受講予約 upsert
EC->>N8: リマインド予約(Cloud Tasks)
N8-->>U: LINEで通知/リマインド
end
顧客はメール/パスワード登録なし、ミニアプリで1tap承認。運営はGoogle SSO。ログイン基盤を共通化すると今後の新規プロダクト全部の入口になる。
sequenceDiagram
autonumber
actor U as 顧客
box rgb(220,252,231) LINE
participant LA as LINEアプリ
participant LI as ミニアプリ(LIFF)
end
box rgb(224,231,255) 自社
participant EC as EC連携層
end
box rgb(255,237,213) LINE Platform
participant LV as LINE verify API
end
U->>LA: リッチメニュー(URI)タップ
LA->>LI: ミニアプリを開く
LI->>LI: liff.init(自動ログイン)
alt 未ログイン
LI->>LA: liff.login() → LINEログイン
LA-->>LI: 戻る(再実行)
end
LI->>LI: getIDToken()
LI->>EC: POST /entry (Bearer IDトークン)
EC->>LV: POST verify (id_token + channelId)
LV-->>EC: 署名/exp/iss/aud OK + sub
EC->>EC: aud再確認+形式チェック → line_uid確定
EC-->>LI: 本人確定 → 出し分けへ
Note over EC: getProfile は信用しない(公式の禁止事項)
「決まっていないこと」を明示。★が最重要(先に決めると後段が連鎖的に決まる)。観点=ユーザー / オペ / システム。
| # | 論点 | 観点 | 叩き台の方向性 |
|---|---|---|---|
| ★1 | LINE UI と Web UI の境界線 | ユーザー | 申込率がKPI。顧客テストで決める。原則「判断・決済はWeb、告知・リマインドはLINE」 |
| ★2 | スコープ:REBOOSTのみ か 全商品か | オペ | REBOOSTで型を作り→横展開(EC化ありで合意寄り) |
| ★3 | 実装基盤の持たせ方 | システム | 認証・決済・連携層は共通core化。サービス固有はモジュール |
| 4 | 認証の採用 | システム | ミニアプリSSOで確定方向。実機検証(外部ブラウザ復帰/LIFF遷移)必須 |
| 5 | 枠・クーポンの所在 | オペ | 枠SF→管理画面、クーポンSF→Stripe標準へ移管。SFは読取に残す |
| 6 | 決済の統一 | システム | Stripeへ寄せる。カード/振込/分割/0円/サブスクを1設定で出し分け |
| 7 | セット販売/一括決済 | ユーザー | Stripe line_items複数で実現。前提条件(受講順)をロジックで制御 |
| 8 | データ真実源の確定 | オペ | line_uidをjoinキーに。受講状況の正準キーは要確定 |
| 9 | 検証期間とリリース戦略 | オペ | 段階公開+長めの検証窓。新機能"付与"で本番影響を遮断 |
| 10 | 初回/2回目判定・カットオーバー前データ | システム | カット時の友だち一覧と突合で初回判定 |
統合EC 画面イメージ(叩き台)・ 2026-06-23 ・ ブループリント本体: reboost-selfcore-ec-blueprint.html ・ noindex(社内検討用)