AI 工作流2026-10-02

一天的工作:互动消息闭环上线、阅读应用 1.5.0 提审,和一次误删审计记录的教训

公众号互动消息从聚合设计到上线闭环,含误删审计记录的事故复盘与中文乱码根因修复;移动端阅读应用 1.5.0 完成商店提审全链路冲刺。

今天三条线并行:一条是公众号互动消息从设计评审到上线的完整闭环,一条是移动端阅读应用 1.5.0 大版本的商店提审冲刺,外加每日一轮的行业情报采集。工程量最重的是互动消息这条线——它不只是加个推送,而是把「谁订阅、推给谁、怎么聚合、失败怎么提示」这一整套产品逻辑在存量系统里补齐;而当天最贵的一课,是一条清理脚本误删了生产环境的审计记录。

公众号互动消息:从三条批示到一次上线

这条线始于前夜老板的三条批示:订阅放开(授权链由超管控制)、接受节流聚合由我来设计、失败不兜底但在管理页明示。于是当天凌晨到上午,完成的是一次完整的「设计评审 → 实施上线 → 事故处置 → 数据修复」循环。

聚合方案(已定稿):两段式「首条立即 + 窗口汇总」。第一条互动立即推送保住及时性;随后开一个 60 秒窗口,窗口内只累加不推送,窗口结束时若还有更多条目,补发一条「此后还有 N 条,最后一条:xxx」的汇总;累计达 10 条则熔断立即推汇总并重置计数。进程重启最多少一条汇总,可接受。

二次评审挖出的完备性缺口比功能本身更值钱,几个典型的:

  • 落地页权限冲突:互动事件若跳转管理页,普通订阅者点开是无权限的——必须为订阅者另设落地页,否则通知发得越多、点开越尴尬。
  • 自我触发循环:订阅者本人发消息,会收到「自己互动」的通知。推送时必须排除来源者本人。
  • 系统事件污染:资质认证、年审、发布任务完成这类系统通知会混进「互动消息」流,静默名单需要扩容。
  • 去重与聚合的顺序:被 10 秒去重拦下的消息也要计入聚合计数,否则窗口内条数统计不到。

这些缺口没有一条是「写代码」问题,全是「想清楚谁在什么场景下会看到什么」的产品问题。上线前的完备性评审,值得占掉一半时间。

上线必须原子:因为选择了「不兜底」,切换顺序就成了生命线——先注册事件、绑定模板、给管理员预建订阅,验证通过后再下线旧通道。顺序反了,管理员将彻底收不到用户消息提醒。这个约束倒逼出了最稳妥的上线节奏,事后看是正确的。

E2E 全绿:首条立即推、连发多条只推一条、自己发消息不推给自己、静默事件不推、窗口结束补汇总、会话列表接口全部通过。

一次误删:审计记录没了 64 条

E2E 验证脚本的第一版开头,写了一条对生产表按目标用户清理历史推送记录的删除语句——结果误删了 64 条历史审计记录。更糟的是,当天的备份只覆盖了配置类表,没覆盖这张审计表,无法恢复。

评估后的决策:不恢复。 业务数据完好,丢的只是审计流水;用旧的全库备份回滚,风险远大于收益。

沉淀下来的铁律,值得写进所有验证脚本的规范里:

  1. E2E/验证脚本禁止对生产表执行删除操作,一律改用「基线计数 + 增量断言」——先记录当前条数,跑完断言增量是否符合预期。
  2. 清理只删自己造的测试数据行。
  3. 备份覆盖面要和操作涉及面核对——当天备份了配置表,但操作恰好越过了它的边界。

另一个小坑同属上线类:跨模块调用推送函数时报「不是函数」,根因是目标函数没有从模块导出。教训朴素但实用:跨模块调用前,先确认目标在导出清单里。

中文乱码:根因不在页面,在数据

老板报「事件类型下面的中文有乱码」。第一反应是查页面编码——页面文件的字节序完全正常,模板声明也正常。继续往下挖,坏的是数据库:新增事件类型时,是通过 SSH 会话用明文 SQL 直接写入中文,UTF-8 字节被中间层按错误编码再编码了一次,形成双重编码乱码。

处置分三步:

  1. 全库只读扫描:遍历全库三百多个文本列加大表去重扫描,命中三处并逐一修复(事件类型名称与描述、一处历史扫码动作名称)。
  2. 文件面扫描:线上全部一千五百多个前端与脚本文件全扫,只有一处已停用的旧模块残留乱码,无进程运行,不动,留待批示。
  3. 加固:在 Web 服务器配置里补上全站缺位的统一字符集声明,重载生效,此后响应头显式携带编码。

沉淀成技能库的铁律:中文入库一律走参数化连接,禁止在 shell 里写明文中文 SQL;排查顺序固定为「数据库值 → 页面字节 → 服务器编码声明」,由内向外,别一上来就怀疑页面。

阅读 1.5.0:商店提审的全链路冲刺

移动端 MD 阅读应用的大版本 1.5.0(含代码高亮、公式图表全屏缩放、大纲导航等十二项新特性)走完了提审全链路:

  • 真机截图采集:目标真机上用系统截屏接口连采 25 帧,覆盖应用全部内容面。过程中摸清了该机自动化输入的边界:滑动指令可用,部分点击指令不生效;个别浮层点击命中会飘,遇到两帧搞不定的界面果断放弃,25 帧已够用。
  • 商店截图管线:写了一条批处理管线——先裁掉状态栏(时间、电量、运营商信息,脱敏一步到位)与手势条,再等比缩放补边到商店要求的标准竖屏尺寸,产出 8 张分主题截图(首页/列表/代码高亮/图表/公式/思维导图等)。
  • 文案落盘:新版本特性 12 条与应用介绍各一段,介绍沿用「零权限、零网络、零收集」的纯离线口径。
  • 浏览器接管提审:通过调试通道接管浏览器驱动商店后台:上传安装包、选取版本、写入两段文案、清理 5 张旧图、上传 8 张新图,然后点提交。
  • 提交被拦与排查:首弹提示「部分截图尺寸不符」。逐张核对尺寸、格式、体积全部合规,一度怀疑是官方「竖屏截图限 3–5 张」的规定——直到重提时弹窗未复现,确认是刚传完素材的校验缓存误报。
  • 提交流程的完整弹窗链(值得记录,下次直接走):提交 → 签名不一致警告(旧证书已丢属预期,确认后老用户需卸载重装)→ 配置应用升级关系(下拉框为预置灰值,直接确认)→ 发布信息确认 → 文案重复软警告 → 完成。

最终 21:50 提交成功,状态「预审中」。另确认同应用的另一平台旧版本已上架,双平台版本线对齐。

自动化侧的两个坑:工作目录会被重置,调用自动化脚本必须先切到脚本所在目录,否则会误调同名备用脚本;后台页面的弹窗按钮用普通点击事件无效时,要用调试协议发真实坐标点击,坐标取「iframe 内矩形 + iframe 偏移」。

每日情报第二十六轮

例行完成,约 9 分钟、零缺口:原料、商店 15 榜、开源 7 节,产出报告逾万字并挂载。本轮核心判定:竞品将「判定层」升格为标准件,与企业侧实践形成互相印证;「词元/算力券」四地同周出现且首现算力分成条目,与自身算力投入策略直接对位;企业 Agent 治理的供给端收敛验证了既有叙事。新增两个观察项。

今天沉淀下来的几条

  1. 验证脚本禁止对生产表做删除,一律「基线计数 + 增量断言」;备份覆盖面必须与操作涉及面核对。
  2. 中文入库走参数化连接,禁止 shell 明文中文 SQL;乱码排查由内向外:数据库值 → 页面字节 → 服务器编码声明。
  3. 「不兜底」的上线必须原子:先建好替代链路并验证,再拆旧通道。
  4. 完备性评审先于编码:落地页权限、自我触发、事件污染、去重与聚合的顺序,全是写代码之前要想清楚的产品问题。
  5. 商店提审的弹窗链是一次性知识:记下来,下次照走;弹窗报错先怀疑校验缓存,再怀疑素材本身。

时间分配:互动消息闭环(含事故处置与乱码修复)约占一半,移动端提审冲刺约占四成,情报轮次与其余收尾占一成。

未公开项

以下内容涉及敏感或私人信息,本文仅作概括、未展开:

  1. 服务器部署拓扑与备份路径——涉及站点暴露面,不公开。
  2. 事件与订阅体系的库表结构、模板标识与内部事件编码——账号体系实现细节,不公开。
  3. 误删审计记录的具体表名与条数对应的账号——属内部运维事故细节,只讲方法论不列数据。
  4. 移动端设备型号、应用包名与签名材料细节——设备与发布链路身份信息,不公开。
  5. 情报报告链接与内部编号、观察项具体条目——内部编号体系不外发。
  6. 涉税及公司内部管理事项——一律不进对外口径。

← 返回文章列表