| レイヤー | 技術 | バージョン | 用途 |
|---|---|---|---|
| Frontend | React + TypeScript + Tailwind | React 19 / Vite 8 | SPA(3画面) |
| Backend | FastAPI + Python | Python 3.12 / FastAPI 0.115 | REST API(6ルーター) |
| DB | PostgreSQL / SQLite | psycopg2 | マルチテナントデータ |
| AI | Anthropic Claude API | Sonnet 4 | 設定最適化・対話調整 |
| Infra | Railway (PaaS) | Docker 2段ビルド | 本番ホスティング |
| ルーター | Method | エンドポイント | 認可 | 概要 |
|---|---|---|---|---|
| /auth | POST | /login | なし | JWT発行(レート制限: 5回/5分) |
| POST | /refresh | なし | トークン更新 | |
| POST | /logout | Bearer | リフレッシュトークン失効 | |
| GET | /me | Bearer | ユーザー情報取得 | |
| /optimization | POST | /run | Bearer+店舗 | CSV+目標利益 → 設定最適化 |
| POST | /ai-adjust | Bearer | AI対話で設定調整 | |
| POST | /apply-changes | Bearer | 手動変更の利益再計算 | |
| /admin | GET/POST | /companies | system_admin | 会社CRUD |
| GET/POST | /stores | admin系 | 店舗CRUD | |
| GET/POST/DEL | /users | admin系 | ユーザーCRUD | |
| /decisions | POST | / | Bearer | 意思決定記録の保存 |
| GET | /{store_id}/{date} | Bearer | 日別記録取得 | |
| GET | /summaries | Bearer | 日次集計(30日) | |
| /data-import | POST/GET | /upload, /summary | admin系 | CSV取込・サマリ表示 |
| /healthz | GET | /healthz | なし | DB接続確認 |
| ロール | スコープ | 権限 |
|---|---|---|
| system_admin | 全社 | 全CRUD |
| company_admin | 自社 | 店舗・ユーザー管理 |
| store_user | 自店舗 | 最適化・閲覧 |
| セキュリティ項目 | 実装状況 | 備考 |
|---|---|---|
| パスワードハッシュ | bcrypt 10rounds | 定数時間比較 |
| SQLインジェクション | パラメータクエリ | 全クエリ対応済み |
| 入力検証 | Pydantic | FastAPI自動バリデーション |
| CORS | ホワイトリスト | 許可オリジン設定済み |
| レート制限 | インメモリ | 再起動でリセット |
| JWT署名 | HS256 | RS256推奨 |
| カテゴリ | 数 | 行数 | カバレッジ |
|---|---|---|---|
| API テスト | 6件 | ~800 | ~80% |
| auth, optimization, admin, decisions, data-import, health | |||
| Core テスト | 8件 | ~1,600 | ~85% |
| scoring, allocator, profit, optimization, config, csv, decision, models | |||
| Unit テスト | 2件 | ~200 | ~70% |
| auth_service, middleware | |||
| 環境変数 | 用途 | 備考 |
|---|---|---|
| DATABASE_URL | DB接続文字列 | Railway PostgreSQLが自動設定 |
| SECRET_KEY | JWT署名鍵 | ランダム文字列を設定 |
| ADMIN_PASSWORD | 初期管理者PW | 初回シード用 |
| ANTHROPIC_API_KEY | Claude API | AI機能に必須 |
| 運用項目 | 方式 | 頻度 | 担当 |
|---|---|---|---|
| 機能追加・バグ修正 | Claude Code + git push | 随時 | 高木 |
| デプロイ | railway up --detach | 変更時 | 高木 |
| DB バックアップ | Railway自動 | 日次 | 自動 |
| ログ確認 | Railway Dashboard | 随時 | 高木 |
| SSL証明書 | Railway自動更新 | 自動 | 自動 |
| config.yaml更新 | 機種追加・出玉率変更 | 月1程度 | 高木 |