import 'secrets.local.dart' as local; /// アプリケーションの機密情報と設定を管理するクラス /// /// ビルド時に環境変数を使って値を上書きできます: /// ```bash /// flutter build apk --dart-define=AI_PROXY_URL=http://your-server:8080 /// ``` /// /// ローカル開発時: /// 1. lib/secrets.local.dart.example をコピーして lib/secrets.local.dart を作成 /// 2. 新しく発行したAPIキーを設定 /// 3. secrets.local.dart は .gitignore に含まれているため安全 class Secrets { /// AI Proxy サーバーのベースURL /// /// デフォルト: Synology NAS上のAI Proxyサーバー (Tailscale IP) /// ビルド時の上書き: --dart-define=AI_PROXY_URL=... static const String aiProxyBaseUrl = String.fromEnvironment( 'AI_PROXY_URL', defaultValue: 'http://100.76.7.3:8080', ); /// AI Mode: Proxy(Home) vs Direct(Cloud) /// If false, connects directly to Google Gemini API (Works anywhere). /// Release build: --dart-define=USE_PROXY=true static const bool useProxy = bool.fromEnvironment( 'USE_PROXY', defaultValue: false, ); /// AI Proxy サーバーの解析エンドポイントURL static const String aiProxyAnalyzeUrl = '$aiProxyBaseUrl/analyze'; /// Gemini API Key /// ⚠️ セキュリティのため、defaultValueは空です /// ローカル開発時: lib/secrets.local.dart を作成してキーを設定 /// ビルド時の上書き: --dart-define=GEMINI_API_KEY=... static const String _geminiApiKeyEnv = String.fromEnvironment( 'GEMINI_API_KEY', defaultValue: '', // セキュリティのため空文字列 ); /// 実際に使用するGemini APIキー /// 優先順位: 環境変数 > ローカル設定ファイル static String get geminiApiKey { // 1. 環境変数が設定されていればそれを使用 if (_geminiApiKeyEnv.isNotEmpty) { return _geminiApiKeyEnv; } // 2. ローカル設定ファイルから取得 return local.SecretsLocal.geminiApiKey; } // static const String driveClientId = String.fromEnvironment('DRIVE_CLIENT_ID', defaultValue: ''); }