講座運営 / 料金プラン管理
講座運営 / 料金プラン管理
本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(
## 🔧 実装詳細以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。
概要
料金プラン管理は、メイン講師が自身の講座の料金プランを作成・編集・廃止・並び替えする機能。料金プランには月額サブスクと買い切り(一括)の 2 タイプがあり、それぞれに価格・契約期間(サブスク)・利用可能日数(一括)・無料体験期間・表示順を設定できる。さらに、入会時の同意条件・契約書面・個人情報取得設定など、契約手続きに必要な付随設定も同じ画面で管理する。
主な利用想定は、新講座の料金プラン構築、シーズン更新時の価格改定、新プラン追加(廉価版 / プレミアム版の追加)、廃止プランの撤去など。受講者の契約・決済・解約フローに直結する重要な機能で、変更履歴は内部に自動保存され、後から「いつ価格を変更したか」を追跡できる。
権限: 料金プランの作成・編集・廃止はメイン講師専用。サブ講師は閲覧のみで編集できない。
削除制約: 廃止しようとする料金プランにサブスク契約中の受講者が残っている場合、または有効なオファー(
./offer.md)が紐付いている場合は削除できない。先に契約者の対応・オファーの停止が必要となる。
既存契約者への影響: プランを廃止しても、すでに契約中の受講者の契約は維持される。受講者側からは別プランへの「変更予約」を設定でき、現在の契約期間の終了に合わせて新プランへ移行する仕組み。
📝 レビュー観点:
- 目的: 料金プランの構築・改定経路。受講者の契約に直結
- 誰が使うか: メイン講師のみ(サブ講師は不可)
- どこで使うか: 講座編集画面の料金プランタブ、
/plan/{id}/price/create,/plan/{id}/price/{priceId}/edit- 隣接機能との関係: 講座編集(
./edit.md)、契約・決済(受講者側)、オファー(./offer.md)- CS 問い合わせで頻発する論点: 「料金プラン削除したいが既存契約者がいる」「無料期間の最小日数」「サブ講師が編集できないと言われる」
- [本機能特有] サブスク契約中ユーザーがいると削除不可: ビジネスエラーで弾く
- [本機能特有] 無料期間の FE/BE 乖離: BE 1 日〜 / FE 2 日〜
- [本機能特有] サブ講師は不可: 講座編集と異なり料金プランはメイン講師専用
- [本機能特有] 変更時は子テーブルが delete + 再登録: 差分更新ではない
利用シナリオ
シナリオ 1: 新規にサブスク型料金プランを作成する
メイン講師が料金プラン作成画面で、プラン名・月額価格・契約期間(1〜12 ヶ月)・無料体験期間・表示順を指定。同意条件と契約書面を設定し、保存。受講者が講座詳細画面で本プランを確認できるようになる。
シナリオ 2: 一括(買い切り)プランを追加する
サブスク以外の選択肢として、買い切り型の一括プランを作成。利用可能日数を指定することで「初回支払い後 N 日間利用可能」のプランを提供できる。記念講座・特別レッスン・教材セットなどに利用。
シナリオ 3: 既存プランの価格を改定する
シーズン更新やキャンペーン終了に合わせて、既存プランの価格・無料期間・同意条件などを編集して保存。変更履歴が自動で記録され、後から差分確認可能。
シナリオ 4: 古いプランを廃止する
新プランへの移行が完了し、不要になった旧プランを廃止。サブスク契約中の受講者が残っているプランは廃止できないため、まず受講者に変更予約してもらう運用となる。
シナリオ 5: プランの表示順を入れ替える
講座詳細画面で受講者に見せる料金プランの並び順を、講師が任意に調整。「おすすめプランを上に」「廉価版を上に」といった訴求戦略に応じて並び替えできる。
シナリオ 6: 受講者が別プランへ変更予約する
受講者側で「現在のプランを解約して別プランへ移行したい」場合、変更予約を設定。現在のプランの契約期間が終わったタイミングで自動的に新プランへ移行する仕組み。0 円プラン / 通常プランどちらも対応。
よくある失敗ケース
- 契約中ユーザーがいるプランの削除: ビジネスエラーで弾かれる。受講者対応が先
- 有効なオファーが紐付くプランの削除: 同様にエラーで弾かれる。先にオファー停止が必要
- 価格の上限超過: 0〜3,000,000 円の範囲外を入力するとエラー
- 無料期間の不整合: 画面の制限と内部設定で扱える値の差により、運用上は 2〜30 日が実質適用される
- サブ講師による編集試行: メイン講師権限が必要なため、サブ講師では画面に入れない / 保存時にエラー
- タイトル文字数オーバー: 1〜20 文字を超えるとエラー
権限別仕様
権限定義は ../user-roles.md 参照。用語は ../terminology.md。
講座権限軸
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| 料金プラン作成 | × | × | × | ○ |
| 料金プラン編集 | × | × | × | ○ |
| 料金プラン廃止 | × | × | × | ○ |
| 料金プラン並び順変更 | × | × | × | ○ |
| 料金プラン履歴閲覧 | × | × | × | ○ |
| 公開料金プランの参照 | ○ | ○ | ○ | ○ |
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| 料金プラン削除 | ○(運営アドミン経路) | × | × |
| 料金プラン作成・編集 | ×(運営アドミン専用経路なし、メイン講師での代行のみ) | × | × |
📝 レビュー観点:
- サブ講師は完全に不可: 講座編集と異なる
- 運営アドミン経由は削除のみ: 作成・編集の運営アドミン経路は無し(要確認)
機能詳細(ふるまい)
料金プラン作成
入力項目:
- プラン名: 1〜20 文字(必須)
- タイプ: サブスク / 一括(買い切り)の選択
- 価格: 0〜3,000,000 円
- 契約期間: サブスク選択時、1〜12 ヶ月
- 利用可能日数: 一括選択時、契約後の利用可能期間
- 無料体験期間: 2〜30 日の範囲で設定(任意)
- 表示順: 講座詳細画面での並び順
- 同意条件: 入会時に受講者へ提示する条件文(プラン単位で設定)
- 契約書面: 契約成立時に発行する書面
- 個人情報取得設定: プラン単位で必要な個人情報項目(住所 / 氏名 等)の取得有無
- 公開状態: 公開 / 非公開(非公開化で新規入会導線から外す運用)
料金プラン編集
- 既存プランの全フィールドを編集可能
- 同意条件・契約書面などの付随設定も同じ画面で更新
- 編集内容は変更履歴に時系列で内部保存され、後から差分確認可能
- 価格変更等の編集は新規入会者にのみ適用され、既存契約者の契約条件は維持される
- 同時編集の競合は内部で検知され、後勝ち / 排他制御で防止
料金プラン廃止
- プラン廃止は論理削除(内部にデータは残る)
- 削除後は新規入会導線から外れる
- 削除拒否される条件:
- サブスク契約中の受講者が残っている場合
- 有効なオファー(ワンタイムオファー含む)が当該プランに紐付いている場合
- 既存契約者の契約自体は廃止後も維持される
表示順変更
- 講座詳細画面で受講者に見せる料金プランの並び順を、講師が任意に調整可能
- ドラッグ操作などで並び替えて保存
受講者向け「料金プラン変更予約」
- 受講者は現在のプランから別プランへの変更を予約可能
- 0 円プラン / 通常プランどちらも対応
- 現プランの契約期間が終わったタイミングで自動的に新プランへ移行
- 受講者側でキャンセルすることもできる
制限値(上段サマリ)
- プラン名: 1〜20 文字(必須)
- 契約期間: 1〜12 ヶ月(サブスク)
- 価格: 0〜3,000,000 円
- 無料体験期間: 2〜30 日(画面で受け付ける範囲)
- 削除制約: サブスク契約中の受講者あり / 有効オファー紐付きの場合は不可
📝 レビュー観点:
- 入力 → 処理 → 出力: 編集 → 確認 → 即時反映
- エッジケース: 削除拒否時の文言、無料期間の下限差分、
is_hidden=trueで非表示化した既存プランへの新規入会経路の挙動- 編集・削除の挙動: 既存契約者には影響しない(過去契約は維持)。受講者は別プランへ「変更予約」できる
- [本機能特有] 子テーブルの delete + 再登録: 履歴トリガで
plan_price_historyには記録される
admin 操作
運営アドミン経路で可能な操作
- 料金プランの削除:
DELETE /admin_master/plan/{plan_id}/plan_price/{price_id}
該当なし / 実装されていない
- 運営アドミンによる料金プラン作成・編集: 専用経路なし(メイン講師権限での代行のみ)
- 代理での廃止理由設定: 専用経路なし
📝 レビュー観点:
- 運営アドミン経由の削除が
DeletePlanPriceUseCaseを経由しているか(契約中ユーザーチェックがバイパスされていないか)
品質 / 約束事項
- 応答性: 作成・編集・廃止は即時反映
- 信頼性: 楽観排他(
version)で同時編集を検出 - 制限値:
- プラン名: 1〜20 文字
- 契約期間: 1〜12 ヶ月(サブスク)
- 価格: 0〜3,000,000 円
- 無料期間: 2〜30 日(実質 FE 制約)
- 削除制約: サブスク契約中ユーザー / 有効なワンタイムオファーが残るプランは削除不可
- データ保持: 論理削除、履歴は内部的にトリガで自動保存
📝 レビュー観点:
- [本機能特有] 無料期間下限の FE/BE 乖離: BE 1 / FE 2 → 改善課題
- 応答性: 並び順変更・大量プラン時の挙動
変更履歴(リリースノート候補)
v2.29.2: 2026-05-02(PSD 初版)
- [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない
📝 レビュー観点:
- 過去の主要変更(料金プラン変更予約導入 / 履歴トリガ追加 /
marketing_sort移行 等)
関連ドキュメント
- 権限定義:
../user-roles.md - 用語辞書:
../terminology.md - 関連 PSD:
./edit.md— 講座基本情報編集./offer.md— オファー / キャンペーン