罗田侧:链路断点定位 · 三条根因 · 已修复 · 已补推一张群卡片
智游侧:同口径核查 · 结论「链路是通的,卡在还没发布」
| 时间 | 发生了什么 |
|---|---|
| 11:41–11:52 | 罗田旅游在后台发布 10 篇(含 7 篇甜柿预售系列),该号草稿箱清空 |
| 11:41–11:52 | 企微群【智游大别山晨报群】0 条群卡片 |
| 11:46 / 11:56 | 巡检程序照常每 10 分钟跑一轮:先报「草稿仍在箱」,拿到「草稿已消失」后立刻报读批次文件失败 → 打一行就跳过,没有任何告警 |
7 篇甜柿预售 + 每日一工具 + 本周任务,由我们的出稿器直接建进草稿箱,从来没有写进「待推群」清单。
而「发布后自动推群」的巡检只认那份清单 —— 清单里没有它,就永远不会推。当时的闭环只覆盖了另一条出稿路径(网页版日刊)。
取证:清单里只有当天 08:40 的两条日刊记录;三个出稿器里搜「登记」相关代码 = 0 处命中。
清单里那两条(08:40 日刊)登记的批次文件名,在盘上已经不存在(文件已改名)。程序读到「草稿已发布」,去取内容时抛错 → 老代码只打印一行警告就continue,既不可见也不告警。
取证:日志里 10-11 那两批也是同样的死法 —— 说明这不是今天才断的,是一直静默失败。
「发布后推群」只有一个执行入口,且只服务日刊链路;甜柿预售 / 每日一工具 / 本周任务没有对应通道。
| 部位 | 做了什么 |
|---|---|
| 出稿器 func_daily |
建稿(新建)与原地更新(刷新)两条路都登记进待推群清单;同一稿只登记一条,写失败不影响建稿。
⇒ 以后任何稿一建好,就在系统的监视之下。 |
| 巡检程序 auto_group2 |
新增一段「出稿器稿」专用逻辑:草稿消失 → 按 标题回查公众号真实已发布文章 →
同号当日聚合成一张卡片(企微卡片上限 8 篇)→ 推群。
带运行锁(防两实例各推一份)、审计行(谁发的、发了什么一眼可查)、 过夜未发布自动失效(省接口配额)、已推过的当天不重复。 |
| 批次缺失 | 不再静默:先退当日统一批次 → 再按标题回查 → 都不行写 告警 + 审计,重试 3 轮后停止轮询。 |
| 守卫固定 | 源码级断言:出稿器必须登记(≥2 处调用)、巡检必须读清单且仍会调推群; 副本守卫纳入该巡检程序(关键分裂 0);服务器文件上不可改锁。改坏了当场报错。 |
卡片里的每一篇都是公众号真实已发布文章的标题 + 摘要 + 封面(不是站外链接、不是重复内容)。
0(企微返回 errcode=0),不是「我觉得发了」。draft:func-luotian-2026-10-13 全局仅 1 条。| 实测项 | 结果 |
|---|---|
| 智游 · 今日已发表 | 0 篇(已发表总数 63,最近一篇停在 10-12 21:32) |
| 智游 · 草稿箱 | 11 条(清单见下) |
| 罗田 · 今日已发表 | 12 篇(最近 17:51)· 卡都出了:12:00 一张 8 篇、17:56 一张 1 篇 |
| 差异 | 罗田你发了 → 有卡;智游你没发 → 没卡。链路同一个,差在「发没发」。 |
取证:这 9 条(除 08:40 与 17:09)已在新链路的监视清单里 —— 其中 16:54 那条就是修复后新代码自动登记的, 证明智游侧的监视是「活的」。你在后台点任意一篇「发布」,10 分钟内群里就会出现卡片。
17:02:08 推了一张【新行程】卡到「智游大别山晨报群」—— 走的是「行程页部署后自动推群」那条通道(你 9-10 令「做好链接自动生成海报自动推送」的那条), 不是「公众号帖发布后推群」这条。两条通道并存,别混淆。
发布动作我们一概没碰 —— 罗田那 10 篇是老板自己在后台发的;系统只做了「发现已发布 → 补推群」。
另外查了:这条链的「静默失败」不是今天才有的,历史日志里 10-11 那两批也是这样死掉的(只是当时没被发现)。现在失败一定会留下告警 + 审计行,不会再无声无息。