# Ponshu Room AI Proxy Server ## 概要 Ponshu Room Liteアプリのバックエンドプロキシサーバー。Gemini APIへのリクエストを中継し、以下の機能を提供します: ### 主な機能 1. **APIキー保護** - アプリにAPIキーを埋め込まない - サーバー側で環境変数として管理 2. **デバイスID認証** - SHA256ハッシュ化されたデバイスIDで認証 - 未登録デバイスのアクセスを制限可能(将来実装) 3. **レート制限** - 1デバイスあたり1日10回まで(Lite版) - Pro版では無制限に拡張可能 4. **使用状況ログ** - JSON形式で使用履歴を記録 - 30日以上前のデータは自動削除 ## 技術スタック - **言語**: Python 3.11 - **フレームワーク**: FastAPI - **HTTPクライアント**: httpx - **デプロイ**: Docker ## エンドポイント ### `GET /` ヘルスチェック ### `GET /health` 詳細なヘルスチェック(APIキー設定状況など) ### `POST /analyze` 日本酒ラベル画像を解析 **リクエスト:** ```json { "device_id": "sha256ハッシュ(64文字)", "images": ["base64エンコードされた画像1", "画像2", ...], "prompt": "カスタムプロンプト(オプション)" } ``` **レスポンス:** ```json { "success": true, "data": { "name": "獺祭 純米大吟醸", "brand": "旭酒造", "prefecture": "山口県", ... }, "usage": { "today": 3, "limit": 10 } } ``` ### `GET /usage/{device_id}` デバイスの使用状況を取得 ## 環境変数 | 変数名 | 説明 | デフォルト | |--------|------|-----------| | `GEMINI_API_KEY` | Gemini API Key | (必須) | | `GEMINI_MODEL` | 使用するモデル | `gemini-1.5-flash` | | `RATE_LIMIT_PER_DAY` | 1日あたりの制限 | `10` | ## データ保存 - 使用状況: `/app/data/usage.json` - 30日以上前のデータは自動削除 ## セキュリティ - デバイスIDはSHA256ハッシュ化されたもののみ受け入れ - CORS設定でオリジン制限可能 - APIキーは環境変数で管理(コードに埋め込まない) ## ローカルでのテスト ```bash # 依存関係インストール pip install -r requirements.txt # 環境変数設定 export GEMINI_API_KEY="YOUR_API_KEY" # サーバー起動 python server.py ``` http://localhost:8080 でアクセス可能