butubb
621d48c800
feat(日志): 任务步骤明细表 + 「日志 → 步骤明细」面板(按设备/任务/时间过滤、按运行归组、导出 CSV)
文本日志只能 grep,"这台设备这次运行为什么失败"翻起来很费劲。新增一张
**结构化**的步骤明细表,把"哪一步、什么类型、哪个选择器、结果、耗时"落库。
- core/models.py:新增 task_step_log(run_id/job/设备/step_path/selector/
result/detail/duration_ms),索引 run_id、created_at、(serial,created_at)、
(job_id,created_at);
- core/step_log.py(新):**专用写线程 + 有界队列**批量落库——步骤执行是热路径,
任务线程只 put_nowait(实测 9000 次入队 31ms),队列满丢弃并计数,绝不阻塞;
另有保留期清理(默认 14 天,每日 04:13 + 每次启动);
- tasks/generic/task.py:_exec_one 记一条(异常=error / handler 返回 False=miss /
未知类型=unknown / 概率未触发=skip);_exec_steps 维护路径栈得到 "2.1.3"
这样的嵌套位置;**单次运行封顶 2000 条**——forever 循环任务否则会写爆表;
- 运行上下文 ctx(run_id/job_id/job_name/device_name)由 TaskManager 生成,
经 create_worker(serial, params, ctx=None) 传入 worker(扩展点向后兼容);
- 接口:/api/step_logs(过滤+分页)、/runs(按运行归组)、/filters(下拉选项)、
/download(CSV,带 BOM);
- 前端:日志页拆成「文件日志 / 步骤明细」子分栏 + static/admin/steplog.js。
红线:新表自动进备份覆盖清单(SUMMARY_TABLES 由元数据派生),已补
TABLE_LABELS 中文标签,导出实测 14 张表、coverage_missing 为空。
文档:DATA_MODEL §2.8/§1、API §10.2、ARCHITECTURE §1.1/§2.2/§3.1、
DEVELOPMENT §5.2 与红线表、DEPLOY §5.2、TASK_DEV §8.3、README。
2026-09-16 08:58:43 +08:00
..
2026-09-10 21:43:08 +08:00
2026-09-10 21:43:08 +08:00
2026-08-30 10:57:07 +08:00
2026-09-15 13:55:14 +08:00
2026-08-20 10:51:54 +08:00
2026-09-13 10:38:13 +08:00
2026-09-15 13:55:14 +08:00
2026-09-11 11:03:38 +08:00
2026-09-16 08:58:43 +08:00
2026-09-16 08:58:43 +08:00
2026-09-16 08:58:43 +08:00
2026-09-15 14:29:11 +08:00
2026-09-15 13:55:14 +08:00
2026-09-04 14:33:28 +08:00
2026-08-15 15:22:55 +08:00
2026-09-16 08:58:43 +08:00
2026-09-16 08:58:43 +08:00
2026-08-11 09:06:59 +08:00
2026-09-13 23:08:59 +08:00
2026-09-16 08:58:43 +08:00
2026-08-07 13:55:48 +08:00
2026-09-14 08:14:11 +08:00