Files
hive-manage-v3/docs/superpowers/plans/phase-4-spec.md
T

2.4 KiB
Raw Blame History

实现 Profile 健康分(P0-2)。评分引擎 + API + 前端页面。

第一部分: 健康分计算引擎

创建 backend/app/services/health_scorer.py:

评分规则(PRD §P0-2):

  • Gateway 稳定性 40%: 7天在线率×40 + 日均重启≤0.3得满分
  • 配置完整性 25%: 必填字段检查(.env+config.yaml),缺1个扣10%
  • Skill 一致性 20%: 与基准 Skill 清单对比
  • Cron 成功率 15%: 24h Cron 成功率×15

等级: A(80-100) B(60-79) C(40-59) D(0-39)

函数:

  • calculate_health_score(profile_name: str) -> HealthScore
  • calculate_all_scores() -> list[HealthScore]
  • 数据来源: 读取 .env + config.yaml 文件, 调 hermes CLI 获取 Gateway/Cron 状态
  • 暂用占位数据(TODO: connect to real data sources),但评分逻辑要完整实现
  • 评分结果缓存到 score_results dict, 每天凌晨自动刷新

第二部分: Health API

创建 backend/app/api/health.py,全部 require_auth

GET /api/v1/health/scores

返回全部 Profile 健康分排行列表

  • query: ?grade=A|B|C|D&sort=asc|desc
  • 默认: 从低到高(D 排最前)
  • 每行: rank, name, total_score, grade, gateway_score, config_score, skill_score, cron_score, deduct_summary

GET /api/v1/health/scores/{profile}

返回单 Profile 详情:

  • 四维度得分/满分 + 具体扣分项列表 + 修复建议

POST /api/v1/health/compare

body: {"profile_names": ["hebo", "ops-engineer"]} 返回对比表: 横向 Profile, 纵向配置/Skill 字段, ✅/❌/⚠

POST /api/v1/health/calculate

手动触发全量评分计算 (需 owner)

第三部分: 前端 Health 页面

修改 frontend/src/pages/HealthPage.tsx:

顶部: 四级分布卡片

  • 4 个 Card: A(绿) B(蓝) C(黄) D(红)
  • 显示数量 + 等级标签
  • 点击卡片筛选对应等级

筛选栏

  • 等级筛选: 全部 A B C D
  • 对比按钮: 选中≥2 个 Profile 后启用
  • 排序切换: 默认问题优先(D→A)

评分列表

  • Table 组件
  • 列: 排名, Profile名, 总分(颜色编码), 等级 Badge, 四维度分, 主要扣分项, 操作
  • 可展开行: 点击展开四维度扣分明细面板(内嵌展开,不跳转)
  • D 级行标红

批量对比视图

  • 勾选 2-20 个 Profile → "对比选中"按钮
  • 对比表: 横向 Profile, 纵向字段, ✅有/❌无/⚠版本不同
  • 差异行黄色背景高亮
  • 支持"只看差异"切换

四态覆盖

注册路由: main.py 添加 health router。

完成后提交。