ponshu-room-lite/lib/secrets.dart

84 lines
3.1 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: '');
}