基本設計書
SMART EC School(会員制ECスクール会員サイト)
現ブランド名:SMART EC LINK / 運営:株式会社スマートネクサス
文書バージョン1.1
作成日2026-07-27
作成者RERISE JAPAN開発チーム
対象システム会員サイト(frontend / backend / DB)+関連システム(AI説明会・稼働チェックツール)
参照要件定義書docs/requirements.md(v7.15)/docs/requirements-activity-checker.md

承認

区分 役職・氏名 承認日 押印
承認者    
確認者    
作成者 RERISE JAPAN開発チーム 2026-07-27

改訂履歴

版数改訂日改訂者改訂内容
1.0 2026-07-03 RERISE JAPAN開発チーム 初版作成。docs/requirements.md(v7.13)、docs/SCOPE_PROGRESS.md、frontend/src/types/index.ts、frontend/src/routes/index.tsx、backend/src/models・routers 実装コードを基に、現行実装の実態を反映した基本設計書として作成。
1.1 2026-07-27 RERISE JAPAN開発チーム docs/requirements.md(v7.15)反映+実装コード再検証による更新。 (1) TEMU保証金制度(1アカウント20万円/2アカウント以上30万円・敷金型・契約終了時全額返金、運営支援契約第6条の2)を追加。 (2) 既存会員向けTEMU追加申込導線 /temu-apply(U-015)とAPI /api/contracts/temu-addition を追加。 (3) 顧客管理シートの店舗審査ステータス列(新設)と整合cron /api/cron/review-status-reconcile を追加。 (4) 融資関連書類の売上算出基準を「入金額(confirmed_sales)」から「販売額グロス(gross_sales・発生ベース)優先」へ是正した実装(loan_support.py)を反映。 (5) 融資申請3点セット・資料③生成API /api/admin/loan-documents/keikakusho をAPI仕様に追加。 (6) 本体と独立した関連システムとして「8. 関連システム」を新設し、AI説明会システム(temu-ai-meeting/Cloud Run別サービス・招待キー制・スライド+TTS音声+Realtime質疑・/admin観戦ダッシュボード・/agency-contract代理店契約Web同意フォーム)と稼働チェックツール(TikTok Shop売上活動モニタリング・AIコントローラー型・UIなし)を追記。
目次
1. システム概要
2. システム構成
3. 画面一覧・画面遷移
4. データベース設計
5. API仕様
6. 外部インターフェース
7. 非機能要件
8. 関連システム(本体と独立)

1. システム概要

1.1 システムの目的

SMART EC School(現ブランド名:SMART EC LINK)は、EC物販スクール事業および運営代行事業を提供する会員制サイトである。 学習コンテンツ(動画・テキスト・アーカイブ)の提供、契約管理(電子契約・決済確認)、会員間の売上・利益レポート閲覧、 運営者向けの議事録管理・AIタスク抽出、CRM連携による既存契約者統合など、会員の学習から契約・成果管理までを一気通貫で支える。

複数のECプラットフォーム(TEMU / TikTok Shop / メルカリShops)に対応するコンテンツ・アクセス制御を持ち、 新規プラットフォーム追加時にはDB・メタデータの追加のみで対応できるアーキテクチャを採用している。

1.2 対象ユーザー・ロール体系

ロールはSupabase Authの app_metadata.role に保持され、DB/APIの内部値は変更せず表示名のみ日本語化している。

内部値表示名権限概要
ownerオーナー全機能+管理画面フルアクセス(Google認証可、2FA必須)
operator管理者会員管理(閲覧)+レポート管理(2FA必須)
school_plusスクール+学習コンテンツ+売上・利益レポート(自分のみ)
schoolスクール学習コンテンツのみ
agency代理店代理店ページ(紹介コード確認)・設定のみ。学習コンテンツ/レポート等は非対象

1.3 プラットフォーム体系

会員は User.platforms(配列)で複数プラットフォームへの契約を保持できる(例: ['temu','tiktokshop'])。

内部値表示名状態
temuTEMU提供中
tiktokshopTikTok Shop提供中
mercarishopsメルカリShops準備中(全ロール共通でアクセス不可)

1.4 コンテンツ階層構造

courses(コース)
└─>
chapters(章)
└─>
lessons(レッスン:動画/テキスト/アーカイブ)

各階層に sort_order による並び替え、is_published による下書き/公開切替を持つ。chapters.is_opening_guide は契約前でも公開できる「開店準備マニュアル」章を識別するフラグ。

1.5 主要な利用者フロー(業務フロー概要)

公開LP / 申込フォーム
契約書電子署名
決済スクリーンショット提出
運営承認
全コンテンツ解放
学習・レポート確認

契約締結前は「開店準備マニュアル」のみ閲覧可能。契約締結後にプラットフォーム別の全学習コンテンツが解放される(§3.1参照)。

2. システム構成

2.1 全体構成図

利用者(ブラウザ/スマートフォン)
HTTPS
フロントエンドCloudflare Pages(smart-ec-link.pages.dev)
React 19 + TypeScript + Vite 7
HTTPS REST API(JWT Bearer認証)
バックエンドAPIGoogle Cloud Run(smart-ec-academy-api)
Python 3.12 + FastAPI + SQLAlchemy 2.0
SupabasePostgreSQL + Auth(JWT/RLS/TOTP)
Gemini 2.5 Flashgoogle-genai SDK
議事録要約・タスク抽出
Cloudflare R2 + Workers動画配信(署名付きURL)
外部連携Chatwork API
Zoom API/Webhook
Google Sheets/Drive API

図2-1: システム全体構成図

2.2 技術スタック一覧

区分技術要素
フロントエンドReact 19 / TypeScript 5 / shadcn/ui / Tailwind CSS / Vite 7 / Framer Motion
バックエンドPython 3.12+ / FastAPI / SQLAlchemy 2.0 / Alembic
データベースPostgreSQL(Supabase Free)
認証Supabase Auth(JWT + RLS + TOTP 2要素認証)
AIGemini 2.5 Flash(google-genai SDK)
フロントエンド配信Cloudflare Pages(プロジェクト名: smart-ec-link)
バックエンド実行環境Google Cloud Run(asia-northeast1/サービス名: smart-ec-academy-api)
動画配信Cloudflare R2 + Workers(署名付きURL方式)
外部連携Chatwork API / Zoom API・Webhook / Google Sheets・Drive API / YouTube Data API v3 / PayPal・ファーストペイメント・UnivaPay(決済)

3. 画面一覧・画面遷移

3.1 権限マトリクス

凡例: ○=アクセス可 / 🔒=画面は見えるが機能不可(追加契約案内を表示)/ ×=非表示・アクセス不可

機能/画面グループスクールスクール+管理者オーナー代理店
プラットフォーム選択・ホーム・設定・契約管理○(設定・紹介コードのみ)
学習コンテンツ・アーカイブ(契約済PF)×
学習コンテンツ・アーカイブ(未契約PF)🔒🔒×
Q&A・お知らせ・カレンダー・会員ディレクトリ・融資サポート×
レポート(売上・利益)×○(自分のみ)×
管理:会員管理・契約承認・エンゲージメント・契約担当者管理(CRM)・運営オペレーションハブ・シミュレーション・資料ライブラリ・申込管理・代理店会員管理×××
管理:コンテンツ管理・お知らせ管理・営業戦略ガイド・融資申込管理・議事録管理××××

3.2 公開ページ一覧(認証不要)

ID画面名ルート概要
G-001公開LP/lp, /top集客用ランディングページ(LandingGuard)。プラットフォーム・訴求パターン別に複数バリエーションあり
G-002申込フォーム(TEMU)/apply/temu9ステップウィザード形式の申込フロー
G-003申込フォーム(TikTok Shop)/apply/tiktok同上
G-004代理店申込/apply/agency代理店契約の申込フォーム
G-005法務確認プレビュー/legal-review/temu, /legal-review/tiktok契約書・特商法表記の弁護士確認用プレビュー画面
G-006公開学習コンテンツ/learn/public開店準備マニュアル等、契約前でも閲覧可能な章の公開ページ
G-007契約電子署名/contracts/sign/:token顧客側の電子署名(双方署名フローのカウンターサイン)
G-008オーナー契約承認/contracts/owner-approve/:token双方署名フローにおけるオーナー側の最終承認
G-009招待登録/invite/:tokenCRM統合済み契約担当者向けの招待経由アカウント作成(v7.5)
G-010ログイン/セルフ登録/パスワード再設定/login, /register, /reset-password, /update-passwordSupabase Authベースの認証画面群

3.3 会員ページ一覧(要ログイン)

ID画面名ルート権限概要
U-001プラットフォーム選択/select-platform全ロール契約済PFカード一覧のハブ画面。未契約PFは🔒表示、準備中PFは「準備中」バッジ
U-002ホーム/home全ロールdisplayName表示+選択中PFに応じた学習進捗・統計ダッシュボード
U-003設定/settings全ロールdisplayName(ニックネーム)編集、2FA設定、公開プロフィール設定
U-004代理店/referral全ロール(主に代理店)紹介コード確認・紹介実績
U-005サービス紹介/service全ロール契約前の会員に向けたサービス説明ページ
U-006契約管理/contracts全ロール契約一覧・電子契約UI・決済スクリーンショットアップロード
U-007学習コンテンツ/learn/:courseId?/:lessonId?owner/operator/school_plus/school選択中PFのコースのみ表示。動画・テキスト・スライドビューアー対応
U-008アーカイブ/archivesowner/operator/school_plus/school選択中PFのライブ配信アーカイブ動画一覧
U-009Q&A/qaowner/operator/school_plus/school質問投稿・回答閲覧。AIドラフト回答(伊藤遥)の承認後公開
U-010レポート/reportsowner/operator/school_plus/school月次売上・利益レポート閲覧(school_plus以上は自社分、複数企業切替対応)
U-011お知らせ/noticesowner/operator/school_plus/schoolカテゴリ別お知らせ一覧・既読管理
U-012カレンダー/calendarowner/operator/school_plus/schoolセミナー・勉強会等のイベント一覧
U-013会員ディレクトリ/directoryowner/operator/school_plus/school会員間の公開プロフィール・ビジネス紹介ネットワーク
U-014融資サポート/loan-supportowner/operator/school_plus/school公庫融資申込の事前ヒアリング・申請補助
U-015TEMU追加申込/temu-apply全ロール(要ログイン)既存会員がTEMUアカウントの追加参加を申し込む導線。契約は自動作成せず、申込内容を application_logs に永続化のうえSEL運営本部Chatworkへ通知し個別案内につなげる(新規申込フォームは既存登録メールを409で弾くため、その受け皿として案内)

3.4 管理者ページ一覧

ID画面名ルート権限概要
A-001契約承認待ち一覧/admin/contracts/pendingowner/operator申込直後・署名待ち・決済確認待ちの契約を横断表示
A-002契約マスタ管理/admin/contractsowner/operator全契約の一覧・送付・締結状況管理
A-003会員管理/admin/membersowner/operator(招待・編集はowner限定)会員一覧・招待・platforms/ロール編集・BAN/UNBAN
A-004エンゲージメント分析/admin/engagementowner/operator会員の学習進捗・活動状況モニタリング
A-005コンテンツ管理/admin/contentowner限定コース・章・レッスン・アーカイブのCRUD、YouTube動画承認タブ
A-006レポート管理/admin/reportsowner/operator全会員レポートの閲覧・CRM同期実行・同期ログ確認
A-007契約担当者管理(CRM統合)/admin/contracted-personsowner/operatorCRM同期済み契約担当者・企業の一覧、招待発行、売上分析(v7.5)
A-008お知らせ管理/admin/noticesowner限定お知らせの作成・公開・AI生成支援
A-009営業戦略ガイド/admin/strategyowner限定営業戦略・トークスクリプトの社内向けガイド
A-010融資申込管理/admin/loan-applicationowner限定会員からの融資サポート申込の審査・ステータス管理
A-011議事録管理/admin/minutesowner限定議事録一覧・検索・タスク一覧・Chatwork転送
A-012議事録ドラフト編集/admin/minutes/drafts/:idowner限定Zoom→Gemini解析済みドラフトの確認・修正・承認確定
A-013運営オペレーションハブ/admin/opsowner/operatorQ&A候補管理・FAQ承認・トピック編集等の運営タスク集約画面
A-014売上シミュレーション/admin/simulationowner/operator営業提案用の売上・利益シミュレーションツール
A-015説明資料・LPライブラリ/admin/materialsowner/operator営業資料・LPパターンの一覧・ダウンロード導線
A-016申込管理/admin/applyowner/operator申込フォーム経由の新規申込データの管理
A-017代理店会員管理/admin/agencyowner/operator代理店ロール会員の管理・報酬集計連携

画面ID・権限は frontend/src/routes/index.tsx のルーティング定義(AuthGuard の allowedRoles)を実装の正とし記載。

3.5 画面遷移(代表フロー)

ログイン後の初回導線

G-010 ログイン
U-001 プラットフォーム選択
U-002 ホーム
U-007 学習コンテンツ/U-008 アーカイブ

新規契約フロー

G-002/003 申込フォーム
G-007 電子署名
G-008 オーナー承認
U-006 契約管理(決済スクショ提出)
A-001 承認待ち一覧(運営確認)
コンテンツ全解放

議事録自動化フロー(運営者向け)

Zoom会議終了
Webhook受信
Gemini解析
A-012 ドラフト編集
承認確定
A-011 議事録一覧/Chatwork通知

4. データベース設計

バックエンド backend/src/models/(SQLAlchemy 2.0モデル)および要件定義書§11・§13の生成SQLを正として記載。 主要テーブルの要点のみを示し、全カラムは網羅しない。全テーブルは PostgreSQL(Supabase)上に存在し、ユーザーの認証・認可情報自体は Supabase Auth の auth.usersapp_metadata に role / platforms / plan / two_factor を保持)で管理する。

4.1 学習コンテンツ系

テーブル主要カラム説明
coursesid, name, description, platform, sort_order, is_publishedコース(例: TEMU基礎 / TikTok Shop基礎)
chaptersid, course_id(FK), name, sort_order, is_published, is_opening_guide章。is_opening_guide=trueは契約前公開対象
lessonsid, chapter_id(FK), title, type, video_key, content, duration_seconds, sort_order, is_published, resources(JSONB)レッスン(動画/テキスト/アーカイブ)。video_keyはR2オブジェクトキー
content_sourcesid, course_id(FK), name, source_type, content, split_rule, last_synced_atスライド原本からレッスンを自動生成するマスタソース
archivesid, title, description, platform, video_key, thumbnail_key, duration_seconds, streamed_at, is_publishedライブ勉強会アーカイブ動画
user_progressid, user_id, lesson_id(FK), completed, completed_at, last_position(unique: user_id+lesson_id)レッスン視聴進捗
lesson_viewsid, user_id, lesson_id, course_id, chapter_id, started_at, duration_seconds, completed視聴ログ(エンゲージメント分析用)

4.2 Q&A・お知らせ系

テーブル主要カラム説明
questionsid, user_id, title, body, category, image_urls, is_resolved会員からの質問
answersid, question_id(FK), user_id, body, ai_draft, is_approved回答。ai_draftはAI下書き、運営承認後bodyに反映
noticesid, title, body, category, target_roles(配列), is_published, published_atお知らせ
notice_readsid, notice_id(FK), user_id, read_at(unique: notice_id+user_id)既読管理

4.3 レポート・契約・決済系

テーブル主要カラム説明
reportsid, user_id, year_month, platform, gross_sales, confirmed_sales, product_cost, logistics_cost, platform_fee, refund_cost, other_cost, target_profit, smart_share, rerise_share, customer_share, shop_count, contracted_company_id(FK)月次売上・利益レポート。CRM同期データはcontracted_company_id必須。gross_sales(販売額・発生ベース)を売上の正データとし、confirmed_sales(入金額)は未同期の旧データのみのフォールバックとして扱う(融資関連書類生成に適用、§5.6参照)
contractsid, user_id, contract_type, platform, status, template_version, confirmation_items(JSONB), signed_at/ip/user_agent/hash, pdf_url, sign_token, owner_sign_token, owner_signed_at契約レコード。status: pending→sent→signed_by_user→active。TEMU運営支援契約(第6条の2)は保証金条項(1アカウント200,000円/2アカウント以上300,000円・無利息・契約終了時全額返金)を含み、confirmation_itemsに保証金理解チェック項目を保持。保証金の入金案内自体はChatworkでの個別運用(システム未組込)
couponsid, code, coupon_type, issued_to_user_id/email/company, used_by_user_id, is_used, max_accounts, source_platform, source_account_countTikTok Shop無料運用権等のクーポン
payment_confirmationsid, user_id, platform, payment_type, image_url, status, admin_note, reviewed_by, reviewed_at決済スクリーンショット承認レコード。status: pending→approved/rejected
loan_applicationsid, user_id(unique), pre_screening_data(JSONB), hearing_data(JSONB), status, admin_note融資サポート申込

4.4 議事録管理系

テーブル主要カラム説明
meeting_minutesid, title, meeting_date, participants(配列), summary, full_text, source_url, status確定済み議事録
meeting_minute_tasksid, minute_id(FK), assignee, description, due_date, is_completed, completed_at, mentioned_in_next議事録から抽出されたタスク(担当者は平部/松田のみ)
meeting_minute_draftsid, zoom_uuid(unique), zoom_start_time, zoom_duration_min, zoom_topic, classification, analysis(JSONB), vtt_excerpt, transcript_url, instruction_history(JSONB), statusZoom→Gemini解析済みの承認待ちドラフト

4.5 CRM統合・招待系(v7.5)

テーブル主要カラム説明
contracted_personsid, crm_person_id(unique), name, email, phone, chatwork_room_id, status(synced/invited/claimed), user_id, synced_at, invited_at, claimed_atCRM側の契約担当者マスタ
contracted_companiesid, crm_company_id(unique), contracted_person_id(FK), company_name, platforms(配列), plan, contract_plan, chatwork_room_id_temu/tiktok, is_primary, analysis_status契約企業。担当者と1:N
invitationsid, contracted_person_id(FK, unique), token_hash(unique), chatwork_room_id, is_active, expires_at(発行から30日), posted_to_chatwork_at, claimed_at人単位で1本発行される招待リンク。トークンはSHA-256ハッシュのみ保存
registration_logsid, invitation_id, contracted_person_id, user_id, ip_address, user_agent, status, error_message招待経由登録の監査ログ

4.6 デポジット管理系(v7.7)

テーブル主要カラム説明
platform_depositsid, user_id(nullable), platform, store_count, current_balance, initial_deposit, is_active, chatwork_room_idプラットフォーム別デポジット残高
weekly_consumptionid, deposit_id(FK), week_start, week_end, consumed_amount(unique: deposit_id+week_start)週次消費額
deposit_transactionsid, deposit_id(FK), type(deposit/consumption/refund), amount, source, screenshot_url, approved_by, approved_at入出金トランザクション
reminder_candidatesid, deposit_id(FK), generated_at, target_balance, current_balance, recommended_amount, status(pending/approved/sent/skipped/expired), approval_token, token_expires_at, approved_at, approval_ip入金催促候補。HMAC署名付きURLで平部がブラウザ承認

4.7 運用ログ

テーブル主要カラム説明
notification_logsid, channel, trigger_type, room_id, message, success, error_detail, retry_countChatwork等の通知送信ログ

4.8 テーブル関連図(概略)

courses
1:N→
chapters
1:N→
lessons
1:N→
user_progress / lesson_views
contracted_persons
1:N→
contracted_companies
1:N→
reports
contracted_persons
1:1→
invitations
1:N→
registration_logs
meeting_minutes
1:N→
meeting_minute_tasks
platform_deposits
1:N→
weekly_consumption / deposit_transactions / reminder_candidates

5. API仕様

バックエンド backend/src/routers/(39ファイル・約193エンドポイント)を実装の正として、主要エンドポイントを機能グループ別に抜粋して記載する。 全エンドポイントは Authorization: Bearer <Supabase JWTアクセストークン> による認証を前提とし(公開API・cron専用APIを除く)、権限は require_role() 依存関係で制御する。

5.1 学習コンテンツ・進捗

メソッドパス概要権限
GET/api/courses選択中PFのコース一覧取得(公開コースのみ)全ロール
GET/api/courses/{course_id}コース詳細(章・レッスン含む)全ロール
GET/api/courses/public/opening-guide契約前公開の開店準備マニュアル取得認証不要
GET/api/archivesアーカイブ動画一覧全ロール
POST/api/archives/{archive_id}/view視聴ログ記録全ロール
GET / PUT/api/progress, /api/progress/{lesson_id}視聴進捗取得・更新全ロール
POST/api/progress/view視聴ログ登録全ロール
GET / POST / PATCH / DELETE/api/admin/content/courses|chapters|lessons|archivesコンテンツCRUDowner
GET / POST / PATCH / DELETE/api/admin/library/sourcesスライド原本管理・自動同期owner
GET/api/youtube/videosYouTubeチャンネル動画一覧(登録済フラグ付き)owner
POST/api/youtube/approve動画承認(レッスン/アーカイブへ登録+Chatwork通知)owner

5.2 Q&A・お知らせ

メソッドパス概要権限
GET / POST/api/questions質問一覧取得・投稿全ロール
POST/api/questions/{id}/answers回答投稿owner/operator
GET / POST/api/questions/{id}/draft, /draft/refine, /draft/approveAI回答ドラフト生成・修正・承認公開owner
GET/api/faq/published公開済みFAQ一覧全ロール
GET / POST / PATCH / DELETE/api/admin/faq-candidatesFAQ候補管理・AIリライト・承認owner/operator
GET/api/noticesお知らせ一覧(ロール別フィルタ)全ロール
POST/api/notices/{id}/read既読登録全ロール
GET / POST / PATCH / DELETE/api/admin/noticesお知らせCRUDowner
POST/api/admin/ai-notices/generate, /publishAIお知らせ文生成・公開owner

5.3 レポート・CRM連携

メソッドパス概要権限
GET/api/reports自分の月次レポート取得school_plus以上
GET/api/admin/reports, /all全会員レポート取得owner/operator
POST/api/admin/reports/sync, /sync-crmスプレッドシート・CRMからのレポート同期実行owner/operator
GET/api/admin/reports/sync-status, /sync-logs同期状況・ログ確認owner/operator
GET/api/admin/contracted-persons契約担当者一覧(CRM同期済)owner/operator
GET/api/admin/contracted-persons/companies/{id}/sales-analysis, /monthly-review企業別売上分析・月次レビューowner/operator
POST/api/admin/contracted-persons/{id}/invite個別招待発行owner/operator
POST/api/admin/contracted-persons/bulk-invite一括招待発行(dry-run対応)owner/operator
POST/api/admin/contracted-persons/sync-crmCRMからのマスタ同期実行owner/operator
GET/api/invitations/verify-token招待トークン検証(公開API)認証不要

5.4 契約管理・決済確認

メソッドパス概要権限
GET/api/contracts/me自分の契約一覧全ロール
GET/api/contracts/document/{contract_type}契約書全文取得(HTML)全ロール
POST/api/contracts/sign電子同意(IP・UserAgent・チェック項目記録+PDF生成)全ロール
POST/api/contracts/apply公開申込フォームからの新規申込受付認証不要(レート制限あり)
POST/api/contracts/register会員登録一括処理(アカウント作成+契約書送付+Chatwork通知+スプシ追記)owner/operator
POST/api/contracts/webhook/forms-notifyGoogle Forms送信を運営本部Chatworkへ即時通知(放置防止)secret認証
GET/api/contracts/verify/{token}署名リンクのトークン検証認証不要
POST/api/contracts/countersign/{token}顧客側カウンターサイン実行トークン認証
POST/api/contracts/owner-approve/{token}オーナー側最終承認トークン認証
GET / POST/api/admin/contracts, /admin/send契約一覧取得・送付owner/operator
POST/api/contracts/add-support運営支援契約の追加全ロール
POST/api/contracts/temu-addition既存会員のTEMU追加参加申込(契約は自動作成せず運営本部Chatworkへ通知)全ロール(要ログイン)
POST/api/payment-confirmations/upload決済スクリーンショットアップロード全ロール
POST/api/payment-confirmations/finalize決済確認の最終登録全ロール
GET / POST/api/admin/payment-confirmations決済確認一覧・承認/却下owner/operator

5.5 デポジット管理

メソッドパス概要権限
GET/api/deposits/balances, /alerts自分のデポジット残高・アラート確認全ロール
GET / POST / PATCH/api/admin/deposits/balances残高一覧・登録・調整owner/operator
POST/api/admin/deposits/transactions入出金トランザクション登録owner/operator
GET / POST/api/admin/deposits/reminders, /reminders/generate催促候補一覧・生成owner/operator
POST/api/admin/deposits/reminders/{id}/approve, /skip催促候補の承認・スキップowner/operator
GET / POST/r/{candidate_id}, /r/{candidate_id}/executeHMAC署名付きURLによるブラウザ一発承認(Chatwork運用フロー)署名トークン認証
POST/api/cron/deposit-generate-candidates催促候補の定期自動生成Cron Secret認証

5.6 議事録管理・その他管理機能

メソッドパス概要権限
GET/api/admin/minutes, /{id}議事録一覧・詳細(検索・日付フィルタ対応)owner
POST/api/admin/minutes/import, /import-textgenspark共有URL/テキストからの手動取込owner
POST/api/admin/minutes/{id}/confirm下書き→確定(確定後Chatwork本通知)owner
PATCH/api/admin/minutes/tasks/{id}タスク完了/未完了切替owner
GET/api/admin/minutes/tasks/pending未完了タスク横断一覧owner
POST/api/admin/minute-drafts/syncZoom録画からのドラフト同期owner
GET / PATCH/api/admin/minute-drafts, /{id}ドラフト一覧・詳細・編集owner
POST/api/admin/minute-drafts/{id}/approve, /reject, /restoreドラフトの承認・却下・復元owner
GET / POST / PATCH / DELETE/api/admin/members会員一覧・招待・編集・BANowner/operator(招待・編集はowner)
GET/api/admin/engagement, /{target_user_id}会員エンゲージメント一覧・詳細owner/operator
GET / PATCH/api/admin/loan-applications融資申込一覧・ステータス更新owner
GET / POST/api/loan/pre-screening, /me, /apply融資サポート事前診断・申込。売上判定はgross_sales(販売額)優先・未同期時のみconfirmed_salesで代用全ロール
POST/api/admin/loan-documents/keikakusho融資申請3点セット・資料③創業計画書(公庫正式様式xlsx)の自動記入生成owner
POST/api/cron/review-status-reconcile顧客管理シートの店舗審査ステータス列を整合チェック。3社間締結済み→未記入なら「審査中」を自動記入、店舗運営開始日の記入があれば「審査完了」に更新。審査中のまま14日超の滞留はSEL運営本部へChatworkアラート(週1想定・手動実行可)Cron Secret認証
GET/api/calendar/eventsイベント一覧取得全ロール
GET/api/customer-profile/directory会員ディレクトリ一覧全ロール

5.7 認証・基盤・cron

メソッドパス概要権限
GET / PATCH/api/users/me自分のプロフィール取得・更新全ロール
GET / PUT/api/users/me/notifications通知設定取得・更新全ロール
GET/api/platforms利用可能PF一覧取得全ロール
GET/api/videos/signed-url/{object_key}R2動画の署名付き再生URL発行全ロール
POST/api/videos/upload-urlR2動画アップロード用署名付きURL発行owner
GET/health, /health/db, /health/db-sizeヘルスチェック・DB状態確認認証不要
POST/api/cron/chatwork-join-check, /monthly-reviews, /first-sales-check定期バッチ処理(Cloud Scheduler経由)Cron Secret認証

6. 外部インターフェース

6.1 Chatwork連携

6.2 Zoom連携

6.3 Gemini 2.5 Flash(AI)

項目内容
SDKgoogle-genai(旧google-generativeaiは廃止済み)
用途議事録の要約生成・タスク抽出・前回タスク照合、Q&A回答ドラフト生成、お知らせ文生成
temperature0.3(安定した出力のため低め)
response_mime_typeapplication/json
無料枠250 RPD/機密情報を含む場合は有料プラン($0.30/1Mトークン)へ移行検討

6.4 Google Sheets / Drive連携

6.5 決済連携

決済手段用途
PayPal(サブスクリプション・単発決済)月額利用料・デポジット入金の主要手段
ファーストペイメント(運営: 株式会社ファーストディグリー)クレジットカード一括・分割決済。高額役務プラン向け
UnivaPay一部プランの決済代行
銀行振込デポジット入金の併用オプション

会員は決済後にスクリーンショットをアップロードし(/api/payment-confirmations/upload)、運営が管理画面(A-001/A-002)で承認することでコンテンツが解放される。

6.6 動画配信(Cloudflare R2 + Workers)

学習動画・アーカイブ動画はCloudflare R2にオブジェクトとして保存し、Workers経由で署名付きURLを発行して配信する。再生ごとに /api/videos/signed-url/{object_key} でURLを取得し、直リンクによる無断共有を防止する。

6.7 YouTube連携

YouTube Data API v3(OAuth)でチャンネル動画一覧・メタデータを取得し、管理画面(A-005)で承認した動画のみをレッスン・アーカイブとして登録する。無料枠は10,000クォータ/日。

7. 非機能要件

7.1 認証・認可

7.2 性能要件

7.3 セキュリティ要件

7.4 UI/UX基準

7.5 運用・デプロイ

対象内容
フロントエンドCloudflare Pages(プロジェクト名: smart-ec-link)。Git連携なし。deploy-frontend.sh によるビルド+wrangler pages deploy
バックエンドGoogle Cloud Run(asia-northeast1/サービス名: smart-ec-academy-api)。gcloud run deploy --source . でデプロイ
DBマイグレーションAlembicで管理。起動時スキーマ自動補完(ALTER TABLE IF NOT EXISTS)も併用
環境変数管理backend/.env.local を正とし、Cloud Run環境変数と同期。上書き事故防止のため --update-env-vars のみ使用
バックアップDB日次バックアップ(Cloud Scheduler経由の /api/cron/backup
CIGitHub Actions(PR時): TypeScript型検査/ESLint/ビルド/flake8/black

8. 関連システム(本体と独立)

本章の2システムは、いずれも会員サイト本体(frontend / backend / DB)とはコード・実行環境・データベースを共有しない独立したシステムである。 参照の便宜のため本書に概要を記載するが、詳細設計は各システムの実装・要件を正とする。

8.1 AI説明会システム(temu-ai-meeting)

TEMU運営支援サービスへの見込み客(個人・代理店経由の紹介先)向けに、オンラインでの音声説明会を提供するシステム。 会員サイト本体のSupabase Auth/PostgreSQLとは独立した単一のPythonサーバー(backend/scripts/temu_voice_agent_demo.py)として実装され、 Google Cloud Run上に別サービス(サービス名: temu-ai-meeting/asia-northeast1)としてデプロイされている。

項目内容
アクセス制御招待キー制。全エンドポイントでキー必須(課金入口封鎖)。代理店ごとにキーを発行し、日次上限・紹介元名を常時表示。キー管理は manage_agency_keys.py(CLI)で行う
説明会本編(/meetingスライド+TTS音声ナレーションによる自動説明+OpenAI Realtime API(音声)によるリアルタイム質疑応答。難しい質問はツール経由でClaude(Anthropic API)が裏側で回答を生成し音声に反映
観戦ダッシュボード(/admin平部専用(マスターキー限定)。視聴中セッションのライブ観戦(3秒更新・現在スライド位置)、代理店別サマリー、会話タイムラインを表示
代理店契約Web同意フォーム(/agency-contract契約書全文14条+必須5項目の同意チェックを行うWebフォーム。IP・UserAgent付きで同意記録を保存し、Chatworkへ通知。同意後は控え画面を表示。同意済み一覧は /admin から確認可能
面談連携面談希望が出た場合は記録の上、SEL運営本部Chatworkへ通知(TimeRex予約リンクを提示)
ログ・不正対策全発話・操作ログをJSONL形式で保存(Cloud RunはGCSマウントで永続化)。同一IPの複数キー使用・同日多セッション等の不審パターンを検知し管理画面に表示。端末別15分/日・IP別/token発行6回/日・キー別質疑5回/日の上限を設定
顧客向け表記「AI」を前面に出さず「オンライン説明会」と案内(アシスタント自身のAI名乗りは維持)

8.2 稼働チェックツール(TikTok Shop 売上活動モニタリング)

TikTok Shop会員各社の買付・売上管理シートをAIコントローラー(Claude Code)が手動トリガーで自動巡回し、 買付(商品仕入れ)の発生有無から稼働・停滞・未稼働を判定し、要対応社を抽出した一覧レポートを平部に提示する内部運用ツール。 UIを持たず、cron等の定期実行も採用しない(サイレント失敗を避けるため手動トリガー方式)。 詳細は docs/requirements-activity-checker.md を正とする。

項目内容
対象範囲TikTok Shop全社(TEMUは対象外)。顧客管理シートに登録された全社が対象
判定基準最終買付日からの経過日数で判定: 7日未満=稼働🟢/7〜14日未満=要注意⚠️/14日以上=要対応🔴/買付記録ゼロ=未稼働⬜(別枠)
整合チェック「運営状況=未払い」表示と買付シートのデポジット入金実態を突き合わせ、入金済みなのに未払い表示のままの社を検出。顧客管理シートのリンク欄欠落(Chatwork概要欄との齟齬)も検出
AI利用範囲稼働判定そのものにはLLMを使用しない(誤読・捏造が実証されたため禁止)。注文日の表記ゆれ正規化の補助にのみ利用し、決定的ロジックで検算する
セキュリティ本番シートは読み取り専用。認証情報列は読み取らない。レポートは平部のセッション内表示のみで外部送信・自動投稿は行わない