状态监控组件

📎 引用文件

本文引用的文件 - RunnerStatus.tsx - MetricsCard.tsx - LiveRuntimePanel.tsx - SwarmDashboard.tsx - SwarmStatusCard.tsx - RunnerStatus.test.tsx - MetricsCard.test.tsx

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件为 Vibe-Trading 前端“状态监控”相关组件的权威文档,覆盖以下能力: - RunnerStatus 运行器状态:按券商(Broker)维度展示连接、授权、运行器存活、最后心跳与指令限制倒计时,并提供启动/停止控制。 - MetricsCard 指标卡片:以量化指标网格展示收益、风险、交易统计等关键指标,支持紧凑模式与语义化色彩。 - LiveRuntimePanel 实时运行面板:轮询后端 /live/status,聚合全局/局部暂停、动作事件(如订单拒绝、熔断触发/解除)、以及会话级控制(暂停/恢复)。 - SwarmDashboard 蜂群仪表盘:多代理协作任务的状态、工具、耗时与输出摘要;支持宽窄屏布局。 - SwarmStatusCard 状态卡片:聚合蜂群运行进度(分层步进条)、整体状态与代理列表入口。

同时说明实时数据更新机制、性能监控要点、异常检测与告警提示方式,并给出监控配置、告警规则与自定义仪表板开发建议。

项目结构

这些组件位于前端聊天模块下,围绕“实时运行”和“结果度量”两大主题组织: - 实时运行:LiveRuntimePanel 提供上下文与轮询,RunnerStatus 渲染各 Broker 的运行器状态与控制。 - 结果度量:MetricsCard 展示回测/因子/策略等运行后的量化指标。 - 多代理协作:SwarmStatusCard + SwarmDashboard 呈现蜂群任务的层进度与代理明细。

graph TB subgraph "实时运行" LRP["LiveRuntimePanel<br/>轮询/上下文/控制"] RS["RunnerStatus<br/>Broker 运行器状态"] end subgraph "结果度量" MC["MetricsCard<br/>量化指标网格"] end subgraph "多代理协作" SSC["SwarmStatusCard<br/>层进度/状态聚合"] SD["SwarmDashboard<br/>代理明细/工具/耗时"] end LRP --> RS SSC --> SD MC -.-> LRP

图表来源 - LiveRuntimePanel.tsx:119-260 - RunnerStatus.tsx:284-351 - MetricsCard.tsx:23-65 - SwarmStatusCard.tsx:126-189 - SwarmDashboard.tsx:244-323

章节来源 - LiveRuntimePanel.tsx:119-260 - RunnerStatus.tsx:284-351 - MetricsCard.tsx:23-65 - SwarmStatusCard.tsx:126-189 - SwarmDashboard.tsx:244-323

核心组件

章节来源 - RunnerStatus.tsx:284-351 - MetricsCard.tsx:23-65 - LiveRuntimePanel.tsx:119-260 - SwarmDashboard.tsx:244-323 - SwarmStatusCard.tsx:126-189

架构总览

实时数据流与控制流如下: - 轮询:LiveRuntimePanel 定时调用后端接口获取 /live/status,更新上下文并驱动 RunnerStatus 刷新。 - 控制:用户通过 RunnerStatus 切换单个 Broker 的运行器,或通过 LiveRuntimePanel 的全局暂停/恢复按钮影响全局状态。 - 事件:后端推送或轮询到的 LiveAction 被 LiveRuntimePanel 处理,更新本地状态并触发 toast 提示。 - 结果:MetricsCard 由上游消息或结果卡片传入 metrics 对象,独立于实时运行面板。 - 蜂群:SwarmStatusCard 接收 SwarmRunStatus,内部使用 SwarmDashboard 渲染代理明细。

sequenceDiagram participant UI as "界面" participant LRP as "LiveRuntimePanel" participant API as "后端API" participant RS as "RunnerStatus" participant SD as "SwarmDashboard" UI->>LRP : 挂载/进入页面 LRP->>API : GET /live/status (每15s) API-->>LRP : LiveStatus LRP->>RS : 传递 status/halted/onRefresh RS-->>UI : 渲染 Broker 运行器状态/控制 UI->>LRP : 点击 暂停/恢复 LRP->>API : POST halt/resume API-->>LRP : 成功/失败 LRP-->>UI : toast 提示 + 刷新状态 UI->>SD : 传入 SwarmRunStatus.agents SD-->>UI : 渲染代理明细/耗时/输出

图表来源 - LiveRuntimePanel.tsx:130-150 - LiveRuntimePanel.tsx:186-218 - RunnerStatus.tsx:121-138 - SwarmDashboard.tsx:244-323

详细组件分析

RunnerStatus 运行器状态组件

flowchart TD Start(["进入 RunnerStatus"]) --> Filter["过滤可见 Broker"] Filter --> Auth{"是否已授权?"} Auth -- 否 --> FetchAuth["拉取授权指引"] FetchAuth --> ShowGuide["展示授权引导"] Auth -- 是 --> ShowState["展示运行器状态/心跳/限额/倒计时"] ShowState --> Control{"用户点击 启动/停止?"} Control -- 是 --> CallAPI["调用 start/stop 接口"] CallAPI --> Result{"成功?"} Result -- 否 --> ToastErr["toast 错误"] Result -- 是 --> Refresh["onRefresh 刷新父级"] Control -- 否 --> End(["结束"]) ShowGuide --> End ToastErr --> End

图表来源 - RunnerStatus.tsx:83-138 - RunnerStatus.tsx:284-351

章节来源 - RunnerStatus.tsx:83-138 - RunnerStatus.tsx:284-351 - RunnerStatus.test.tsx:50-146

MetricsCard 指标卡片

flowchart TD MStart(["收到 metrics"]) --> Order["按 DISPLAY_ORDER 筛选并排序"] Order --> Empty{"是否有指标?"} Empty -- 否 --> MEnd(["不渲染"]) Empty -- 是 --> Mode{"compact ?"} Mode -- 是 --> Slice["截取前6项"] Mode -- 否 --> All["全部展示"] Slice --> Render["渲染网格/格式化/着色"] All --> Render Render --> MEnd

图表来源 - MetricsCard.tsx:23-65

章节来源 - MetricsCard.tsx:23-65 - MetricsCard.test.tsx:31-95

LiveRuntimePanel 实时运行面板

sequenceDiagram participant Parent as "父组件" participant LRP as "LiveRuntimePanel" participant API as "后端API" Parent->>LRP : 挂载/传入 sessionId LRP->>API : GET /live/status (间隔15s) API-->>LRP : LiveStatus LRP->>Parent : 暴露 handle* 方法 Parent->>LRP : handleLiveAction(action) LRP->>LRP : 更新本地状态/触发刷新 Parent->>LRP : 点击 暂停/恢复 LRP->>API : POST halt/resume API-->>LRP : 成功/失败 LRP-->>Parent : toast + 刷新

图表来源 - LiveRuntimePanel.tsx:119-260 - LiveRuntimePanel.tsx:186-218

章节来源 - LiveRuntimePanel.tsx:119-260 - LiveRuntimePanel.tsx:186-218

SwarmDashboard 蜂群仪表盘

classDiagram class SwarmDashboard { +agents : SwarmRunStatus["agents"] +emptyStatus : string? +isActive : boolean } class WideAgentRow { +agent : SwarmAgentStatus +isActive : boolean } class NarrowAgentCard { +agent : SwarmAgentStatus +isActive : boolean } SwarmDashboard --> WideAgentRow : "渲染" SwarmDashboard --> NarrowAgentCard : "渲染"

图表来源 - SwarmDashboard.tsx:124-195 - SwarmDashboard.tsx:197-242 - SwarmDashboard.tsx:244-323

章节来源 - SwarmDashboard.tsx:124-195 - SwarmDashboard.tsx:197-242 - SwarmDashboard.tsx:244-323

SwarmStatusCard 状态卡片

flowchart TD SStart(["收到 SwarmRunStatus"]) --> CheckTotal{"totalLayers > 0 ?"} CheckTotal -- 否 --> Indeterminate["显示不确定进度(运行中)"] CheckTotal -- 是 --> Determinate["渲染确定性步进条"] Indeterminate --> RenderAgents["渲染 SwarmDashboard"] Determinate --> RenderAgents RenderAgents --> SEnd(["完成"])

图表来源 - SwarmStatusCard.tsx:16-107 - SwarmStatusCard.tsx:126-189

章节来源 - SwarmStatusCard.tsx:16-107 - SwarmStatusCard.tsx:126-189

依赖关系分析

graph LR LRP["LiveRuntimePanel"] --> RS["RunnerStatus"] SSC["SwarmStatusCard"] --> SD["SwarmDashboard"] MC["MetricsCard"] -.-> LRP

图表来源 - LiveRuntimePanel.tsx:256-275 - SwarmStatusCard.tsx:180-184

章节来源 - LiveRuntimePanel.tsx:256-275 - SwarmStatusCard.tsx:180-184

性能考虑

[本节为通用性能建议,不直接分析具体代码行]

故障排查指南

章节来源 - LiveRuntimePanel.tsx:130-150 - RunnerStatus.tsx:121-138 - MetricsCard.tsx:23-65

结论

该套状态监控组件形成了“实时运行 + 结果度量 + 多代理协作”的完整可视化闭环: - LiveRuntimePanel 负责实时数据与控制中枢; - RunnerStatus 聚焦 Broker 运行器生命周期管理; - MetricsCard 提供简洁直观的量化指标展示; - SwarmStatusCard 与 SwarmDashboard 协同呈现多代理任务进度与细节。 通过合理的轮询策略、memo 优化与条件渲染,系统在实时性与性能之间取得良好平衡。结合测试用例,可确保关键交互与边界场景稳定可靠。

[本节为总结性内容,不直接分析具体代码行]

附录

监控配置建议

告警规则建议

自定义仪表板开发指南

[本节为通用指导,不直接分析具体代码行]