fix: unify detect effective job metrics

This commit is contained in:
Your Name
2026-04-19 02:41:45 +08:00
parent cfff515c03
commit 6c4e995f84
5 changed files with 520 additions and 134 deletions

View File

@@ -1,20 +1,20 @@
# IMPLEMENTATION_STATUS
更新时间2026-04-19 02:33 CST
更新时间2026-04-19 02:40 CST
## 当前真实状态
阶段判断:
- 海外单脑接管能力:约 `95%`
- 分布式检测真实执行能力:约 `93%`
- 距离“可稳定上线并放心用后台发起检测”:约 `92%`
- 分布式检测真实执行能力:约 `94%`
- 距离“可稳定上线并放心用后台发起检测”:约 `93%~94%`
本轮最重要的新事实:
- Detect 页面已经不再只显示海外节点
- 大陆 controller / worker 已进入 Detect 总览显示口径
- 用户现在能从 Detect 页面直接看见大陆节点参与执行
- Detect 主统计口径已经从“双轨显示”推进到“统一后的有效账本”
- `detect/job/active``detect/queue-summary` 主字段已直接体现大陆 + 海外的统一聚合结果
- 原始中央账本仍完整保留,便于继续排障和审计
## 本轮代码收口
@@ -22,48 +22,64 @@
- `domain-api/app/services/detect_job_service.py`
本轮前端变更:
本轮测试变更:
- `domain-web/src/views/detect/DetectView.vue`
- `domain-api/tests/test_detect_job_service.py`
本轮修复方式:
- 保留中央账本原值,不硬改 `detect_job_items`
- 额外补出分布式显示口径
- `distributed_node_stats`
- `display_items_claimed`
- `display_items_running`
- Detect 页面优先显示这个分布式显示口径
- 保留中央 `detect_job_items` 原始值
- 引入“有效统一账本”
- `node_stats`
- `items_pending`
- `items_claimed`
- `items_running`
- `items_completed`
- `items_failed`
- `items_terminal`
- 同时新增 `raw_*` 字段保留中央原始账本
## 关键验证证据
接口验证:
- `detect/job/active`
- `display_items_claimed = 34`
- `display_items_running = 14`
- `distributed_node_stats` 包含:
- 已统一为:
- `items_total = 1000`
- `items_pending = 931`
- `items_claimed = 34`
- `items_running = 14`
- `items_completed = 21`
- 原始账本仍可追溯:
- `raw_items_pending = 950`
- `raw_items_claimed = 25`
- `raw_items_running = 4`
- `node_stats` 已包含:
- `mainland-controller-01`
- `mainland-worker-01`
- `overseas-control-01`
- `unassigned`
- `detect/queue-summary`
- `queue.display_claimed = 34`
- `queue.display_running = 14`
- `nodes` 已含大陆 controller / worker
- 已统一为:
- `pending = 931`
- `claimed = 34`
- `running = 14`
编译验证:
- 后端:
- `python3 -m py_compile domain-api/app/services/detect_job_service.py`
- `python3 -m py_compile domain-api/app/services/detect_job_service.py domain-api/tests/test_detect_job_service.py`
- 通过
- 前端:
- `cd domain-web && npm run build`
单测验证:
- `/opt/domaincheck/domainCheck/.venv/bin/python -m unittest tests.test_detect_job_service`
- 通过
运行验证:
- `domaincheck-api` 已重启成功
- 活跃接口返回新字段正常
- `domaincheck-api`
- 已重启成功
- 线上接口返回统一账本字段正常
## 当前已闭合的问题
@@ -72,46 +88,43 @@
- 大陆 controller 无法 `pull_tasks`
- Detect 页面误判“大陆没跑”
- Detect 节点表格只显示海外与 `unassigned`
- Detect 主统计仍依赖 display 附加字段才能看懂
## 当前剩余问题
当前唯一剩余问题:
- 中央账本与分布式显示口径还不是同一套最终账本
- 还没有做到 item 级逐条统一回写
具体来说:
- `detect_job_items`
- 仍是中央派发账本
- `distributed_node_stats`
- 是运行态 / 投影视角
所以当前页面已经“可观察、可判断”了,但底层仍属于双账本阶段。
- 当前已做到:
- 主统计口径一致
- 节点参与口径一致
- Runtime / Detect 读取同一套有效聚合值
- 当前未做到:
- 大陆执行结果逐条回写 `detect_job_items`
## 当前是否可以继续跑检测测试
当前结论:
- 可以继续跑检测任务测试
- 而且现在 Detect 页面已经能看出大陆节点参与
- 而且现在 Detect 主统计和节点参与都更接近真实执行态
## 当前是否建议直接上线
当前结论:
- 比上一轮更接近上线
- 但还不建议把“检测调度账本”宣称为最终完全统一
原因:
- 现在解决的是“显示正确性”
- 下一步要解决的是“账本统一性”
- 已经比上一轮更接近上线状态
- 如果目标是“后台可以稳定发起检测并看懂谁在跑”,已经基本可用
- 如果目标是“中央账本逐条结果完全统一”,还差最后一层 item 级回写
## 当前优先级判断
最高优先级:
- 设计并收敛中央账本与分布式执行账本的统一规则
- 决定是否继续进入 `detect_result_projection -> detect_job_items` 的 item 级统一
当前不应继续推进:
@@ -119,12 +132,12 @@
- 新模块
- 新页面
- 发布动作
- 与账本统一无关的工作
-检测账本统一无关的工作
## 完成下一轮后的预期
如果下一轮把账本统一策略明确并落地:
如果下一轮把 item 级结果回写规则明确并最小落地:
- Detect 页面将不仅“看起来对”
- 而且底层统计也会真正一致
- 整体可上线程度预计提升到 `94%~96%`
- Detect 不仅主统计一致
- 而且底层逐条账本也会接近最终一致
- 整体可上线程度预计提升到 `95%~96%`