店長エージェント SaaS — 要件定義書
Version 1.0 | 2026-04-15 | AI経営共創パートナーズ
1. プロジェクト概要
パチンコホール店長の事務作業を最大77%カットするAI業務支援SaaS。キクヤ向けに開発済みの「SETTING OPTIMIZER」をベースに、マルチテナントSaaSとして展開する。
1.1 料金プラン
| プラン | 月額(税別) | 主な機能 |
| Basic | 100,000円 | F-01 計数管理 / F-02 シフト / F-03 報告書 |
| Pro | 150,000円 | Basic + ヒートマップ + 複数店舗比較 |
| Premium | 500,000円 | Pro + 商圏分析 + 不正検知 |
1.2 現在のステータス
向井氏フィードバック(2026-04-15)による方向転換
- KPI名称: 「稼働率」→「稼働」。稼働率ではなく絶対数(パチンコ1日フル稼働=6万)
- 金額単位: 最小1,000円単位。財務諸表は百万円単位
- KPI優先順序: 売上 → 粗利 → 稼働
- 追加分析軸: 季節指数分析(月ごとの変動係数)/ 前年同曜日比較 / 機種別着席率
2. 技術スタック
| レイヤー | 技術 | バージョン |
| Frontend | React | 19.x |
| Frontend | TypeScript | 5.9.x |
| Frontend | Vite | 8.x |
| Frontend | TailwindCSS | 4.x |
| Frontend | Zustand | 5.x |
| Backend | Python | 3.14 |
| Backend | FastAPI | 0.135.x |
| Backend | SQLAlchemy | 2.0.x |
| Backend | Alembic | 1.18.x |
| AI | Claude Sonnet 4 | claude-sonnet-4-* |
| DB | PostgreSQL | 16.x |
3. システムアーキテクチャ
┌─────────────┐ ┌──────────────────────┐ ┌──────────────┐
│ Frontend │────▶│ Backend API │────▶│ Database │
│ React/TS │◀────│ FastAPI (Python) │◀────│ PostgreSQL │
│ TailwindCSS│ │ │ │ │
└─────────────┘ │ ┌────────────────┐ │ └──────────────┘
│ │ Claude API │ │
│ │ (AI Analyzer) │ │
│ └────────────────┘ │
└──────────────────────┘
フロントエンドはSPAとしてビルドし、静的ホスティング。バックエンドAPIはFastAPIで構築し、Claude APIを内部で呼び出す。DBはPostgreSQLを使用し、論理テナント分離を行う。
4. 既存資産(再利用対象)
キクヤ SETTING OPTIMIZERのコードベースを再利用する。
格納場所: 30_案件別/キクヤ/20_成果物/pachislot-settings/
4.1 Backend再利用モジュール
| モジュール | 機能 | 移植方針 |
core/scoring.py | 台ごとの5指標スコアリング | そのまま移植 |
core/profit_adjuster.py | 粗利目標ベースの設定最適化 | そのまま移植 |
core/application/smart_optimizer.py | 複数候補生成 | そのまま移植 |
core/ai_analyzer.py | Claude APIによるAI分析 | そのまま移植 |
core/csv_loader.py | ホルコンCSVの読み込み | そのまま移植 |
core/config_loader.py | 設定読み込み | テナント別設定に拡張 |
core/models.py | データモデル | テナント対応に拡張 |
core/auth.py | 認証 | マルチテナント対応に拡張 |
4.2 Frontend再利用モジュール
| モジュール | 移植先 | 方針 |
components/optimizer/* | F-01 | 移植 |
components/layout/* | 共通レイアウト | SaaS用に拡張 |
pages/OptimizerPage.tsx | F-01ページ | 移植 |
store/optimizationStore.ts | F-01ストア | そのまま移植 |
5. マルチテナント要件
5.1 分離戦略
- 論理分離(共有DB +
tenant_id)
- MVPは 10店舗以下を想定
- JWT認証、トークンに
tenant_idを含む
5.2 ロール定義
| ロール | 説明 | 権限 |
admin | システム管理者 | 全テナント管理、ユーザー管理 |
manager | 店長 | 自テナント内の全操作 |
user | スタッフ | 閲覧 + 限定操作 |
5.3 テナント管理スキーマ
CREATE TABLE tenants (
id UUID PRIMARY KEY,
name VARCHAR(200) NOT NULL,
slug VARCHAR(50) UNIQUE NOT NULL,
plan VARCHAR(20) DEFAULT 'basic',
config JSONB DEFAULT '{}',
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE users (
id UUID PRIMARY KEY,
tenant_id UUID NOT NULL REFERENCES tenants(id),
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
name VARCHAR(100) NOT NULL,
role VARCHAR(20) DEFAULT 'user',
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW()
);
6. 機能要件
6.1 F-01: 計数管理(SETTING OPTIMIZER移植) 未着手
概要: ホルコンCSVと粗利目標を入力し、AIが翌日の台別推奨設定を提案する。
処理フロー
- ホルコンCSVアップロード(データ整形)
- 5指標スコアリング
- 粗利目標ベース最適化
- 複数候補生成(Smart Optimizer)
- Claude APIによるAI分析
出力物
- 台別推奨設定一覧
- KPIサマリー
- 機種別サマリー
- AI分析レポート
- CSV出力
API エンドポイント
| Method | Endpoint | 説明 |
| POST | /api/optimization/run | 最適化実行 |
| POST | /api/optimization/analyze | AI分析実行 |
| POST | /api/data-import/upload | CSVアップロード |
| GET | /api/decisions | 設定決定履歴取得 |
| POST | /api/decisions | 設定決定記録 |
向井氏FB反映事項(F-01)
- KPI「稼働率」→「稼働」に名称変更。絶対数表示(パチンコ1日フル稼働=6万)
- 金額は最小1,000円単位。財務諸表は百万円単位
- KPI優先順序: 売上 → 粗利 → 稼働
- 追加分析軸(ホルコンにない付加価値):
- 季節指数分析(月ごとの変動係数)
- 前年同曜日比較
- 機種別着席率
6.2 F-02: 労務管理(シフト作成) 未着手
概要: スタッフの希望・スキル・法定労働時間を考慮してAIが最適シフトを提案する。
制約条件
- 週40時間 / 日8時間の法定上限
- 連続6日以内の勤務
- 時間帯ごとのスキル充足
- 人件費最適化
API エンドポイント
| Method | Endpoint | 説明 |
| GET / POST | /api/shifts | シフト取得 / 生成 |
| GET / POST | /api/staff | スタッフ一覧 / 登録 |
| POST | /api/staff/{id}/availability | 出勤可能日登録 |
関連テーブル
staff, staff_availability, shifts, business_calendar
6.3 F-03: 報告書作成 未着手
概要: 計数データ(F-01)+ シフト実績(F-02)+ 特記事項から日次/週次報告書を自動生成する。
- テンプレート機能(テナント別カスタマイズ可)
- Claude APIで自然言語サマリー生成
- PDF出力対応
API エンドポイント
| Method | Endpoint | 説明 |
| GET / POST | /api/reports | 報告書取得 / 生成 |
| GET / POST | /api/report-templates | テンプレート管理 |
6.4 F-04: 効果測定 未着手
概要: イベント・ライター来店企画のROI自動算出。
- 比較基準: 直近4週間の同曜日平均
- ROI計算基準: 粗利 or 売上(要確認)
API エンドポイント
| Method | Endpoint | 説明 |
| GET / POST | /api/campaigns | キャンペーン一覧 / 登録 |
| GET | /api/campaigns/{id}/roi | ROI算出 |
7. Pro/Premium機能(Phase 2以降)
| 機能 | プラン | 概要 | 優先度 |
| 島図面ヒートマップ | Pro | 実店舗レイアウト(アール島対応)、ピーク時間分析(15時・20時)、台配置最適化提案 | 最重要 |
| 設定最適化AI | Pro | ボックス単位の設定提案、着席率連動、店長の意図入力、異常検知 | 高 |
| 商圏分析 | Premium | 競合店分析、ランチェスター戦略、p-worldデータ連携 | 中 |
| 不正検知 | Premium | 勝率異常検知、設定漏洩パターン検知 | 中 |
8. データモデル
tenants ──┬── users
├── daily_data (日次実績CSV)
├── optimization_runs (最適化実行履歴)
├── decisions (設定決定履歴)
├── staff ──── staff_availability
├── shifts
├── business_calendar
├── reports / report_templates
└── campaigns / campaign_results
全テーブルは tenant_id を持ち、RLS(Row Level Security)またはアプリケーション層でテナント分離を行う。
9. 非機能要件
| 項目 | 要件 |
| 最適化実行 | 500台 10秒以内 |
| AI分析 | 30秒以内 |
| シフト生成 | 30名 1ヶ月 30秒以内 |
| 稼働率 | 99.5% |
| バックアップ | 日次自動 |
| 通信 | HTTPS必須 |
| 認証 | JWT + bcrypt |
| 同時接続 | 50ユーザー |
10. 開発フェーズ
10.1 Phase 1: MVP(8週間)
| 週 | タスク | 成果物 |
| W1-2 | マルチテナント基盤 | DB設計、認証拡張、テナント管理API |
| W3-4 | F-01 移植 | SETTING OPTIMIZER → SaaS化 |
| W5-6 | F-02 実装 | シフト管理 |
| W7 | F-03 実装 | 報告書作成 |
| W8 | F-04 + 結合テスト + デプロイ | 効果測定、E2Eテスト、本番環境 |
10.2 Phase 2-3
| Phase | 期間 | 内容 |
| Phase 2(Pro機能) | 1ヶ月 | ヒートマップ + 複数店舗比較 |
| Phase 3(Premium機能) | 1ヶ月 | 商圏分析 + 不正検知 |
11. インフラ・コスト試算
| 項目 | 月額 |
| アプリサーバー | 3,000〜10,000円 |
| データベース | 0〜3,000円 |
| ストレージ | 500円 |
| Claude API | 5,000円 |
12. 受入基準
| ID | テスト内容 | 合格条件 |
| T-01 | CSV取込→最適化→結果表示 | 500台30日分のデータで正常動作 |
| T-02 | AI分析・Q&A | 分析結果が30秒以内に返却 |
| T-03 | シフト自動生成 | 30名1ヶ月、法定制約を全て充足 |
| T-04 | 報告書PDF出力 | テンプレートに基づくPDF生成 |
| T-05 | ROI計算 | 正しいROI値を算出 |
| T-06 | テナント分離 | 他テナントのデータが参照不可 |
| T-07 | 認証・認可 | ロール別アクセス制御が正常動作 |
13. 依頼事項
子安氏への開発依頼内容:
- 既存SETTING OPTIMIZERコードベースのマルチテナントSaaS化
- F-01〜F-04のMVP実装
- 向井氏FBを反映した計数管理UIの刷新
- デプロイ環境の構築
既存コードベースの参照先
30_案件別/キクヤ/20_成果物/pachislot-settings/ にSETTING OPTIMIZERの全ソースが格納されている。セクション4の再利用方針に従い移植すること。