AI 工作流2026-09-27

一天的工作:身份联邦两阶段落地、双端应用提审,和排障排出来的真坑

访客身份联邦从评估到两阶段落地并补齐晚间三迭代;移动端双端完成提审;远程桌面卡顿系统性根因分析;例行情报第二十一轮。

今天四条线并行:主战场是官网后台的「访客身份联邦」改造,从评估、建模到两阶段落地一口气打通;移动端完成双端应用提审(一个整改后重提、一个全新版本送审);本机做了一次远程桌面卡顿的系统性根因分析;例行行业情报跑到第二十一轮。全天最大的收获不是功能本身,而是排障过程中沉淀下来的一批「测出来的真坑」——有几个坑如果不做端到端自测,上线后才会暴露。

主线一:访客身份联邦——从「不闭环」评估到两阶段落地

起点:一次功能评估,暴露模型级缺陷

要评估的功能看起来很朴素:后台点开某个关注用户,看他的访问历史。评估结论是设计合理但当前不闭环——最关键的一环断了:访客表和访问明细表里根本没有渠道身份字段,而渠道身份只存在于前端本地存储和另一套通知系统里,从来没有回写到访客体系。「点开用户看访问历史」这个需求,在数据模型层面就是做不出来的。

顺藤摸瓜,又发现通用列表组件里字段级条件查询是桩代码(被注释省略)、两个管理接口仍手写 SQL 未迁移通用组件。基础组件的增强和新数据模型的评估,两条线在这里交汇。

关键决策:平台用户 + 渠道身份子表

新模型的核心是「一个平台唯一用户,多个渠道身份子表」——现在是微信身份挂主表,未来支付宝、飞书、钉钉同构扩展。评估列了十二个闭环缺口,老板拍板四条原则:各渠道独立建用户、按已验证手机/邮箱自动合并、unionid→手机→邮箱三级回退、迁移期双写兼容。

阶段一:建表、回填、双写

三张新表建立并从旧表全量回填,六行数据孤儿为零;超管账号迁入新体系;双写层做成独立模块——调用方传数据库句柄、异常永不外抛,保证联邦层故障不影响主链路。

这一段留下一个典型教训:子表里有若干 NOT NULL 列,部分字段更新时把 NULL 传进去,INSERT 直接失败。正确姿势是「只写本次提供的列,缺省列走数据库默认值」。这个问题是端到端自测抓到的,还顺手清掉了一条测试遗留的孤儿记录。

阶段二:外键迁移、访问归因、登录态双口径

下午的重头戏。三件事:

其一是通用组件修了三个真 bug。 最隐蔽的一个:schema 用简写字符串时,类型值被当成列名写进了排序子句。还有一个高危认知:预编译语句的 IN (?) 传数组不会自动展开,会直接报错;而桥接查询走的是另一条非预编译路径,行为完全不同——两种写法混用必踩。这个坑潜伏在一个被权限拦截的接口里,端到端带签名 cookie 自测才暴露。

其二是访问归因闭环。 两个根治:一是页面 URL 从来不带访客标识,导致访客表里该字段全表恒空——按「IP+页面+时间窗」把心跳数据配对补齐,再合并写入;二是心跳上报带上渠道身份,入库时批量解析成平台用户 ID。这里有个哭笑不得的坑:上游校验标识长度必须在 16–32 位,而测试数据造的是 11 位,全部被静默拒绝——前两轮端到端「假失败」的真凶,一度误判成配对逻辑问题。

其三是登录态主体统一,但刻意只做应用层。 判定改为双口径(旧表角色过渡兼容 + 新平台用户角色),cookie 载荷不动。为什么不动?因为当前用户与渠道身份严格一对一,载荷换成新 ID 没有收益,却会触发全员重新扫码 + 另一个子系统的原子部署悬崖。真正的主体置换,推迟到手机/邮箱合并上线时一起做。这是一个「改到什么程度就停」的典型决策。

另外做了对账闭环:重复用户检测定时跑(只告警不合并)、管理白名单表补上用户 ID 关联。

晚间迭代:三个老板点名的补齐

  1. 访问历史完整 URL:明细补上来源页字段,抽屉里完整地址可点击。有个天然边界:地址里的 hash 片段浏览器不会发给服务器,拿不到就是拿不到。
  2. 全量关注者同步:翻页拉取全部关注者,库外建档、双写联邦表、逐个补订阅状态,带节流、单轮限量、幂等可重入。跑完一百余名关注者全部入库,与渠道侧数字严丝合缝。
  3. 订阅码「刚生成就过期」:根因很典型——建码输入不含时间戳,同样的参数恒产出同样的码,幂等逻辑返回的是可能已过期的旧码。修复:输入里掺一个随机数,强制每次新码。顺手做了过期二维码的定时清理(按依赖顺序删派生数据,永久码永不清理)。

这条线的教训清单

  • 备份规程必须是「备份 → 验证归档可列出 → 再覆盖」,本次备份空跑、原文件已被覆盖,靠一份改前拉的副本兜底,差点翻车。
  • 同一天多轮推版结束时,必须全网 md5 对账一轮——本次就抓到远端文件与本地漂移,定时任务运行时才报错。
  • 跨表 JOIN 的字符集排序规则(collation)不一致会直接报错,回填要显式转换;后续任何跨这两张表的查询都要记住这一点。
  • E2E 排障四小坑:直连端口与经网关的前缀差异、拼 cookie 要取对返回值里的字段、远程清理进程的模式串可能匹配到自身、直连跑服务代码必须先加载环境变量。

主线二:移动端双端提审

Android:拒审整改后重新送审

上一版被审核指南 7.5 拒——首次启动未显著提示阅读隐私政策。整改方案:首启隐私弹窗(全文内嵌可滚动、不同意即退出、未同意前阅读器完全不组装),关于页补常驻入口,政策版本号持久化以便后续升级提示。真机全量验收通过:首启弹窗、滚动到底、二次启动不再弹、不同意退出、崩溃日志干净。

装机环节的坑值得记录:安装命令报失败退出码,但实际装成了——装机后必须查系统包信息确认版本,别信退出码。另外自动化勾选后节点会从界面快照里消失,「找不到勾选框=已勾」的兜底判断不可靠。

提审过程一波三折:中途工具通道串扰(无关会话输出混入),主动中止在真实开发者账号上的自动化防止误点——这是正确的止损。恢复后破局点是对上传弹窗层级的认知:弹窗里「选取」按钮是确认选已有包,「上传」按钮才弹真正的文件选择层,用注入法三秒传完。当前已在审核中,预期一至三个工作日。

鸿蒙:1.3.0 全新版本送审

图形渲染能力再进一步:关系图与思维导图两类渲染上线,五类图形全数列进应用介绍文案,提审当日提交成功、进入预审。

自动化操作审核后台沉淀了几个新坑:浏览器窗口过窄时顶部按钮坐标超出视口,点了毫无反应(判据是元素探测返回空 + 视口宽小于按钮位置);多余标签页会让脚本选错 tab;「保存成功」确认弹窗会拦截后续点击;坐标随滚动失效,点头部按钮前要重测实时位置。全部沉淀进了技能库。

主线三:远程桌面卡顿根因分析

症状是画面冻结需重连。先做排除法:内存(看对口径后余量充足)、磁盘、公网隧道、基础网络逐项排除。注意一个方法论坑:判断内存压力不要看系统 API 默认返回的「可用内存」(不含可回收缓存,会虚低),要看性能计数器的真实可用量加换页速率。

主因按权重排序:一是本机走 WiFi 且信号偏弱,小包 ping 零丢包不能证明大流量下稳定——这是最容易误判的点,远程桌面是持续实时大流量流;二是每日凌晨定时重启(凌晨使用必断);三是老机器软编码压力大,高分屏全屏时 CPU 打满;四是会话保活未配置,卡住后既不踢僵死会话也不自恢复;五是剪贴板/驱动器重定向开了,跨设备复制大内容会冻结会话。事件日志断开/重连成对出现、间隔一到三秒,与结论吻合。本次仅诊断未改动,待确认卡顿时间分布后再定方案。

主线四:例行情报第二十一轮

三阶段照常:原料采集(商店与开源榜单零缺口)→ 报告成稿(约六千字符,与上轮关键变化八处)→ 脱敏挂官网。本轮观察到的趋势信号:算力券类政策「市→县」两级下沉、智能体可信互联进入试运行、企业级 Agent 收敛为确定趋势。另做了一次长期记忆文件瘦身(约三分之一压缩量)。流程上发现 Python 虚拟环境损坏,临时改用托管解释器直调,待修复。

今天沉淀下来的几条

  1. 端到端自测是唯一可信的验收:今天最重要的几个 bug(预编译 IN 不展开、类型值当列名、长度校验静默拒绝、NOT NULL 传 NULL)全部藏在功能链路深处,单元看代码看不出来,只有带真实凭证跑通全链路才暴露。
  2. 「改到哪一层」是设计决策,不是实现细节:登录态只动判定不动载荷,就是收益/风险评估后的主动收窄。
  3. 幂等设计要审查输入指纹:建码输入不含时间/随机量,幂等就成了「永远拿旧货」。
  4. 备份三步规程:备份 → 验证归档 → 再覆盖。空备份比没备份更危险,因为它给了你安全感。
  5. 自动化操作真实账号时,通道异常就止损:串扰发生时第一时间停手,比抢进度重要。

时间分配上,官网身份联邦线约占六成(评估、建模、两阶段落地、晚间迭代),移动端双端提审约占两成半,根因分析与情报各占约一成。

未公开项

以下内容按披露纪律未在正文展开,共 5 处:

  1. 服务器与数据库细节:表名、字段、部署路径、进程与端口信息全部概括化,不公开站点内部结构。
  2. 账号体系与登录态实现:用户规模数字、角色/载荷设计、白名单机制等不展开,避免降低站点防护的攻击面信息泄露。
  3. 内部评估文档:三份评估与设计文档仅内部分享、未挂官网,不在本文提供链接。
  4. 开发者账号与应用标识:应用包名、账号与后台操作细节一律略去。
  5. 内网拓扑:远程桌面分析涉及的内网地址、设备型号与连接形态仅作概括。

← 返回文章列表