メインコンテンツまでスキップ

フィーチャートグル

White-labelデプロイはすべての機能を出荷するわけではありません。フィーチャートグルは主な商品機能をオン/オフできます — デプロイ時に設定で、または後でruntimeに再デプロイなしで。すべての機能デフォルト有効;デプロイメントは変更するもののみをリストします。

モデル​

  • Core.Features.FeatureFlag — ゲート可能な機能のenum: Authoring、Backtesting、Execution、CopyTrading、Ai、PortfolioAgent、Alerts、PropGuard、PropFirm、Accounts、OpenApi、Mcp、Compliance。 Core管理 surface(ダッシュボード、ユーザー、ノード、auth)はゲート可能ではなく、ここには 없습니다。
  • Core.Options.FeaturesOptions — 設定.baseline、App:Featuresからバインド。各プロパティはデフォルトtrue。
  • Core.Features.IFeatureGate — 有效的状態を解決:設定.baselineにオプションのowner-set runtime overrideをオーバーレイ。Infrastructure.Features.FeatureGate実装、overrideを brieflyキャッシュ(FeatureSettings.OverrideCacheTtl)、変更時に無効化。

Runtime overrideはfeature.<FeatureFlag>をキーとするAppSetting行に保存(値true/false)。行なし = 「設定.baselineを使用」。

機能を無効にする2つの方法​

1. デプロイメント設定(baseline)​

フラグをApp:Features配下falseに設定。例appsettings.json:

{
"App": {
"Features": {
"CopyTrading": false,
"PropGuard": false
}
}
}

または環境変数で(double underscore):

App__Features__CopyTrading=false

Baselineはバックグラウンドワーカー(Nodes.AddNodes)とMCPツール(Mcpサーバー)の起動時登録をゲートするため、設定で無効化されたfeatureはホストされたサービスを開始せず、MCPツールを露出しません。

2. Runtime override(owner)​

所有者はSettings → Features(/settings/features)またはAPIから任意の機能をライブでFlipできます:

GET /api/features -> [{ "flag": "CopyTrading", "enabled": true }, ...] (Owner)
PUT /api/features/{flag} body { "enabled": false } -> set override (Owner)
PUT /api/features/{flag} body { "enabled": null } -> clear override (revert) (Owner)

Runtime変更はリクエスト時ゲート(ナビゲーション、API)に即座に有効。バックグラウンドワーカーとMCPツールは起動時にゲート、nextプロセス再起動時にruntime変更を選択。

各ゲートの強制内容​

レイヤーメカニズムタイミング
HTTP APIRouteGroupBuilder.RequireFeature(flag) エンドポイントフィルタ → 無効時404Runtime
ナビゲーションNavMenuはIFeatureGate.IsEnabledでリンクを非表示Runtime
バックグラウンドワーカーNodes.AddNodesでの条件付きAddHostedService起動時(設定)
MCPツールMCPサーバーの条件付きWithTools<>起動時(設定)

深いリンクで無効化されたfeatureに到達すると空のページが 렌derされます — そのAPIは404を返します; navはそれをさらにsurfaceしません。

フラグ→表面マップ​

フラグAPIグループNavワーカー / MCP
Authoring/api/cbots、/api/paramsets、/api/buildercBotsグループ → cBots(per-cBotダイアログのパラメータセット)MCP CBotTools
Backtesting(/api/instancesを共有)cBotsグループ → バックテスト—
Execution/api/instancescBotsグループ → 実行MCP InstanceTools
CopyTrading/api/copyCopy TradingCopyEngineSupervisor、OpenApiTokenRefreshService、MCP CopyTools
Ai/api/aiAIグループ → AI; Settings → AI(キー)AiRiskGuard、MCP AiTools
PortfolioAgent/api/agentAIグループ → Portfolio AgentPortfolioAgentService
Alerts/api/alertsAIグループ → AlertsAlertEvaluator
PropGuard/api/propPropグループ → Prop GuardPropGuardService
PropFirm/api/prop-firmPropグループ → Challenges—
Accounts/api/ctidsTrading Accounts—
OpenApi/api/openapiSettings → Open API—
Mcp/api/mcp-keysAIグループ → MCP Keys—
Compliance/api/complianceSettings → Legal & Privacy—

テスト​

  • ユニット — UnitTests/Features/FeaturesOptionsTests.cs: baselineデフォルト、per-flagマッピング。
  • 統合 — IntegrationTests/FeatureGateTests.cs: 設定.baseline、runtime overrideが設定を打ち消し、real Postgresで永続化、クリアでbaselineに revert(real Postgres)。
  • E2E — E2ETests/FeatureToggleTests.cs: runtimeでCopyTradingを無効にするとnavリンクが非表示になり/api/copyが404を返し、再有効化すると两者とも復元。