Fincs

講座 / 契約管理(受講者視点)

講座 / 契約管理(受講者視点)

本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(## 🔧 実装詳細 以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。

概要

入会済み講座の契約管理機能。受講者が自身の契約状態を確認し、料金プラン変更や講座スコープでの支払い手段切替を行う。

重要な仕様:

  • 料金プラン変更は全て「次回更新時に予約適用」: 即時変更は存在しない。受講者が新プランを選択すると変更予約として登録され、次回課金日にバッチで切り替わる
  • 変更予約は 1 契約あたり 1 件まで: 既存予約があると新規予約はできない
  • サブスク → サブスクのみ: 一括前払いプランへの変更は不可
  • 適用後はキャンセル不可: バッチ適用済みの変更はキャンセル不可、適用前のみ取消できる

主な使い方:

  • 受講者: mypage > 契約内容、または講座内の契約管理導線から
    • 契約状態の確認(料金プラン名・次回課金日・契約満了日・解約状態・変更予約状態)
    • 料金プラン変更予約の作成・キャンセル
    • 講座スコープでの利用カード切替(既登録カードから別カードへ、または新規カード追加)
  • 運営アドミン: 契約参照・編集、契約開始日変更、無料契約の付与・取消等を運営アドミン専用機能で実行(../admin/contract.md

一括前払い(買切)プランは契約管理画面で変更予約・カード切替・解約ボタンが非表示となり、CS 経由で運営アドミン側にクーリングオフ等の対応を依頼する流れになる。

📝 レビュー観点(draft 段階の記述ヒント、完成時に削除):

  • 目的: 入会済み講座の契約状態確認、料金プラン変更、講座スコープでの支払い手段切替
  • 誰が使うか: 受講者(自身の契約管理)、運営アドミン(代理操作)
  • どこで使うか: mypage > 契約内容、講座内の契約管理導線
  • 隣接機能との関係: 入会フロー(./join.md)/ 退会フロー(./cancel.md)/ 単発支払い(./payment.md)/ 全体支払い手段(../user/payment-history.md
  • CS 問い合わせで頻発する論点: 「料金プラン変更したのにすぐ反映されない」「変更予約の取消し方」「複数の料金プランを契約できるか」
  • [本機能特有] 料金プラン変更は全て予約方式: 即時変更は不可、次回課金日にバッチで適用
  • [本機能特有] 変更予約は 1 件まで: 既存予約があれば新規予約不可
  • [本機能特有] サブスク → サブスクのみ: 一括前払いプランへの変更不可(itemType.isSubscription
  • [本機能特有] 講座ごとの利用カード: sb_payment_method_plan で「この講座にはこのカード」を割当可能
  • [本機能特有] 適用後はキャンセル不可: バッチで is_apply=true 化された後はキャンセル不可

利用シナリオ

シナリオ 1: 料金プランを変更したい

受講者が現在のサブスクプランから別のサブスクプランに変更したい。契約管理画面で新プランを選択すると 変更予約として登録される。即時の切替は行われず、画面には「次回更新時に切替」と表示される。次回課金日に自動的に新プランで決済が行われ、適用される。

シナリオ 2: 変更予約をキャンセル

「やっぱり今のプランのままでいい」と気づいた受講者が、適用前であれば変更予約をキャンセルできる。バッチで適用された後(「料金プラン変更済み」表示)はキャンセル不可。

シナリオ 3: 講座専用のカードを切り替える

複数のカードを登録しているユーザーが、特定の講座だけ別のカードで決済したい。契約管理 > 支払い手段から既登録カードを選択して切替(または新規カードを追加して切替)。次回課金から新カードで決済される。

シナリオ 4: 一括前払いプランの確認のみ

一括前払いプランを契約しているユーザーは、契約管理画面で契約状態の確認のみ可能。プラン変更・カード切替・解約のボタンは表示されず、必要な操作は CS 経由で運営アドミン側に依頼する。

よくある失敗ケース

  • 「料金プラン変更したのにすぐ反映されない」: 仕様として次回課金日まで反映されない(即時変更は存在しない)
  • 「同じプランに変更予約しようとした」: 同一料金プランへの変更は予約できない
  • 「変更予約を 2 件作りたい」: 1 契約あたり 1 件までの制約。既存予約のキャンセル後に新規予約が必要
  • 「サブスクから一括前払いに変更したい」: 不可。一括前払いへの変更経路はない(再度入会フローで一括契約をやり直す形)
  • 「カードが切り替わっていない」: バッチで適用される前なので次回課金から反映される旨を案内

📝 レビュー観点:

  • 標準的な料金プラン変更(予約 → 次回課金日に適用)
  • 変更予約のキャンセル(適用前のみ可)
  • 講座スコープでの利用カード切替(既登録カードから別カードへ)
  • 新規カードを追加して契約に紐付ける
  • 失敗ケース: 既存予約あり、サブスク以外への変更試行、カード未登録での予約

権限別仕様

権限定義は ../user-roles.md 参照。用語は ../terminology.md

講座権限軸

操作 未受講者 受講者 サブ講師 メイン講師
自身の契約状態確認 × ○(契約者のみ) ×(自講座は契約しない) ×(自講座は契約しない)
料金プラン変更予約 ×
変更予約キャンセル × ○(適用前のみ)
講座スコープの利用カード切替 ×
新規カード追加(講座スコープ) ×

横断軸

操作 運営アドミン テストユーザー 投稿禁止
自身の契約管理 (通常と同じ) (通常と同じ) (通常と同じ)
契約状態の運営アドミン参照・編集 ○(../admin/contract.md × ×
開始日変更(運営アドミン) × ×

📝 レビュー観点:

  • 講師は自講座に契約しない前提(運用上想定外)
  • 運営アドミンによる契約管理の典型用途(CS 対応 / 法人契約管理)

機能詳細(ふるまい)

契約状態の確認

契約管理画面で表示される項目:

  • 料金プラン名: 現在契約中のプラン
  • 次回課金日: 次回の自動課金が行われる日
  • 契約満了日: 解約済みの場合に表示。満了日まで利用継続可
  • 解約状態: 解約予約中(次回更新時退会)かどうか
  • 変更予約状態: 「次回更新時に切替」「料金プラン変更済み」等のステータス

料金プラン変更予約(重要)

料金プラン変更は全て予約方式:

  • 即時変更は存在しない(仕様として)
  • 変更予約を登録 → 次回課金日にバッチで適用 → 新プランで決済が走る
  • 適用後は「料金プラン変更済み」表示となり、新しい料金プランでの運用が始まる
  • CS 問い合わせで頻発する「変更したのに反映されない」案件の根拠は本仕様

変更予約の制約

  • 1 契約あたり予約は 1 件まで: 既存予約があれば新規予約不可
  • サブスク → サブスクのみ: 一括前払いプランへの変更不可
  • 同一料金プランへの変更不可: 現契約と同じプランへは予約不可
  • クレカ必須: 予約時にクレカが有効でないと予約不可

変更予約の状態遷移

状態 表示 キャンセル可否
予約中(is_apply=false 「次回更新時に切替」
適用済(is_apply=true 「料金プラン変更済み」 ×

講座スコープでの支払い手段切替

契約管理 > 支払い手段画面で、その講座の決済に使うカードを切り替える:

  • 既登録カードからの選択: 既に他講座で登録済みのカード一覧から選んで切替
  • 新規カード追加: その場で新しいカードを追加して即時その講座に紐付け
  • 切替の反映タイミング: 切替操作は同期処理で即時反映、次回課金から新カードで決済される

講座ごとの利用カード

同一ユーザーでも、講座ごとに異なるカードを利用カードとして設定できる:

  • 講座 A は VISA、講座 B は MASTER 等
  • 設定は講座契約に対して個別に保持される
  • 全体の利用カード一覧は ../user/payment-history.md で管理

一括前払いプランの扱い

一括前払い(買切)プランの契約は契約管理画面で変更予約・カード切替・解約のボタンが非表示となる:

  • プラン変更したい場合は CS 経由で運営アドミン側に依頼(クーリングオフ等で対応)
  • カード変更は通常不要(決済済みのため)
  • 解約も CS 経由(運営アドミンの強制退会・契約削除経路)

📝 レビュー観点:

  • 入力 → 処理 → 出力: 変更予約 → バッチ → 適用の時系列
  • エッジケース: 予約中に解約した場合の予約削除、適用直前のキャンセル試行(レースコンディション)
  • エラー表示: 既存予約あり時のメッセージ、サブスク以外への変更試行
  • [本機能特有] 「即時変更ボタンが見つからない」CS 問い合わせ対策: 仕様として即時変更が存在しない旨を biz 文言で明示

admin 操作

できる操作

  • 契約参照・編集: 運営アドミン専用機能で対応
  • 契約開始日変更: PUT /admin_master/contract/change_start_date/{user_id}
  • 無料契約付与・取消: POST/DELETE /admin_master/free_contract/...

詳細は ../admin/contract.md 参照。

📝 レビュー観点:

  • 運営アドミンが代理で料金プラン変更予約を作成・キャンセルする経路の有無
  • 開始日変更の用途(誤入会日の修正 / 法人契約調整)

品質 / 約束事項

  • 応答性: 契約状態取得・変更予約登録・カード切替は同期処理で即時反映。プラン変更の実適用は次回課金日に走るバッチ処理(日次想定)
  • 信頼性: 変更予約は予約段階で複数の整合性チェック(既存予約・同一プラン・サブスク確認・カード有効性)が走る。適用バッチは次回課金日に確実に実行され、失敗時は次回バッチで再判定される
  • 制限値:
    • 変更予約: 1 契約あたり 1 件まで
    • 登録カード: 1 ユーザーあたり 5 枚まで(../user/payment-history.md 参照)
  • データ保持: 適用済み変更予約は履歴として保持

📝 レビュー観点:

  • 応答性: 変更予約の登録は即時、適用は次回課金日に必ず実行
  • 信頼性: 適用バッチ失敗時の挙動(次回再試行 / 手動介入)
  • [本機能特有] 「変更したのに反映されない」相談: 仕様として次回課金日まで反映されない旨を biz 文言で明示

変更履歴(リリースノート候補)

v2.29.2: 2026-05-01(PSD 初版)

  • [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない

📝 レビュー観点:

  • 過去の主要変更(変更予約機能追加 / 講座ごとカード切替対応 / 複数契約対応 等)

関連ドキュメント


このページの内容を AI に質問しますか?
関連 spec を自動抽出して ChatGPT / Claude などに渡せます。
AI Prompt で開く →