Skip to content

Releases: SoperRookie/coverage-hub

v2.6.5

Choose a tag to compare

@SoperRookie SoperRookie released this 09 Oct 09:23
af147ac
    • 服务详情页的运行时趋势图改为按天 / 按日期区间看:新接口 GET /api/services/{name}/trend?from=&to=
  1. 按 hub 本地日历日取区间内的全部快照(默认今天),卡片上加日期区间选择器(今天 / 昨天 / 最近 7 天 /
  2. 最近 30 天快捷项,不能选未来)。原来跟着详情下发的「最近 40 次」在 5 分钟一轮下只有三个多小时,
  3. 既看不出一天的走势也回不了头;detail 里的 runtime.history 字段保留不变。
    • 趋势图横轴改成时间轴:采集停过的那段在图上留出空白,而不是和正常间隔画得一样宽;横轴撑满所选日期。
  4. tooltip 带版本与快照类型(轮询 / 手动 / 结算 / 重启封存)。区间超过 1500 个点服务端均匀抽稀(首尾保留)。
  5. 采集停过的时段(相邻快照间隔超过正常间隔的 1.5 倍)折线断开、悬停不出 tooltip —— 原来轴触发的 tooltip
  6. 会吸到几小时外最近的点,把那个点的数字端出来,像是那会儿还有覆盖率。
    • 项目报表也能按日期区间看:GET /api/projects/{name}/report 多了 from / to(两端都含,按本地日历日切,
  7. 只给一端就看那一天),给了就不看 days;页面上「近 7 / 30 / 90 天 / 全部」旁边加了日期区间选择器,
  8. 区间进 URL(?from=&to=),导出的 CSV / PDF 文件名带上区间。返回体多了 from / to / until。
    • Element Plus 组件文案切到中文(日期选择器的月份星期、分页的「共 N 条」原来是英文)。

V2.2.1

Choose a tag to compare

@SoperRookie SoperRookie released this 16 Sep 02:42

相关bug修复

V2.1.0

Choose a tag to compare

@SoperRookie SoperRookie released this 13 Sep 09:20
2445440

covhub v2.1.0

从单文件脚本升级为「包 + 数据库 + FastAPI + Vue 看板」的完整形态,新增项目维度、单测 / 新增代码覆盖率、历史版本与对比、报表导出、深色主题与内置接口文档。v1.2.2 之后的 37 个提交(含未单独打标签的
v1.3.0「配置支持 YAML」)全部并入本版。

架构

  • covhub.py 拆成 covhub/ 包,covhub.py 只剩入口壳,命令用法不变。
  • 服务配置与覆盖率历史入库:SQLAlchemy 2 + Alembic,八张表(services / service_state / snapshots / archives / breaks / projects / unit_reports / diffs)。targets.yaml 的 services 段与 data/*/state.json 退役,covhub import 幂等导入。主验证库 MySQL 8,SQLite / PostgreSQL 可跑。- HTTP 层换成 FastAPI:路径与返回体逐字段兼容旧脚本,新增 /api/services、/api/projects、/api/import。- 示例配置改为 covhub.example.yaml + service.example.yaml;lib/ 下两个 JaCoCo jar 进版本库,克隆即可跑。

数据能力

  • 项目维度:服务归属项目(同一时间只属一个),看板按项目分组。
  • 单测覆盖率与新增代码覆盖率:流水线推送 jacoco.xml(POST /api/unit-coverage)与 git diff(POST /api/diff),hub 按行级数据求交集算出「本版本新增代码」的运行时 / 单测覆盖率。分母只算有探针的新增行,total = 0 时百分比为空;diff 里有而报告里没有的文件列进 unmatched,不静默吞掉。
  • 历史版本:结算归档时把新增行附近的源码片段存进归档,历史版本看源码不依赖源码目录仍在。
  • 新增只读接口:/api/overview、/api/services/{name}/detail[?version=]、/source、/compare、/versions、/api/projects/{name}/report。
  • 集成脚本同步:covhub-client.sh 加 unit-coverage / diff,Jenkins 共享库加 pushUnitCoverage / pushDiff。

看板(Vue 3)

  • web/ 独立前端(Vite + Vue 3 + TypeScript + Element Plus + ECharts),产物随 Python 包分发、hub 静态托管,不引任何 CDN。
  • 层级 项目总览 → 项目面板 → 服务详情;建 / 编辑 / 删除项目,勾选即归入 / 移出服务;项目名允许中文。
  • 服务详情:四个环形指标(运行时 / 单测 × 总覆盖 / 新增代码)、趋势图、新增代码明细可展开看源码逐行执行状态、已结算版本、单测历史、配置。
  • 版本下拉切换历史版本(URL 可收藏转发);历史对比:任意两个版本的总量差与按文件的指令覆盖差。
  • 手动触发:立即采集、结算归档、重出报告,执行日志原样弹出。
  • 项目报表:时间范围 7 / 30 / 90 天 / 全部,横条图 + 三张表,导出 CSV / PDF / 打印;服务详情也可导出完整 PDF 报告。
  • 深色主题:浅 / 深 / 跟随系统,图表随主题重画。
  • 视觉规则:只有两个系列色(经色盲可分性校验),覆盖率数字不按阈值着色,语义色只表示运维状态。

文档与工具

  • hub 自带 Swagger UI(/docs,资源打在包里,不引 CDN);/api/openapi.json 不再单独暴露,文件版由 covhub openapi 导出。
  • README、ONBOARDING 全面改写到 2.1。
  • tools/seed_demo.py:两个项目、20 个微服务、各 3–5 个版本的演示数据;tools/demo_services.py:把它们起成挂 agent 的真实 JVM,hub 可实时采集。
  • 测试从零到 262 个用例。

升级说明

  • 需要 Python 3.12:pip install -e .。
  • 首次启动 covhub db upgrade(serve 默认自动做),再 covhub import 导入旧 targets.yaml 与 state.json;data/ 目录兼容。
  • 服务改用 covhub service add 登记;改前端要 cd web && npm run build 并连产物一起提交,hub 机器不需要 node。

v1.2.2:结算前做数据体检,补 push 的接入文档与时序图

Choose a tag to compare

@SoperRookie SoperRookie released this 06 Sep 09:56

结算前体检
predeploy 在归档前跑一次 diagnose,把「安静地归档一份废数据」变成会说话的。
实测:classfiles 指错时报告是 0.0%,以前只能等人去看报告才发现,现在结算当场
就喊出来,并说明最可能的原因。

匹配率低不阻断结算,这是有意的:走到 predeploy 说明服务马上要停,exec 是
不可再生的 —— 因为指纹对不上就拒绝归档,只会让这段数据既对不上、又没留下。
结论写进 manifest 的 matchRate / healthVerdict,也记进该版本的结算记录,
日后查「这版数字能不能信」不用翻文件。

文档
ONBOARDING 补 Step 5 的 E 节:push 通道怎么配、多副本要注意什么。
之前 push 只在 README 里有,而接入指南才是别人照着做的那份。
前提清单里「能访问 agent 端口」改成「连不通就改用 push」,
常见问题补了三条 push 的典型症状。

图
新增 05-push.puml:认领连接(agent 不会主动报自己是谁)、向多副本取数、
实例断连的处理、以及两条限制。
02 的标题标明它画的是 pull 通道;03 加上结算前的体检步骤;
对应表补上 PushCollector / check_data_health / 看板那几个函数。