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 /// /// useProxy=true 時のみ使用(consumer APK では useProxy=false のため到達しない) /// ビルド時に必ず --dart-define=AI_PROXY_URL=... で指定すること static const String aiProxyBaseUrl = String.fromEnvironment( 'AI_PROXY_URL', defaultValue: '', // 内部ネットワーク情報をバイナリに含めない ); /// AI Mode: Proxy(Home) vs Direct(Cloud) /// /// false: Gemini API に直接接続(consumer APK デフォルト) /// API キーは --dart-define=GEMINI_API_KEY=... でビルド時に埋め込む /// true: 内部プロキシ経由(開発・検証用、--dart-define=USE_PROXY=true) static const bool useProxy = bool.fromEnvironment( 'USE_PROXY', defaultValue: false, ); /// AI Proxy サーバーの解析エンドポイントURL static const String aiProxyAnalyzeUrl = '$aiProxyBaseUrl/analyze'; /// AI Proxy 認証トークン /// Proxy経由モード(useProxy=true)時に使用するBearer Token /// ビルド時の上書き: --dart-define=PROXY_AUTH_TOKEN=... static const String _proxyAuthTokenEnv = String.fromEnvironment( 'PROXY_AUTH_TOKEN', defaultValue: '', ); /// 実際に使用するProxy認証トークン /// 優先順位: 環境変数 > ローカル設定ファイル static String get proxyAuthToken { if (_proxyAuthTokenEnv.isNotEmpty) { return _proxyAuthTokenEnv; } return local.SecretsLocal.proxyAuthToken; } /// 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; } /// Posimai メインサーバーのベースURL(ライセンス検証に使用) static const String posimaiBaseUrl = String.fromEnvironment( 'POSIMAI_BASE_URL', defaultValue: 'https://api.soar-enrich.com', ); // static const String driveClientId = String.fromEnvironment('DRIVE_CLIENT_ID', defaultValue: ''); }