# 执行计划 - 执行机资源监控

> **关联 PRD**：`_PRD_执行机资源监控.md`
> **创建日期**：2026-08-21
> **预计总工时**：2.5 天

---

## 一、执行概述

本计划将 PRD 中的「执行机资源监控」功能分为 3 个 Phase 实施：

1. **Phase 1**：ResourceMonitor 后端采集模块 + 集成到执行引擎（1 天）
2. **Phase 2**：实时监控页 + 批量监控页资源 UI（1 天）
3. **Phase 3**：报告页资源区块 + 联调测试（0.5 天）

---

## 二、任务分解

### Phase 1：ResourceMonitor 后端采集模块 + 集成到执行引擎

**目标**：实现 ResourceMonitor 采集类，集成到 PerformanceExecutor，资源数据随 WebSocket 快照推送，执行结束后写入 resource_summary。

| # | 任务 | 关键文件 | 验收标准 |
|---|------|---------|---------|
| 1.1 | 新建 `ResourceMonitor` 类（psutil 优先 + 标准库兜底） | `backend/app/executors/resource_monitor.py` | sample() 返回 cpu/mem/net 字典 |
| 1.2 | Windows 兜底（标准库实现） | 同上 | Windows 下即使无 psutil 也可采集 cpu/mem |
| 1.3 | Linux 兜底（/proc 读取） | 同上 | Linux 下文件读取方式可用 |
| 1.4 | 集成到 `PerformanceExecutor`：`_resource_loop` 协程 | `backend/app/executors/performance_executor.py` | 与 _snapshot_loop 并行运行，每秒采集 |
| 1.5 | 快照消息合并：resource 字段加入推送 | `backend/app/executors/performance_executor.py` | WebSocket 推送含 data.resource |
| 1.6 | 执行结束后写入 resource_summary | `backend/app/services/performance_service.py` | 任务 JSON 字段存储采样序列和统计 |
| 1.7 | PerformanceTask 模型增加 `resource_summary` 字段 | `backend/app/models/performance.py` | JSON 字段，nullable，to_dict() 输出 |
| 1.8 | 报告 API 返回 resource_summary | `backend/app/routers/performance.py` + `backend/app/schemas/performance.py` | GET 报告接口响应含 resourceSummary |
| 1.9 | 配置项：RESOURCE_MONITOR_ENABLED / INTERVAL | `backend/app/config.py` | 可通过环境变量控制开关和采样间隔 |

**验收方式**：执行一个压测任务，观察 WebSocket 推送消息含 resource 字段；执行完成后报告 API 返回 resource_summary。

---

### Phase 2：实时监控页 + 批量监控页资源 UI

**目标**：`MonitorPanel.vue` 和 `BatchMonitor.vue` 增加资源利用率卡片和趋势图。

| # | 任务 | 关键文件 | 验收标准 |
|---|------|---------|---------|
| 2.1 | PerformanceSnapshot 类型增加 resource 字段 | `frontend/src/types/performance.ts` | 编译通过 |
| 2.2 | MonitorPanel 资源卡片（CPU/内存/网络发送/接收 x4） | `frontend/src/views/performance/MonitorPanel.vue` | 收到快照后实时更新数值 |
| 2.3 | MonitorPanel 资源趋势图（CPU + 内存双折线，网络发送/接收双折线） | 同上 | 随时间动态更新 |
| 2.4 | 资源 CPU/内存 > 85% 红色告警提示 | 同上 | 卡片数值超过阈值变红 |
| 2.5 | 资源趋势图默认折叠（点击展开） | 同上 | 默认隐藏，节省监控页空间 |
| 2.6 | BatchMonitor 资源趋势图（选中任务维度） | `frontend/src/views/performance/BatchMonitor.vue` | 批量监控页也可查看资源 |

**验收方式**：压测执行中，监控页显示资源卡片实时更新；趋势图正常渲染。

---

### Phase 3：报告页资源区块 + 联调测试

**目标**：`ReportPanel.vue` 展示资源汇总和趋势图，端到端联调。

| # | 任务 | 关键文件 | 验收标准 |
|---|------|---------|---------|
| 3.1 | Report 类型增加 resourceSummary 字段 | `frontend/src/types/performance.ts` | 编译通过 |
| 3.2 | ReportPanel 资源汇总卡片（平均/最大 CPU、平均/最大内存、平均发送/接收） | `frontend/src/views/performance/ReportPanel.vue` | 汇总数据正确显示 |
| 3.3 | ReportPanel 资源趋势图（CPU+内存、网络） | 同上 | 图表渲染正确，无资源数据时隐藏 |
| 3.4 | 端到端联调测试 | 全部相关文件 | 创建 → 执行 → 监控 → 报告全流程资源数据正常 |
| 3.5 | 无 psutil 环境降级验证 | `resource_monitor.py` | 标准库兜底方式可用，不报错 |
| 3.6 | 前端构建验证 | `frontend/` | npm run build 无错误 |

**验收方式**：端到端流程——执行压测 → 实时监控资源 → 查看报告资源趋势 → 无 psutil 环境仍可运行。

---

## 三、验收标准总览

| 验收项 | 对应 Phase |
|--------|-----------|
| ResourceMonitor 跨平台采集 CPU/内存/网络 | Phase 1 |
| 资源指标随 WebSocket 快照推送 | Phase 1 |
| 执行结束后 resource_summary 落库 | Phase 1 |
| 报告 API 返回 resource_summary | Phase 1 |
| 监控页实时资源卡片 + 趋势图 | Phase 2 |
| 批量监控页资源趋势图 | Phase 2 |
| 报告页资源汇总 + 趋势图 | Phase 3 |
| 无 psutil 环境兜底正常工作 | Phase 3 |
| 端到端全流程正常 | Phase 3 |

---

## 四、测试计划

### 单元测试
- ResourceMonitor 在 Windows/Linux 下 sample() 正确性
- 网络速率差值计算

### 集成测试
- 压测执行 + 资源采集全流程
- 资源数据合并到 WebSocket 快照

### 手动测试
- 监控页资源卡片实时刷新
- 资源趋势图动态渲染
- 无 psutil 环境（可用 `pip uninstall psutil -y` 模拟）

---

## 五、风险评估

| 风险 | 影响 | 缓解措施 |
|------|------|---------|
| /proc 读取性能开销 | 采集耗时 | 关键文件只读前 2 行，设置缓存有效期 |
| 网络计数器差值首次采样为 0 | 首秒速率为 0 | 跳过第 1 次差值，第 2 次开始计算 |
| 监控页图表过多加载慢 | 页面卡顿 | 资源趋势图默认折叠，按需展开 |
| 服务器无 psutil 无法安装 | 采集失败 | 标准库兜底实现 |

---

## 六、后续工作

- [ ] Phase 1-3 实施完成后更新 CLAUDE.md 当前进度
- [ ] 更新 HANDOFF_性能测试.md 交接文档
- [ ] Git 提交（Conventional Commits）
- [ ] 部署到 5.60 服务器（如需要）

---

## 七、附录

### 关键文件

| 文件 | 用途 |
|------|------|
| `backend/app/executors/resource_monitor.py` | 新建：ResourceMonitor 采集类 |
| `backend/app/executors/performance_executor.py` | 修改：集成 _resource_loop |
| `backend/app/services/performance_service.py` | 修改：写入 resource_summary |
| `backend/app/models/performance.py` | 修改：增加 resource_summary 字段 |
| `backend/app/schemas/performance.py` | 修改：报告 schema 增加 resourceSummary |
| `backend/app/config.py` | 修改：增加资源监控配置项 |
| `frontend/src/types/performance.ts` | 修改：增加 resource 类型 |
| `frontend/src/views/performance/MonitorPanel.vue` | 修改：资源卡片 + 趋势图 |
| `frontend/src/views/performance/BatchMonitor.vue` | 修改：资源趋势图 |
| `frontend/src/views/performance/ReportPanel.vue` | 修改：资源汇总 + 趋势图 |

---

*本文档由 prd-plan skill 生成，关联 PRD：`_PRD_执行机资源监控.md`*