feat(storage): 引入任务日志记录功能

- 新增 MongoLogRepository 类用于记录任务执行日志
- 在 FlowRunner 中集成日志记录,跟踪流程执行步骤
- 记录登录与业务流程的开始、成功、错误与中止状态
- 支持记录 XML 来源与快照(超长内容自动截断)- 扩展 README 文档说明日志字段与使用方式
-优化分页抓取逻辑,返回页面与记录统计数据
- 统一存储接口,暴露 MongoDB 客户端与数据库属性
- 增加步骤计数与执行时间统计功能
This commit is contained in:
2025-10-20 22:38:13 +08:00
parent f8370eb85e
commit a1a13aae65
4 changed files with 421 additions and 43 deletions

View File

@@ -243,6 +243,27 @@ python main.py
- `<excel_extract>` 用于声明需下载并解析 Excel 文件,当前实现会给出提示,具体逻辑可在 `FlowRunner._handle_excel_extract` 自行扩展。
- `MongoRepository.save_records` 会按照 `flow.unique_keys``unique_columns` 控制去重策略。
## 任务日志
每次执行登录流程或业务流程都会写入 MongoDB 的 `task_logs` 集合,记录执行状态与关键步骤,方便排查问题。
- 基础字段:
- `_id`UUID全局唯一的任务编号。
- `site_id` / `flow_id`:对应模板中的站点与流程。
- `status``start``success``error``aborted`
- `started_at` / `ended_at`UTC 时间戳,`duration_ms` 为执行耗时。
- `steps`:执行步骤列表,包含动作类型、分页点击、抽取结果等摘要。
- `metadata`:附加信息(如保存记录数量、分页页数、是否登录流程)。
- `xml_source`:原始 XML 的来源地址;`xml_snapshot`:当前执行所用 XML超出 50k 字符会截断并标记)。
- `error` / `abort_reason`:当流程异常或被中止时记录详细信息(包含堆栈)。
- 日志写入策略:
- 流程开始时插入 `status=start` 的文档;
- 正常结束时更新为 `success` 并补充 `steps``summary``metadata`
- 运行中出现异常时标记为 `error` 并写入堆栈;
- 收到 `KeyboardInterrupt` 或其它不可恢复的中断时标记为 `aborted`
可以根据 `site_id + flow_id + started_at` 建立索引用于快速查询,也可按 `status` 过滤待排查的任务。
## 开发与调试建议
- 日志级别默认 `INFO`,可自行设置环境变量 `PYTHONLOGGING` 或修改 `configure_logging`