ダッシュボード
サインイン時に表示される最初の画面であり、実際に1日中開いておくことになるページです。
ランディングページ(/、Components/Pages/Index.razor)は、サインインしたユーザーの
cBot実行、バックテスト、リソース、(管理者向け)ノードクラスタ全体のアクティビティのための
ライブ、モバイルファーストコマンドセンターです。
自動更新され、phoneでも美しく表示され、F5を押さえる必要が永远不会。
表示内容
優先度順(phoneではすべてのブロックが全幅スタックアイテム、タブレ/desktopではレスポンシブグリッド):
- ヘッダー — タイトル、ライブインジケーター(実際のpulsesするドット;
prefers-reduced-motion下では静的)、 最終更新時刻、期間トグル(1H · 24H · 7D · 30D)— KPIとチャートを驱动。 - ヒーローKPI — 4つの一剑arellaカード、それぞれ大きな数字 + インラインSVGスパークライン +
(意味のある場所では)前期間との差分:
- Active now — 現在開始/実行中の実行 + バックテスト。
- Success rate — 期間中の完了 ÷(完了 + 失敗); 差分はパーセンテージポイント。
- Completed — この期間の終了した実行/バックテスト; 前期間との差分。
- Failed — この期間の失敗; 差分(少ないほど良ため、減少は緑色で表示)。
- アクティビティチャート — 開始/完了/失敗の各時間バケットのApexChartsエリアタイムライン。
- インスタンスステータスリング — 実行/バックテスト/保留/完了/失敗のドーナツ、中心に合計。
- バックテスト — 3タイルスナップショット(実行中/完了/失敗)、クリックで
/backtestへ。 - コピー取引 — ライブステータスドット、宛先数、実行中プロファイルのLiveバッジ付き
コピー取引プロファイル; クリックで
/copy-tradingへ。 - AIエージェント — 実行状態(アーキタイプ · ステータス)と最終アクション時刻付きペルソナ駆動取引エージェント;
クリックで
/agent-studioへ。 - ライブアクティビティフィード — 最新の20イベント(最新順)、ステータスカラーのドットと 相対タイムスタンプ付き。
- クラスタヘルス(管理者のみ) — アクティブvs合計ノードと容量使用量ゲージ。
- リソースタイル — cBot、取引アカウント、cTrader ID、MCPキー(各ページにクリックthrough)。
ダッシュボードのカスタマイズ
上記のすべてのブロックはあなたがコントロールするウィジェットです。 ヘッダーの右上にあるCustomizeを押してダイアログを開き、ウィジェートの表示/非表示を切り替え、 上下矢印で並べ替えができます。デフォルトにリセットするとカタログ順序が復元されます。 あなたの選択はサーバー側でユーザーごとに永続化されるため、ブラウザやデバイス間をまたいで追跡 — このタブだけでなく。
- 機能ゲートと管理者のみのウィジェット(コピー取引、AIエージェント、クラスタヘルス)は、 デプロイ/ロールがそれらを使用できる場合にのみダイアログに表示されます。
- ウィジェットカタログは
Core/Dashboard/DashboardWidgets.csの単一の情報源; 表示(ラベル + アイコン + 可用性)はComponents/Dashboard/DashboardWidgetMeta.csにあります。
ライブ状態を維持する方法
ページは10秒ごとにGET /api/dashboard/overview?period=<1h|24h|7d|30d>をポーリングし、
ウィジェットをインプレースで再描画 — 手動再読み込みなし。
一時的なフェッチ失敗は飲み込まれ、次のティックでリトライ; disposeでループはクリーンに停止。
最初の読み込みではスケルトンが表示; 持続的な失敗はRetry付きの錯誤カードを表示;
データのないユーザーはゼロのKPIと空状態copy能看到。
バックエンド
Endpoints/DashboardEndpoints.csが/overviewをマッピング(古いスカラー/statsも維持)。 ユーザーごと、ICurrentUserで管理者にゲート; クロックはTimeProviderから。GET/PUT /api/dashboard/layoutもマッピング — ユーザーのウィジェットレイアウト、 ページ開始時に読み込まれ、Customizeダイアログから保存。- レイアウト永続化は
UserDashboard集約(Core/Dashboard/UserDashboard.cs): ユーザーごとに1つのボード(UserIdで一意)、順序付きウィジェット設定リスト (visible + order)をjsonbカラムとして所有。 順序付きリストはApply/Resetを通じてのみ突然変異し、 すべてのキーをDashboardWidgetsカタログに対して検証し、コレクションを完全で重複なしのまま維持。 不明なキーはDomainException→400で拒否されます。 Endpoints/DashboardQuery.csが複合DashboardOverview読み取りモデルを構築: オールタイムステータススナップショット(グループカウント)、 материализован onceのウィンドウ化されたインスタンスセット、 リソース/ノードカウント。 インスタンスステータスと终端タイムスタンプはTPHサブタイプに存在(カラムではなく)、 そのため行は共有InstanceEndpoints.GetStartedAt/GetStoppedAtпомощникによってメモリで読み取られます。 イベント時刻 =stopped ?? started ?? created。Endpoints/DashboardModels.csがDTO保持、期間→(ウィンドウ、バケットカウント)プラン、DashboardMath— 純粋で決定論的なバケッティング + KPI/差分数学(I/Oなし、nowが渡される)。
KPI差分は現在のウィンドウと即座に先行するウィンドウを比較(そのためにクエリはダブルウィンドウをフェッチ)。 ライブアカウントP&Lフィードはありません — プラットフォームはバックテストとprop-firmトラッキングの 株式のみを持つため、ダッシュボードは意図的に運用(アクティビティ、スループット、成功率)、 而不是经纪公司残고 ticker。
デザインとトークン
すべての颜色はデザイートークン(var(--app-success|-warning|-error|-info|-primary|-text*))から来て、
因此ホワイトラベルパレットが無料でフロー — チャート含む、
そのシリーズ颜色は実行時にwindow.appReadTokensから解決されたトークンを読み取ります
(SVGはCSS変数を直接的消费できない)。ダッシュボードのどこにもハードコードされたhexなし。
../ui-guidelines.mdを参照。
「Powered by cMind」リンク
ダッシュボードにはこのドキュメントサイトヘの小さな tastefulな**「Powered by cMind」リンクが表示されます。
これはデフォルトで表示** — 私たちはプロジェクトに誇りを持っており、
他のトレーダーがそれを見つけるのに役立ちます — が完全にあなたの判断次第です。
完全にホワイトラベルされたインスタンスを実行するリセラはApp:Branding:ShowSiteLinkをfalseに
flipすと消えます。
ホワイトラベルブランディングを参照。
テスト
- ユニットスタイル(
tests/IntegrationTests/DashboardMathTests.cs)— バケティング、成功率、前期間差分、期間解析、空/境界(nowのイベント、ゼロ除算ガード)。 - ユニット(
tests/UnitTests/Dashboard/UserDashboardTests.cs)—UserDashboard集約:デフォルトシード、order/visibility適用、欠落のappended、重複collapse、 不明なキー拒否、リセット。 - 統合(
tests/IntegrationTests/DashboardQueryTests.cs、DashboardLayoutTests.cs)— 実際のPostgresに対する読み取りモデル(ステータス/KPI/アクティビティ/リソース、管理者ノードヘルス、 空ユーザーパス)、新しいバックテスト/コピープロファイル/エージェントセクション、 レイアウトラウンドトリップ(カスタムレイアウト保存 → 再読み込み → order + visibilityが持続)。 - E2E(
tests/E2ETests/DashboardTests.cs、DashboardCustomizeTests.cs)— desktop + mobile:KPIカード、チャート、リング、フィードが描画; 期間トグルがアクティブ期間を切り替え、 再読み込み; KPIが/runにドリル-through; ウィジェットを非表示にすると再読み込み後に持続、 リセットが復元、Customizeダイアログが電話で動作(水平オーバーフローなし)。/はPageSmokeTests、MobileLayoutTests(シェル + 非オーバーフロー)、MobileJourneyTestsにも含まれる。