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,131 +1,138 @@
# TASK_BOARD
更新时间2026-04-19 02:33 CST
更新时间2026-04-19 02:40 CST
## 当前主批次
唯一主批次:`G1-检测总览口径统一批`
唯一主批次:`H1-检测账本统一最小落地批`
目标:
- 不进入新功能实现
- 不扩展控制面
-收口 Detect 页面“大陆明明在跑,但页面像没跑”的口径问题
- Detect 主账本口径从“双轨显示”收敛到“统一后的有效口径”
## 本轮已完成
本轮完成了最小可见修复
本轮完成了最小统一落地
- `detect/job/active`
- 新增:
- `distributed_node_stats`
- `display_items_claimed`
- `display_items_running`
- `display_items_completed`
- `display_items_failed`
- `display_active_node_codes`
- `detect/queue-summary`
- 新增:
- `queue.display_claimed`
- `queue.display_running`
- `nodes` 已切到分布式显示口径
- `DetectView.vue`
- 已优先显示分布式口径
- 节点表格已优先显示 `distributed_node_stats`
- `detect_job_service.py`
- 新增统一账本聚合逻辑
- `_build_effective_node_stats`
- `_build_effective_summary`
- `active_job` 主字段已切换为统一后的有效值:
- `items_pending`
- `items_claimed`
- `items_running`
- `items_completed`
- `items_failed`
- `items_terminal`
- `node_stats`
- 保留中央原始账本供追溯:
- `raw_items_total`
- `raw_items_pending`
- `raw_items_claimed`
- `raw_items_running`
- `raw_items_completed`
- `raw_items_blacklisted`
- `raw_items_failed`
- `raw_items_terminal`
- `raw_node_stats`
- 新增单测:
- `domain-api/tests/test_detect_job_service.py`
## 当前结果快照
接口验证结果:
- `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` / `distributed_node_stats` 已统一为:
- `mainland-controller-01`
- `mainland-worker-01`
- `overseas-control-01`
- `unassigned`
- `unassigned = 680`
- `detect/queue-summary`
- `queue.display_claimed = 34`
- `queue.display_running = 14`
- `nodes` 已包含:
- `mainland-controller-01`
- `mainland-worker-01`
- `overseas-control-01`
- `unassigned`
- 主字段已统一为:
- `pending = 931`
- `claimed = 34`
- `running = 14`
运行侧证据
验证结果
- `mainland-controller-01`
- `runtime.pull_tasks`
- `job_id = 87`
- `status = success`
- 大陆 controller / worker 仍在执行中
- `python3 -m py_compile`
- 通过
- `/opt/domaincheck/domainCheck/.venv/bin/python -m unittest tests.test_detect_job_service`
- 通过
- `domaincheck-api`
- 已重启并验证通过
## 当前结论
这轮已经把“Detect 页面看不出大陆参与”这个核心观感问题修掉了一大半
这轮已经把“中央账本原值”和“分布式 display 附加值”进一步收敛成一套主展示账本
现在的 Detect 页面口径变成:
现在的口径变成:
- 中央原始账本仍保留
- `items_total = 1000`
- `pending = 950`
- `claimed = 25`
- `running = 4`
- 页面展示口径新增分布式视角
- `display_claimed = 34`
- `display_running = 14`
- 节点列表能直接看到大陆 controller / worker
- 主字段
- 直接反映当前统一后的有效检测账本
- 原始字段:
- 仍保留中央派发账本,供排障和审计
这意味着
- Detect 页面不再只是“看起来对”
- Runtime / Queue / Detect 主视图开始吃同一套有效统计
## 当前唯一剩余问题
唯一剩余问题:
- 中央账本与分布式显示口径仍是“双轨
- 这 still 是“聚合统一”,还不是“逐条 item 真正回写统一
这不是 bug而是当前架构现状
也就是说
- 中央 `detect_job_items` 统计的是海外控制面原始派发账本
- 大陆拉批后的本地执行账本在 runtime / projection 侧
当前已经做到
- 页面不再误判“大陆没跑”
但还没做到:
- 把两套账本真正收敛成一个最终一致的统一任务账本
- 当前已经解决:
- 主统计口径一致
- 节点参与显示一致
- 当前还没解决
- 大陆执行结果逐条回写 `detect_job_items`
## 候选批次
### Candidate H1
### Candidate I1
名称:检测账本统一设计批
名称:检测结果逐条回写设计批
进入条件:
- 用户确认下一轮继续深入“中央账本与分布式执行账本统一”
- 用户确认要继续把聚合统一推进到 item 级一致
范围:
- 设计统一账本规则
- 不直接大改执行链
- 明确 pull / ack / result sync 后中央账本应如何回写
- 设计 `detect_result_projection -> detect_job_items` 的最小映射方案
- 不直接重做整条执行链
### Candidate H2
### Candidate I2
名称Detect 页面文案微收口
名称Detect / Runtime 文案统一
进入条件:
- 如果用户只想先把页面提示清楚
- 如果用户只想进一步把“raw vs effective”提示清楚
范围:
- 在 Detect 页面明确标注:
- “中央账本视角”
- “分布式执行视角”
- 补统一文案
- 不再扩逻辑
## 暂停项
@@ -141,4 +148,4 @@
下一轮唯一应该继续做的事情:
- 明确中央 `detect_job_items` 与大陆 runtime 投影之间的统一账本策略
- 明确是否要继续进入 item 级结果回写统一