任务执行情况汇总报告
src/tasks/daily/finally_file.py 提供任务完成时生成临时汇总报告的能力,其他任务也可复用。
目录结构
汇总文件保存在临时目录下,按软件名和任务名分层:
{tempdir}/ok-ef/{任务名}/{任务名}_{时间戳}.txt
例如日常任务产生:
C:\Users\xxx\AppData\Local\Temp\ok-ef\日常任务\日常任务_20260709_143000.txt
目录自动构建,无需手动配置。旧文件超过 7 天自动清理。
核心函数
from src.tasks.daily.finally_file import create_task_summary_report
summary_path = create_task_summary_report(self, base_dir, summary_info)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
task |
object | 任务实例,需有 .name 属性 |
base_dir |
Path | 基础目录 |
summary_info |
dict | 汇总数据(见下方) |
keep_days |
int | 历史文件保留天数,默认 7 |
summary_info 支持字段
| 字段 | 类型 | 说明 |
|---|---|---|
status |
str | 执行状态文本 |
actual_repeat_total |
int | 实际执行轮数 |
per_round |
list[dict] | 每轮详情(含 account_user/account_id/success/failed/skipped/all) |
all_fail_tasks |
list[(int, list[str])] | 旧格式:每轮失败任务列表 |
exception |
str | 异常信息 |
current_task |
str | 异常时正在执行的任务名 |
failure_details |
dict | 按 account_id 分组的失败消息,{ account_id: { task_name: msg } } |
输出内容示例
日常任务执行情况汇总 - 2026-07-09 14:30:00
==================================================
执行状态: 完成
执行轮数: 2
失败消息:
=== 账号: alice ===
失败任务:
- 任务D : 未找到目标
--- 第 1 轮 (账号: alice) ---
总任务数: 10 | 成功: 8 | 失败: 1 | 跳过: 1
成功任务:
任务A, 任务B, 任务C
失败任务:
任务D
跳过任务:
任务E
--- 第 2 轮 (账号: bob) ---
总任务数: 10 | 成功: 10 | 失败: 0 | 跳过: 0
当 per_round 是非空列表时,报告输出每轮详情,不会再追加旧格式的“所有任务执行成功”提示。只有未提供 per_round 且 all_fail_tasks 为空时才输出该提示。若同一秒内文件名冲突,函数会改用带 _压根_QWQ000(随后递增)后缀的文件名,不会覆盖已有报告。
其他工具函数
| 函数 | 用途 |
|---|---|
get_software_name() |
从全局配置读取 gui_title(默认为 "ok-ef"),用于构建目录 |
format_failure_details_by_account(per_round, failure_details) |
格式化按账号分组的失败详情 |
decode(text) |
简单 XOR 解码,用于混淆配置中的敏感字符串 |
打开开关
在 DailyTask 中通过配置项 自动打开汇总文件(默认 True)控制是否在创建后用系统默认程序打开。
- 开启:创建后调用
os.startfile或webbrowser.open自动打开 - 关闭:仅创建文件,不打开
开关仅控制打开行为,不影响文件创建。