type: feature-spec
status: draft
created: 2026-03-03
tags:
- spec
- phase2


機能仕様書

  • ユーザーストーリー
    • ストーリー1
      • 業務担当者として、アカウント登録後30分以内にコア機能を使い始めたい。なぜなら導入コストを最小化してすぐに価値を感じたいから。
    • ストーリー2
      • 管理者として、チームメンバーを招待して権限管理したい。なぜならチーム全体で同一データを共有・編集する必要があるから。
    • ストーリー3
      • 契約者として、サブスクリプションのプラン変更・解約をセルフサービスで行いたい。なぜならサポートに連絡する手間なく自分で管理したいから。
  • 機能一覧
    • 必須(MVP)
      • 機能1: メール/パスワード認証 + Googleログイン
        • 対応ストーリー: ストーリー1
      • 機能2: ユーザーダッシュボード(KPI表示・最近の活動一覧)
        • 対応ストーリー: ストーリー1
      • 機能3: コアデータ管理(CRUD・一覧・検索・フィルタ)
        • 対応ストーリー: ストーリー1, 2
      • 機能4: Stripe連携サブスクリプション管理(プラン選択・決済・解約)
        • 対応ストーリー: ストーリー3
    • 重要
      • 機能5: チームメンバー招待・ロール管理(管理者/メンバー)
        • 対応ストーリー: ストーリー2
      • 機能6: CSVエクスポート・データ出力
        • 対応ストーリー: ストーリー1
      • 機能7: メール通知(アクティビティアラート・課金通知)
        • 対応ストーリー: ストーリー2, 3
    • あれば良い
      • 機能8: Webhook連携(Zapier/Make対応)
        • 対応ストーリー: ストーリー1
      • 機能9: 利用状況アナリティクス(管理者向けレポート画面)
        • 対応ストーリー: ストーリー2
  • 機能詳細
    • 機能1: メール/パスワード認証 + Googleログイン
      • 画面
        • /login: メール入力・パスワード・Googleボタン・パスワードリセットリンク
        • /signup: 名前・メール・パスワード・利用規約チェック
        • /reset-password: メール送信フォーム
      • 操作
        • 登録→確認メールのリンクをクリック→ダッシュボードへリダイレクト
        • Google OAuth→1クリックでログイン完了・初回はプロフィール自動生成
      • データ
        • users: id, email, name, avatar_url, created_at, plan_id, org_id
    • 機能3: コアデータ管理(CRUD操作)
      • 画面
        • /dashboard/items: テーブル形式一覧・検索バー・フィルタドロップダウン・20件ページネーション
        • /dashboard/items/new: タイトル・ステータス・メタデータ入力フォーム
        • /dashboard/items/[id]: 詳細表示・インライン編集・削除確認モーダル
      • 操作
        • 「新規作成」ボタン→フォーム入力→保存→一覧に楽観的更新で即時反映
        • テーブル行クリック→詳細へ遷移→フィールド編集→保存でDB更新
      • データ
        • items: id, org_id, created_by, title, status(enum), metadata(jsonb), created_at, updated_at
    • 機能4: Stripe連携サブスクリプション管理
      • 画面
        • /pricing: Starter $29/mo・Pro $62/mo・Business $99/moの機能比較表
        • /dashboard/billing: 現在プラン・次回請求日・カード情報・プラン変更ボタン・解約ボタン
      • 操作
        • プラン選択→Stripe Checkoutへリダイレクト→決済完了→Webhook受信→プラン有効化→/dashboardへ
        • 解約ボタン→確認モーダル(「期間終了まで使用可能」表示)→Stripe解約→Webhookでstatus更新
      • データ
        • subscriptions: id, org_id, stripe_customer_id, stripe_subscription_id, plan, status, current_period_end