fix(通知): 多设备批次不再逐台报成功;批次汇总瘦身并列出失败设备;设备只显示名字
用户反馈:一条任务覆盖 13 台设备,每台成功都推一条,群里被刷屏;批次汇总里
「任务:抖音养号」与标题重复、「样本:抖音养号」毫无信息量、「stopped」还是英文。
- task_manager:
· **多设备批次不发 `task.device.success`**(批次汇总里已有成功台数;单台任务照发);
失败仍逐台发——那是少数,且要知道是哪台;
· `_BatchTracker` 收集失败设备(`名字(型号):原因`,最多 5 条)并加进批次汇总;
· 设备级事件带 `model`:型号取自**设备池快照**(批次开始时一次查好带下去),
不是 worker 每次连接现采的(那次 `d.info()` 可能超时 → 空),也不查库;
- notifier:
· 聚合窗口口径修正:事件声明 `agg_window=0`(批次结束/服务启停/备份恢复等低频
高危事件)**不再被 hook 的窗口拖住**——原先事件级设置完全失效;
· 「样本」行只在真的合并了多条(>1)时出现,且按**设备**维度写(合并多台时写
任务名每条都一样);与标题重复的字段行(「任务:x」)不再重复渲染;
· 设备名与地址同时存在时**只显示名字**(IP 是给日志看的);
· 补 `stopped`/`failed_devices` 中文标签(原先直接显示英文 key);
- notify_events:批次事件补 `skipped`/`failed_devices` 字段,设备事件补 `model`。
实测(dev 真机 + 假接收端):
批次 2 台 → 只收到 batch.started/finished,无 device.success,汇总 总数2/成功1/跳过1;
单台任务 → 收到 device.success,显示「设备:cs1 / 型号:M2010J19SC」不含 IP。
文档:doc/NOTIFY.md §3(多设备批次怎么发 + 批次消息样例)、§6(窗口口径与注意事项)。
This commit is contained in:
+14
-9
@@ -38,8 +38,10 @@ EVENTS = [
|
||||
["job_id", "job_name", "task_type", "device_count", "serials_preview"],
|
||||
"一次任务开始铺开到 N 台设备", agg_window=0, recommend=True),
|
||||
_e("task.batch.finished", "任务批次结束", "任务批次",
|
||||
["job_id", "job_name", "total", "success", "failed", "stopped", "duration_s"],
|
||||
"整批跑完(含成功/失败/被停台数与耗时)", agg_window=0, recommend=True),
|
||||
["job_id", "job_name", "total", "success", "failed", "stopped", "skipped",
|
||||
"failed_devices", "duration_s"],
|
||||
"整批跑完(成功/失败/停止台数 + 耗时;有失败时列出失败设备与型号)",
|
||||
agg_window=0, recommend=True),
|
||||
_e("task.batch.no_device", "任务无可用设备", "任务批次",
|
||||
["job_id", "job_name", "target"],
|
||||
"触发时一台可用设备都没有(任务空跑)", agg_window=0, recommend=True),
|
||||
@@ -52,22 +54,25 @@ EVENTS = [
|
||||
|
||||
# ---------------- 任务 · 单设备(权威结论点) ----------------
|
||||
_e("task.device.success", "设备任务成功", "任务·单设备",
|
||||
["serial", "device_name", "job_id", "job_name", "attempt", "duration_s"],
|
||||
"某台设备上的任务最终成功", agg_key=_BY_JOB, recommend=True),
|
||||
["serial", "device_name", "model", "job_id", "job_name", "attempt", "duration_s"],
|
||||
"某台设备上的任务最终成功。**只在目标设备只有 1 台时发送**——多设备批次看"
|
||||
"「任务批次结束」就够了,13 台设备就是 13 条刷屏", agg_key=_BY_JOB),
|
||||
|
||||
_e("task.device.failed", "设备任务失败", "任务·单设备",
|
||||
["serial", "device_name", "job_id", "job_name", "attempts", "cause", "msg"],
|
||||
"某台设备上的任务最终失败(带真实原因)", agg_key=_BY_JOB, recommend=True),
|
||||
["serial", "device_name", "model", "job_id", "job_name", "attempts",
|
||||
"cause", "msg"],
|
||||
"某台设备上的任务最终失败(带真实原因与型号)", agg_key=_BY_JOB, recommend=True),
|
||||
_e("task.device.offline", "设备离线放弃", "任务·单设备",
|
||||
["serial", "device_name", "job_id", "job_name", "error"],
|
||||
["serial", "device_name", "model", "job_id", "job_name", "error"],
|
||||
"设备离线,不重试直接失败", agg_key=_BY_JOB, recommend=True),
|
||||
_e("task.device.error", "单次尝试异常", "任务·单设备",
|
||||
["serial", "device_name", "job_name", "attempt", "error"],
|
||||
["serial", "device_name", "model", "job_name", "attempt", "error"],
|
||||
"某次尝试抛异常(后面还会重试,噪音较大)", agg_key=_BY_JOB),
|
||||
_e("task.device.retry", "设备任务重试", "任务·单设备",
|
||||
["serial", "device_name", "job_name", "attempt", "next_attempt", "delay_s", "reason"],
|
||||
"即将重试", agg_key=_BY_JOB),
|
||||
_e("task.device.stopped", "设备任务被停止", "任务·单设备",
|
||||
["serial", "device_name", "job_name", "attempt", "phase"],
|
||||
["serial", "device_name", "model", "job_name", "attempt", "phase"],
|
||||
"用户手动停止 / cron 停止", agg_key=_BY_JOB),
|
||||
_e("task.device.preempted", "设备被抢占", "任务·单设备",
|
||||
["serial", "device_name", "job_name", "preempted_job_id", "preempted_job_name"],
|
||||
|
||||
Reference in New Issue
Block a user