機能要件定義書
プロジェクト: シュートボクシング協会 統合PWAアプリ(SB-Ticket)
バージョン: 2.0
作成日: 2026-03-16
ソース: SB_要件定義書_v2.0.docx(株式会社concept作成・AGI開発用確定版)
1. プロジェクト概要
1-1. システムの目的
シュートボクシング協会の試合チケット販売を選手個人レベルでデジタル管理し、ファンとの継続関係を構築する。試合決定と同時にLP(ランディングページ)を自動生成・公開し協会主導でもチケット販売を促進。選手へのキャッシュバック還元・スポンサー営業支援・concept社へのAGI開発案件紹介を通じたキックバック収益モデルを一元管理するPWAアプリ。
1-2. 参考サービス
ボクシングチケットドットコム (boxing-ticket.com) — ボクシング界で755名の選手が登録する実稼働サービス。
取り込む思想:
- 選手からチケットを買うことが選手の収入に直結する設計思想
- 選手ごとの個別公開ページ(ファンが直接購入)
- アクセスランキングによる選手間の競争促進
- スポンサー掲載による企業露出
- チケット締切日の可視化(緊急性の演出)
- 激励賞(ファンが選手に直接金銭的応援を送れる仕組み)
本システムの追加機能:
- 試合LP自動生成(AI対戦カード別デザイン・公開許可フロー)
- LP経由チケット売上の選手還元ロジック
- 協会管理者ダッシュボード(洗練UI/UX)
- 試合×選手別ノルマ管理
- チケットぴあAPI連携(ref付きURL・QR生成→購入自動紐づけ)
- ファンCRM(購入者DB・掘り起こし営業支援)
- SMS二段階認証・SMS通知(Twilio)
- スポンサー企業管理 + concept社内CRM連携
- キックバック自動計算・支払管理
- セキュリティ対策(通信・認証・データ保護・不正アクセス防止)
2. 利用者・権限ロール
| ロール | 対象者 | 主な権限 |
|---|
| 協会管理者 | 協会スタッフ1〜3名 | 全機能(試合作成・LP生成・ノルマ設定・全選手データ閲覧・スポンサー管理・キックバック管理・還元設定) |
| 選手 | 登録選手(数十名規模) | 自分のデータのみ操作・公開ページ管理・ファンCRM・QR生成・自分のLP閲覧 |
| スタッフ | 協会スタッフ(閲覧のみ) | 全選手の販売状況・LP閲覧のみ。編集不可 |
| concept管理者 | 株式会社concept社内 | 営業リード管理・ステータス入力・協会への公開許可・キックバック管理 |
3. 認証・ログイン仕様
3-1. 選手・協会管理者ログインフロー
| ステップ | 内容 | 備考 |
|---|
| 1 | 協会が発行したID(英数字)+初期パスワードでログイン | 初期パスワードは協会管理者が設定して選手に通知 |
| 2 | 初回ログイン時に強制パスワード変更画面へリダイレクト | 8文字以上・大文字小文字英数字+記号混在を必須バリデーション |
| 3 | 電話番号(携帯)を登録 | SMSが受信できる番号のみ受け付け |
| 4 | SMS認証コード(6桁)を入力して認証完了 | 有効期限5分。3回ミスでコード再送要求 |
| 5 | 以降のログインはID+パスワード→SMS認証コードの2段階 | SMS送信にはTwilio Verify APIを使用 |
3-2. パスワードリセット
「パスワードを忘れた」→ 登録電話番号にSMSでリセットコード送信 → 新パスワード設定(前回パスワードの再使用不可)
3-3. アカウントロック
パスワード or SMS認証コードを5回連続ミス → アカウントロック → 協会管理者のみ解除可能
4. 試合(イベント)管理
4-1. 作成・編集権限
協会管理者アカウントのみ。選手・スタッフは編集不可(閲覧のみ)。
4-2. 試合登録項目
| 項目 | 入力形式 | 必須 | 備考 |
|---|
| 試合名 | テキスト(最大100文字) | 必須 | 例:SHOOT BOXING 2026 act.2 |
| 開催日 | 日付ピッカー | 必須 | |
| 会場名 | テキスト(最大100文字) | 必須 | 例:東京・後楽園ホール |
| 開場・開始時間 | 時刻ピッカー | 必須 | |
| チケット発売日 | 日付ピッカー | 必須 | この日以降に選手QR・URLが公開される |
| チケット販売締切日 | 日付ピッカー | 必須 | 締切アラートの基準日 |
| 席種・定価 | 席種名+金額の複数登録 | 必須 | 例:VIP席20,000円 / S席7,000円 / A席5,000円 |
| 販売経路 | チェックボックス(ぴあ/イープラス/手売り) | 必須 | 複数選択可 |
| チケットぴあURL | URL入力 | ぴあ選択時必須 | refパラメータ付与の基底URL |
| 出場選手アサイン | 登録済み選手リストから複数選択 | 必須 | |
| 宣材写真アップロード | 複数画像(JPG/PNG・最大20MB) | LP生成時必須 | 対戦選手ごとにアップロード |
| 試合紹介テキスト | テキストエリア | 任意 | LP自動生成のプロンプト素材として使用 |
4-3. ノルマ設定
- 設定者:協会管理者のみ
- 選手ごとに異なる枚数設定可能(一律設定 or 個別設定のUIを両方用意)
- 選手は自分のノルマを閲覧できるが編集不可
5. チケット販売・購入紐づけ仕様
5-1. チケットぴあ連携
| 項目 | 仕様 |
|---|
| URL生成 | 選手×試合ごとにref付きURL自動生成 例:https://t.pia.jp/xxxx?ref=sb_player007_event001 |
| QRコード | qrcode.jsで自動QR化。PNG形式DL可。Instagram用1080×1920サイズでも出力 |
| 購入紐づけ | WebhookコールバックでPlayer_id+event_idを受け取り自動カウント |
| Webhook署名検証 | HMAC-SHA256でぴあからのリクエストを検証 |
| 購入者名 | コールバック受信後、選手がアプリで手入力(任意)。入力済みは次回補完候補に表示 |
5-2. 手売り管理
| 入力項目 | 形式 | 必須 |
|---|
| 購入者名 | テキスト | 任意 |
| 購入枚数 | 数値 | 必須 |
| 支払方法 | 現金/振込/その他(選択式) | 必須 |
| 支払済フラグ | チェックボックス | 必須 |
| 支払日 | 日付ピッカー | 任意 |
| 備考 | テキスト(最大200文字) | 任意 |
※ 当日券は協会管理者が試合終了後に一括手動入力
6. 選手個別公開ページ(外部公開)
6-1. URL形式
https://sb-ticket.com/fighters/[選手スラッグ]
例:https://sb-ticket.com/fighters/kasahara-naoki
6-2. 公開内容(ログイン不要)
| 表示要素 | 内容 | 備考 |
|---|
| 選手プロフィール | 氏名・所属ジム・階級・プロフィール画像 | 選手が登録・編集可能 |
| 次の試合情報 | 試合名・日時・会場・締切カウントダウン | 出場アサイン済みの直近試合を自動表示 |
| チケット購入ボタン | 席種別ref付きURL(ぴあ・イープラス)へジャンプ | |
| QRコード表示 | 画面上でQRを表示。ファンがその場でスキャン可 | |
| スポンサー一覧 | 企業名・ロゴ・リンク(協会承認済みのみ) | |
| SNSシェアボタン | LINE/Instagram/X/コピーの4種 | URLとQR画像をセットで共有 |
| (Phase2)激励賞一覧 | 激励した企業名・個人名を掲載(任意) | Stripe決済連携後に実装 |
6-3. SNSシェア仕様
- LINE: URL+「[選手名]の試合チケットはこちら!」のテキストをセットでシェア
- Instagram: QR画像をPNG形式でDL → ストーリー用1080×1920サイズで出力
- X (Twitter): 「[試合名] [選手名]のチケットはこちら→[URL]」のテキストを自動生成
- コピー: URLをクリップボードにコピー
7. 試合LP(ランディングページ)自動生成機能
本システム最大の差別化機能。試合が決定する度に協会がワンクリックでLP(試合告知ページ)を自動生成し、選手の宣材写真を放り込むだけで対戦者デザインの本格的なLPが作られる。LPからの購入は協会チケット売上として計上され、選手への還元ロジックと連動する。
7-1. LP生成フロー
| ステップ | 操作者 | 内容 |
|---|
| 1. 試合登録 | 協会管理者 | 試合名・日時・会場・出場選手・宣材写真・試合紹介テキストを登録 |
| 2. LP自動生成 | システム(AI) | 登録データを基にAIがLP HTMLを自動生成。対戦カードのビジュアルデザインも自動作成 |
| 3. プレビュー確認 | 協会管理者 | 生成されたLPをプレビュー表示。必ず目視確認してから公開する |
| 4. テキスト・画像編集 | 協会管理者 | プレビュー上でテキストの修正・画像の差し替えが可能なビジュアルエディタを提供 |
| 5. 公開許可 | 協会管理者 | 「公開する」ボタンを押した時点でLP URLが外部公開。許可しない限り非公開(ドラフト状態) |
| 6. SNS告知 | 協会管理者 | 公開後にLP URLをX/Instagram/LINEにワンクリックでシェアできるボタンを表示 |
7-2. LP自動生成の内容
| 要素 | 自動生成内容 | 編集可否 |
|---|
| ヒービジュアル | 対戦選手の宣材写真を合成した対戦カードビジュアル(vs構図・名前・階級を自動配置) | 画像差し替え可 |
| 試合タイトル | 試合名・開催日・会場を大きく表示 | テキスト編集可 |
| 試合紹介文 | 登録した紹介テキストを自動整形・AIが補完文を追加 | テキスト編集可 |
| 出場選手一覧 | 出場全選手のプロフィールカード(写真・名前・所属・階級)を自動生成 | 追加・削除可 |
| チケット購入CTA | 協会用ref付きURLへのボタンを席種別に自動配置 | 自動(編集不要) |
| 席種・料金表 | 登録した席種・定価を視覚的な料金表として表示 | テキスト編集可 |
| SNSシェアボタン | LP上にX/LINE/Instagramのシェアボタンを自動配置 | 自動 |
| スポンサー枠 | 協会スポンサーのロゴ・リンクを自動表示 | 自動(スポンサー管理と連動) |
7-3. LP専用チケット購入URL(協会枠)
LPからの購入は「協会枠」として選手個人枠とは別に計上。
ref付きURL例:https://t.pia.jp/xxxx?ref=sb_association_event001
7-4. LP URL・ステータス管理
| ステータス | 意味 | 外部公開 |
|---|
| ドラフト | 生成済みだが未確認・未公開 | 非公開 |
| 確認中 | 協会管理者がプレビュー確認中 | 非公開 |
| 公開済み | 協会管理者が公開許可を押した状態 | 公開 |
| 公開停止 | 試合終了後または手動で非公開に戻した状態 | 非公開 |
7-5. ビジュアルエディタ仕様
- テキスト:フォント・色・サイズの変更可
- 画像:クリックしてDrag&Dropで差し替え可(最大10MB・JPG/PNG)
- CTAボタン:ボタンテキストの変更可。URLは自動設定のため変更不可
- モバイルプレビュー:PC/スマホの2パターンのプレビューを切り替えて確認できる
8. LP経由売上・選手還元ロジック
協会がLPを使って選手のためにチケットを売ってくれている。その売上の一部が自分の収入になる。→ 選手が「協会が自分を支援してくれている」「この競技で生計が成り立つ」と実感できる設計。
8-1. 売上の分類
| 販売経路 | 計上先 | 説明 |
|---|
| 選手個人QR/URL経由 | 選手個人枠 | 選手が自分でSNSやDMで配布したQR/URLからの購入 |
| LP経由(協会枠) | 協会枠 | 協会が作成・公開したLPからの購入 |
| 手売り | 選手個人枠 | 選手が直接販売した分 |
| 当日券 | 協会枠 | 会場で当日販売した分 |
8-2. LP経由売上の選手還元設定
| 設定項目 | 仕様 | 備考 |
|---|
| 還元率 | 0〜100%を1%単位で設定(例:50%) | 協会管理者が試合×選手ごとに設定 |
| 還元計算タイミング | 試合終了後にバッチで一括計算 | 手動実行 or 開催日翌日に自動実行 |
| 還元額の自動計算 | LP経由売上金額 × 還元率 = 選手還元額(自動計算) | |
| 還元の公開設定 | 選手が自分の還元額を確認できる画面を提供 | 金額・試合名・支払予定日を表示 |
| 支払管理 | キックバック管理と同様に支払済フラグ・支払日を管理 | |
8-3. 選手から見えるダッシュボード(収入サマリー)
| 表示項目 | 内容 |
|---|
| 自分枠チケット売上合計 | 個人QR/URL+手売りの合計販売枚数と金額 |
| LP経由還元額(確定) | 協会LPからの還元として確定した金額(試合終了後) |
| LP経由還元額(見込み) | 現在販売中のLPからの見込み還元額(リアルタイム) |
| 累計還元受取額 | 過去全試合の累計受取金額 |
| 次回支払予定日 | 未払い還元額の支払予定日 |
8-4. 協会管理者から見える還元管理画面
| 表示項目 | 内容 |
|---|
| 試合別LP売上 | LP経由の総売上額(席種別内訳付き) |
| 選手別還元額一覧 | 試合×選手の還元額・支払ステータスを一覧表示 |
| 未払い還元総額 | 協会が選手に支払うべき残高の合計 |
| 支払実行 | 選手を選択して「支払済」にマークするボタン |
| CSV出力 | 還元データ一覧をCSVエクスポート |
9. ファンCRM(購入者管理)
9-1. 購入者データ構造
| フィールド | 型 | 説明 |
|---|
| fan_id | UUID | 自動採番 |
| player_id | UUID | 紐づく選手 |
| name | テキスト | 購入者名(手入力・暗号化保存) |
| phone | テキスト | 任意登録(AES-256暗号化保存) |
| email | テキスト | 任意登録(AES-256暗号化保存) |
| memo | テキスト | 選手が自由入力できるメモ欄 |
| created_at | タイムスタンプ | 初回登録日 |
9-2. 購入履歴データ構造
| フィールド | 型 | 説明 |
|---|
| purchase_id | UUID | 自動採番 |
| fan_id | UUID | 購入者 |
| player_id | UUID | 担当選手(またはassociation=協会枠) |
| event_id | UUID | 試合 |
| quantity | 整数 | 購入枚数 |
| route | ENUM | player_pia / player_eplus / association_lp / player_cash / player_transfer / day_ticket |
| paid | Boolean | 支払済フラグ |
| purchased_at | タイムスタンプ | 購入日時(自動 or 手入力) |
9-3. 掘り起こし機能
直近2試合に購入履歴がないファンを自動でリストアップし「要フォロー」タグを付与。
選手はリストから対象者を選択 → 今回試合のref付きURL・QRをワンタップ生成 → LINE/X/コピーでシェア。
9-4. アクセスランキング
| ランキング種別 | 集計対象 | 閲覧権限 |
|---|
| 試合別チケット販売枚数 | 試合ごとの全選手販売枚数 | 全ロール閲覧可(他選手の詳細数値は非表示・順位のみ) |
| 選手公開ページPV数 | 日次・週次・月次 | 協会管理者のみ詳細閲覧可 |
| デイリーランキング | 前日の販売枚数 | 全ロール閲覧可(順位のみ) |
| LP経由販売ランキング | 協会LPからの購入数 | 協会管理者のみ |
10. 通知仕様
SMS送信にはTwilio Messaging API。二段階認証にはTwilio Verify APIを使用。
| 通知トリガー | 通知先 | 方法 | メッセージ例 |
|---|
| チケット購入コールバック受信(個人枠) | 担当選手 | SMS+プッシュ | 「[試合名]のチケットが1枚購入されました」 |
| LP経由購入発生 | 協会管理者 | プッシュ | 「[LP名]からチケットが[N]枚購入されました」 |
| 締切14日前 | 該当選手 | プッシュ | 「[試合名]のチケット締切まで14日。達成率[X]%」 |
| 締切7日前・達成率50%以下 | 選手+協会管理者 | SMS+プッシュ | 「[選手名]のチケット残[N]枚。締切7日」 |
| 締切3日前 | 該当選手 | SMS+プッシュ | 「[試合名]チケット締切まで3日!」 |
| 締切1日前 | 選手+協会管理者 | SMS+プッシュ | 「明日が締切!現在達成率[X]%」 |
| LPが公開された | 全出場選手 | プッシュ | 「[試合名]のLPが公開されました!シェアしよう」 |
| 還元額確定 | 該当選手 | SMS+プッシュ | 「[試合名]のLP還元額が確定しました:¥[N]」 |
| 還元支払完了 | 該当選手 | SMS+プッシュ | 「[金額]円を振り込みました」 |
11. スポンサー管理
11-1. 登録項目
| フィールド | 型 | 必須 | 備考 |
|---|
| 紐づく選手 | 選択(選手リスト) | 必須 | |
| スポンサー企業名 | テキスト | 必須 | |
| 業種 | テキスト or カテゴリ選択 | 必須 | |
| 担当者名 | テキスト | 必須 | |
| 担当者電話 | テキスト(AES-256暗号化) | 必須 | |
| 担当者メール | テキスト(AES-256暗号化) | 任意 | |
| 契約金額 | 数値(円) | 任意 | |
| 契約開始日・終了日 | 日付 | 任意 | |
| conceptへの営業ステータス | ENUM | 必須 | |
| 備考 | テキスト | 任意 | |
11-2. conceptへの営業ステータス
| ステータス | 意味 | 入力者 |
|---|
| 未接触 | アプローチしていない | concept管理者 |
| アプローチ済 | 接触済み・返答待ち | concept管理者 |
| 商談中 | ヒアリング・提案中 | concept管理者 |
| 受注済 | 契約成立 | concept管理者 |
| 見送り | 今回対象外 | concept管理者 |
11-3. concept社内CRM連携
concept管理者が自社画面でステータス・メモを入力 →「協会への公開を許可する」ボタン押下で協会画面に反映。
連携はconcept → 協会の一方向のみ。協会側は閲覧のみで編集不可。
公開許可の取り消しもconcept管理者が行う。取り消し後は協会画面から即時非表示。
12. キックバック管理
12-1. データ構造
| フィールド | 型 | 説明 |
|---|
| kickback_id | UUID | 自動採番 |
| sponsor_id | UUID | 紹介元スポンサー企業 |
| player_id | UUID | 紹介した選手(任意) |
| contract_amount | 整数(円) | concept AGI受注金額 |
| kickback_rate | 小数(%) | キックバック割合 |
| kickback_amount | 整数(円) | 自動計算:contract_amount × kickback_rate / 100 |
| payment_due_date | 日付 | 支払予定日 |
| paid_flag | Boolean | 支払済フラグ |
| paid_date | 日付 | 実際の支払日 |
| transfer_info | テキスト(暗号化) | 振込先情報 |
| memo | テキスト | 備考 |
12-2. キックバック試算表
| 受注規模 | AGI売上 | キックバック15% | キックバック20% |
|---|
| 1社受注 | 1,500万円 | 225万円 | 300万円 |
| 3社受注 | 4,500万円 | 675万円 | 900万円 |
| 5社受注 | 7,500万円 | 1,125万円 | 1,500万円 |
13. 協会管理画面 UIUX仕様
13-1. 協会ダッシュボード(ホーム)レイアウト
KPIカードを最上部に配置し、最重要指標を一目で把握できる構成。
| エリア | 表示内容 | デザイン指定 |
|---|
| KPIカード行 | 直近試合の総販売枚数 / LP閲覧数 / 達成率 / 未払い還元額 | 大きな数値+カウントアップアニメーション+前回比矢印 |
| 試合選択タブ | 直近・今後の試合を横スクロールタブで切り替え | アクティブ試合をレッドアンダーライン |
| 販売状況テーブル | 選手×ノルマ/販売/達成率をプログレスバー付きで一覧 | 達成率80%以上=緑/50〜80%=黄/50%未満=赤 |
| アラートパネル | 締切直前・達成率低い選手をサイドパネルで一覧 | 赤ボーダーのカードで視覚的に警告 |
| LP管理ショートカット | 試合LPのステータスをカード形式で表示 | ステータスバッジをカラーコードで区別 |
13-2. LP生成・管理画面
- 試合カードの「LP生成」ボタンをクリックするとモーダルが開き、生成オプションを確認できる
- 生成中はローディングアニメーション(進捗バー付き)を表示
- 生成完了後はプレビューが全画面モーダルで表示される
- プレビュー内でテキストをクリックするとその場で編集できる(インラインエディタ)
- PC/スマホのプレビュー切り替えボタンを常に表示
- 「公開する」ボタンは緑色・大きめのサイズで目立たせる。誤操作防止のため「本当に公開しますか?」の確認ダイアログを表示
13-3. 選手管理画面
- 選手一覧はグリッド表示(プロフィール画像サムネイル+名前+達成率バッジ)
- 選手カードをクリックすると詳細スライドオーバーパネルが右から出てくる(ページ遷移なし)
- スライドオーバーの中に:選手の販売状況チャート・ファン一覧・スポンサー一覧・還元履歴をタブで表示
13-4. 操作性UX原則
| 原則 | 実装内容 |
|---|
| ゼロローディング体感 | 主要データはスケルトンスクリーンで即座に枠を表示。データ取得後にフェードイン |
| 一画面完結 | 選手詳細・LP確認・通知送信はモーダル/スライドオーバーで完結。ページ遷移を最小化 |
| 操作の取り消し | 削除・公開停止などの破壊的操作はUndoトーストを3秒表示 |
| キーボードショートカット | ⌘K でコマンドパレットを開き、試合検索・選手検索・LP生成にジャンプできる |
| レスポンシブ | 協会管理画面もPC/タブレット/スマホ全対応 |
| エラー表示 | フォームバリデーションはリアルタイムでインライン表示。全体エラーはトーストで通知 |
14. 画面一覧
| 画面名 | 主な利用者 | 主な機能 |
|---|
| トップ(公開) | 一般ファン | 選手一覧・試合スケジュール・公開LP一覧 |
| 試合LP(公開) | 一般ファン・SNSからの流入 | 試合告知・チケット購入CTA・出場選手紹介・スポンサー |
| 選手個別公開ページ | 一般ファン | プロフィール・チケット購入・QR・スポンサー・SNSシェア |
| ログイン | 全ロール | ID・パスワード + SMS認証 |
| 初回パスワード変更 | 選手(初回のみ) | 新パスワード設定・電話番号登録 |
| 選手ホーム | 選手 | ノルマ達成率・締切カウント・収入サマリー・ランキング |
| ファンCRM | 選手 | 購入者リスト・掘り起こし対象ハイライト |
| QR・URL生成 | 選手 | 試合選択→QR/URL生成→SNSシェア |
| 手売り入力フォーム | 選手 | 購入者名・枚数・支払方法・支払済フラグ |
| 自分の公開ページ編集 | 選手 | プロフィール画像・SNSリンク・スポンサー申請 |
| 収入サマリー | 選手 | 個人枠売上・LP還元額(確定/見込み)・累計受取額・次回支払日 |
| 協会ダッシュボード | 協会管理者・スタッフ | KPIカード・販売状況テーブル・アラートパネル・LP管理 |
| 試合管理(作成・編集) | 協会管理者 | 試合情報登録・宣材写真アップロード・選手アサイン・ノルマ設定 |
| LP生成・編集・公開管理 | 協会管理者 | LP自動生成・ビジュアルエディタ・プレビュー・公開許可 |
| 還元管理 | 協会管理者 | 試合別LP売上・選手別還元額・支払管理・CSV出力 |
| 選手管理 | 協会管理者 | アカウント発行・ロック解除・権限管理・スライドオーバー詳細 |
| スポンサー管理 | 協会管理者 | スポンサー登録・conceptステータス閲覧・承認 |
| キックバック管理 | 協会管理者・concept | 受注紐づけ・自動計算・支払管理 |
| concept営業リード管理 | concept管理者 | 営業ステータス入力・協会への公開許可 |
| アクセスランキング | 全ロール(権限に応じた表示) | 日次・週次・月次ランキング・LP閲覧数 |
| 操作ログ | 協会管理者・concept管理者 | 誰がいつ何を操作したかの全履歴 |
15. 開発スコープ(Phase定義)
Phase 1(今回AGI開発)
| 機能 | スコープ |
|---|
| 選手個別公開ページ | 完全実装 |
| 試合LP自動生成・公開管理 | 完全実装 |
| LPビジュアルエディタ | 完全実装 |
| LP経由売上の選手還元ロジック | 完全実装 |
| 選手収入サマリー画面 | 完全実装 |
| チケットぴあ ref付きURL生成 | 完全実装 |
| QRコード生成(Instagram用含む) | 完全実装 |
| 手売り管理 | 完全実装 |
| ファンCRM(購入者DB・掘り起こし) | 完全実装 |
| SNSシェアボタン(LINE/X/コピー) | 完全実装 |
| 協会管理者ダッシュボード(洗練UI) | 完全実装 |
| 試合・ノルマ管理 | 完全実装 |
| SMS通知・二段階認証(Twilio) | 完全実装 |
| アクセスランキング | 完全実装 |
| スポンサー管理 | 完全実装 |
| キックバック管理 | 完全実装 |
| concept社内CRM連携 | 完全実装 |
| セキュリティ対策(全項目) | 完全実装 |
| 操作ログ | 完全実装 |
| チケットぴあWebhookコールバック(本番) | モック実装(ぴあ正式契約後に本番化) |
| イープラス連携(コールバック) | URL生成のみ(コールバック連携はPhase2) |
Phase 2以降
- オンライン激励賞(Stripe決済)
- LP対戦カードビジュアル高度化(AI画像生成)
- LINE通知連携
- App Store / Google Play ネイティブアプリ
- ダイナミックプライシング
16. 技術仕様
| 領域 | 技術スタック | 備考 |
|---|
| アプリ形式 | PWA(Progressive Web App) | Safari/Chrome/PC対応。Service Worker実装。ホーム画面追加でアプリアイコン化 |
| フロントエンド | React + TypeScript | TypeScript必須(型安全性確保)。レスポンシブ必須 |
| UIライブラリ | Tailwind CSS + shadcn/ui + framer-motion | shadcn/uiのダークテーマをベースにカスタマイズ |
| バックエンド | FastAPI(Python)+ TypeScript型定義共有 | RESTful API設計。OpenAPI仕様書を自動生成 |
| データベース | Supabase(PostgreSQL) | 認証・RLS・リアルタイム購読・Storageを活用 |
| 認証 | Supabase Auth + Twilio Verify API | SMS二段階認証。JWTはHttpOnly Cookieで管理 |
| 個人情報暗号化 | AES-256(Python cryptography) | 電話番号・メール・振込先情報を暗号化 |
| QRコード | qrcode.js | PNG DL可。Instagram用1080×1920サイズ出力対応 |
| プッシュ通知 | Web Push API(Service Worker経由) | |
| SMS通知 | Twilio Messaging API | 購入通知・締切アラート・還元通知 |
| LP生成 | Claude API(Anthropic)+ HTML/CSS自動生成 | 宣材写真のレイアウトはCanvas APIで合成 |
| 画像合成 | Canvas API + sharp(Node.js) | 対戦カードビジュアルの自動生成 |
| レートリミット | Redis(Upstash) | APIレートリミット・ログイン試行制限 |
| セキュリティヘッダー | Helmet.js middleware | CSP/HSTS/X-Frame-Options等 |
| フロントホスティング | Vercel | |
| バックホスティング | Render | |
| ストレージ | Supabase Storage | 選手画像・スポンサーロゴ・LP宣材写真 |
Generated by CCAGI SDK Phase 1 - 2026-03-16
Source: SB_要件定義書_v2.0.docx (株式会社concept)