《互联网产品的客户端架构·规模化与架构演进》附录 C 架构评审清单
卷四附录 C:一份可直接投影使用的多端架构评审清单,按承诺边界、设计系统、插件动态化、性能、稳定性、交付、可观测性、安全合规、国际化无障碍、治理迁移十组展开;每题要求填写现状、证据、缺口与 owner;另附快速十问、评审记录模板、常见分歧的处理方式与评审边界,可直接投影或导入工单系统使用。
tag
卷四附录 C:一份可直接投影使用的多端架构评审清单,按承诺边界、设计系统、插件动态化、性能、稳定性、交付、可观测性、安全合规、国际化无障碍、治理迁移十组展开;每题要求填写现状、证据、缺口与 owner;另附快速十问、评审记录模板、常见分歧的处理方式与评审边界,可直接投影或导入工单系统使用。
卷四附录 B:按十类症状组织多端排查手册,包括功能在某端不可用、同一笔订单状态不同、组件样式漂移、发布后白屏、性能退化、线上问题无法定位、第三方 SDK 隐私风险、区域格式错误、读屏不可用与迁移卡住;每类给出先查什么、常见根因、验证方式与预防动作。
卷四附录 A:把承诺、边界、能力、性能、稳定性、交付、可观测性、安全、国际化、无障碍、治理与迁移十二组核心术语与判据压缩成速查表,每项给出定义、判断条件、常见误用与对应章节;另附一页纸十二问与中英术语对照,便于架构评审、跨团队对齐与新人上手时直接引用。
四卷一百八十节讲完,真正要留下的是一个能自查的承诺模型,而不是一份读完的目录。本节把四卷的核心问题整理成十五项收官检查表,用覆盖率与未关闭项生成下一步建议,并给出继续演进、转入巩固与冻结架构三类停止条件,帮助读者判断什么时候该停下来、什么时候只需维护。
平台化不是把组件数量堆上去,而是让承诺、组件、交付、观测、安全与治理六个维度都能拿出证据。本节用成熟度矩阵给每个条目打分,按缺口排名生成改进顺序,再用维度均值、单项底线、证据要求与加权总分四道门槛完成验收,并说明为什么平均分与权重都不能代替单项底线。
同一笔已支付订单在 Web、iOS、Android、小程序和桌面回放,金额、状态与文案只要有一处不同,用户就会怀疑这笔钱去了哪里。本节用可运行的 TypeScript 场景脚本收集五端观测,把差异归为呈现、环境、契约与未知四类,并给出阻断、警告与放行的发布判据。
迁移的终点不是新路径上线,而是旧路径被安全删除。本节给出流量、错误、数据一致与观察期四类退出判据,把回滚资产检查、宣布结束、宽限期与旧路径删除写成状态机函数,并说明每条判据的边界与反例:指标刚好达标算不算过,回滚资产存在但过期算不算就绪,以及删除后无法回滚的代价。
双写不是把同一份数据写两遍就结束,真正决定成败的是写入顺序、次写失败后的降级、双读比对口径,以及兼容窗口何时关闭。本节把顺序、差异率、窗口状态与到期决策写成纯函数,用可复现的样本回答两个问题:数据到底差多少,旧路径什么时候可以删,以及删除之前还需要哪些证据。
绞杀者替换的关键不是一次删掉旧代码,而是让新旧路径同时存在,并按用户、端与功能分桶逐步放量。本节把路由比例、白名单与 holdback、确定性哈希、接管进度和回退写成可测试的纯函数,让每一次请求都能解释自己为什么走新路径或旧路径,也说明如何判断迁移是否真正完成。
从一份永远排不上期的技术债清单出发,把债务治理拆成条目字段、严重度与影响面、偿还排期、逾期标记与季度节奏五部分,给出可运行的 TypeScript 模块与测试。文中说明优先级分数、容量约束、逾期判据与季度摘要,并解释为什么台账不能变成许愿池。
从一次合并后三周无人认领的线上问题出发,把代码所有权拆成路径规则、owner 映射、覆盖度、评审路由与无人负责路径识别五部分,给出可运行的 TypeScript 模块与测试。文中说明优先级覆盖、通配规则边界、兜底 owner 的取舍,以及所有权规则为什么会悄悄失效。
从一次没人记得的架构决策出发,把 ADR 拆成九个必填字段、四态生命周期、集合级完整性校验与契约变更登记,并给出可运行的 TypeScript 模块与测试。文中说明哪些决策该接受、哪些该取代、契约变更如何绑定决策,以及校验失败时应该回退到哪一层。
发布前扫描器报告零错误,上线后仍收到「弹窗关不掉」「读屏走不通」的投诉:自动规则测不到焦点陷阱,也没有严重级别来决定先修什么。本节把规则集、严重级别、加权覆盖度、验收门槛与人工走查清单写成一套可执行的审计模型,并说明为什么覆盖度与门槛必须一起看。
下单失败时错误条只在视觉上出现,读屏用户什么也没听到;优惠券排序只能拖动,键盘用户无法完成;系统开了「减少动效」,页面仍在自动轮播。本节把播报内容、键盘绑定与减少动效、放大字体、高对比三类偏好映射写成可测试的纯函数,并说明去重与里程碑为什么必须进入模型。
读屏用户听到一连串「按钮」,键盘用户按 Tab 从页头直接跳到页脚,弹窗打开后焦点再也出不去。本节把角色、名称、状态与语义节点树写成可校验模型,用 tabIndex 与 DOM 顺序计算焦点顺序,并把跳过、陷阱、丢失三类异常变成可执行的检测函数。
同一版本在德国能刷卡、在巴西只能货到付款、在阿联酋没有在线客服。区域能力不是布尔开关,而是有优先级的矩阵与降级链。本节把支付、物流、地图、客服四类能力、缺失时的降级路径与区域判定优先级写成可测试模块,避免同一区域在不同页面表现不一致,并给出判据与反例。
阿拉伯语用户打开同一张订单页,返回箭头仍指向左边,订单号在双向文本里跳到句子另一端。本节把方向传播、逻辑属性映射、双向文本隔离与图标镜像规则写成可测试的 TypeScript 模块,并说明哪一层负责决定方向、哪些元素该镜像、哪些必须保持原样。
同一笔订单在圣保罗下单、在莫斯科退款时,文案复数、时区换算和货币最小单位会同时出错,三类故障常常互相掩盖。本节把参数化文案、UTC 存储与区域展示、按币种舍入写成可测试的 TypeScript 模块,并给出金额与时间在国际化场景下的判据与反例。
同意不是一个布尔值,而是一台有状态、有版本、可撤回的机器。本节实现未询问、已同意、已拒绝、已撤回四态状态机,演示采集前闸门、目的绑定、版本过期重问与撤回后的分目的清理,并给出可审计的判据与常见错误边界。同意管理不是弹窗文案问题,而是采集链路上的硬闸门。
第三方 SDK 的风险不该靠印象打分。本节用可解释的权重表计算风险分,覆盖权限差异、初始化时机、治理问题清单与下线证据检查,并讨论评分阈值、例外审批,以及「删依赖不等于下线」的工程边界,给出可复算的准入与退出判据。评分只是入口,能否上线与能否下线都要落到证据。