04-白标化内核抽取方案评审.md

评审结论:保留模式 A,否决“大内核一次抽取”,改为“小内核、契约化模块、逐实例迁移”

直接修正三条基础假设:


① 内核/模块边界:先抽技术机制,不把同名业务域直接塞入内核

修正后的边界

对象直接修正依据
构建、配置、模块加载、日志与健康检查进入最小内核;端侧骨架可复用,导航和工作台布局归应用组合层同技术栈支持工程复用,但材料未证明三端业务结构一致
订单、支付、退款先作为可版本化交易模块,通过接口供业务调用;支付渠道采用适配器同名页面不足以证明订单状态机、库存、价格、退款和资金规则一致,具体规则『材料未涉及』
商户入驻、审核、工作台、账单归商户模块,不强制所有实例加载两实例有商户,不代表第三实例必然有商户;账单还依赖交易与结算语义
核销、评价、消息拆开:核销与评价归业务模块;消息分发接口和渠道适配可进入平台能力,业务触发规则留模块三者生命周期和依赖不同,材料没有必须打包的依据
用户、地址、设置、隐私身份标识、认证与授权接口进入内核;地址归可选资料模块;设置与隐私采用版本化配置及流程地址不一定适用于所有业务;隐私涉及采集与授权行为,不只是页面文案
“鉴权三通道+JWT”抽身份提供方、会话验证、授权与审计契约,不固化为三通道;JWT 为实现选项两实例登录入口不同,未证明三通道是通用模型
归因引擎暂留归因模块,统一事件和查询契约后再判断能否共享实现attribution.py 与扫码事件字段不能证明归因窗口、去重和结算规则一致
上传与对象存储接口、安全校验机制进入内核;存储供应商、桶和访问策略通过适配器配置材料存在不同上传和域名实现,适合隔离供应商差异
AGENTS/TASKS/docs/cronAGENTS、文档模板归工程工具链;cron 的调度机制与业务任务分离团队管理文件不是运行时业务内核,目录同构不等于必须一起发布
wallet/vouchers/credits/会员/分销等保留为模块;明确资金、积分、券之间的接口和所有权,不因“两边都有”自动升格这些能力有独立业务规则,具体账务、清结算要求『材料未涉及』
潮汐、海拔、气象、地理及时区品牌地点归配置;时区、单位、坐标约定归公共配置;计算、告警及数据源归业务模块或适配器海拔与潮汐不只是文案,会影响数据解释和业务行为

应补进内核的不是更多业务,而是模块治理机制:模块依赖检查、配置校验、版本兼容、迁移执行接口、事件契约、可观测性和授权执行机制。

依据:材料已有“模块开关”,但未定义关闭后如何处理接口、权限、任务、依赖及历史数据。

每个模块增加 module.manifest,至少声明:

模块标识/版本/依赖
API与事件契约
权限与数据归属
迁移与种子版本
页面、后台入口与定时任务
启停约束与兼容范围

规则:模块开关不等于隐藏页面,更不等于允许删除数据。依据:订单、退款、账单等存在跨模块生命周期;材料尚未给出停用策略。


② 重构冻结风险:冻结契约和迁移切片,不冻结两个项目

替换原来的“逐一对比、两实例一起改用内核包”

  1. 先记录两个实例的发布基线。

固定代码版本、数据库迁移版本、关键 API 契约及回归用例。

依据:持续迭代条件下,没有基线就无法区分原有缺陷、业务变更和抽取回归。

  1. 先完成一个低耦合纵向切片。

建议从配置加载、品牌注入、构建产物或存储适配切入;暂不从订单状态机和支付退款开刀。

依据:后者影响交易闭环,且其差异与测试保障『材料未涉及』。

  1. 只冻结该切片的公共契约;业务功能继续在原路径迭代。

对破坏性变更设评审入口,以适配器兼容;安全修复和线上故障修复保留例外通道。

依据:全项目冻结会阻塞两个现有实例;契约冻结能缩小协调范围。

  1. 内核包固定版本,逐实例升级。

一个实例通过验证后,另一个再接入;不让两个实例自动追随内核最新版本。

依据:模式 A 是单租户复制,适合独立发布和故障隔离,而非强制同步升级。

  1. 数据库采用兼容性迁移,单独验证回滚。

先新增兼容结构,再切换读写,最后清理旧结构;涉及写入语义变化时验证数据恢复或前向修复。

依据:“代码可回滚”不代表已写入的数据可以回滚,材料对此无方案。

排期修正

将原 5—8 天全面抽取改为:

5—8 天完成边界盘点、一个低风险切片、两个实例的契约验证及一次回滚演练;后续按实测结果估算。此为建议时间盒,不是保证工期。

依据:现有材料只有目录级比较,不足以支撑全面迁移的工期判断。kailash 可以先行验证,但不能以“小而全”为由默认它是领域标准;“全”的证据『材料未涉及』。


③ tenant.yaml:从品牌清单升级为“实例声明”,不承载全部运行数据

建议拆成四类:实例声明、环境覆盖、密钥引用、版本化种子数据。

配置块必补要素依据
identity稳定实例 ID、配置 schema 版本、负责人引用品牌名可能变化,不能承担稳定身份;材料无 schema 演进机制
release内核版本、模块锁定清单、配置版本、兼容要求独立实例需要可重现构建和独立升级
environments开发/测试/生产环境、API 地址、回调域名、合法域名及部署目标一个域名和 appid 不足以区分环境及调用链
brand名称、图标、主题、资产地址、端侧展示信息材料已涉及,但需结构化并校验资产完整性
modules模块版本、依赖、业务参数、启停与数据保留策略布尔开关无法表达模块兼容和停用后行为
navigation各端页面注册、菜单、入口和路由绑定材料提出页面注册表,却未进入 tenant.yaml 清单
authorization角色—权限绑定、数据范围、身份关联规则“居民/领队”只是角色名称,不能直接决定可访问数据
integrations支付、消息、存储、地图及外部数据源的适配器配置和密钥引用上传、支付、气象等已出现,但供应商与接入差异未建模
locale时区、语言、币种、计量单位、坐标约定、业务区域材料将地理差异降为内容,遗漏计算和展示语义
privacy主体信息引用、隐私政策版本、采集能力声明、保留与删除策略材料有隐私页面,但未定义实例级数据处理差异
dataDB/缓存/存储资源引用、迁移版本、种子版本、幂等初始化规则独立 DB 不等于所有资源都已隔离,也不保证重复初始化安全
operations健康检查、告警归属、备份恢复策略、审计及回滚配置引用“验证 health”不足以支持长期交付
delivery小程序发布身份引用、目标环境、构建与交付验收项“10 分钟出新小程序”混淆生成产物与平台发布

补充两条约束:

原“校验 9 项→生成 9 项”应改为具名、可自动执行的校验与产物清单;具体九项内容『材料未涉及』,不能据此验收。


④ 第三实例:优先真实的、能反驳当前假设的需求

直接修正:第三实例选“有真实负责人、明确最小闭环、至少一项结构差异”的独立需求,不选纯换皮品牌。具体品牌『材料未涉及』,不能指定。

筛选条件:

依据:第三实例的价值是发现两实例共同遗漏的变化维度,而不是再次证明名称和主题可替换。

同时明确:

验证对象可以证明什么不能证明什么
虚构品牌初始化、构建、配置校验、部署冒烟真实业务适配与商业交付能力
YOS 迁移旧系统兼容性、迁移完整性第三个独立需求的泛化能力
真实第三需求新业务下的边界稳定性与交付成本尚未覆盖的全部行业通用性

没有真实需求时,先做虚构样板,但验收名称改为“初始化流水线验证”。

“10 分钟”仅作为前置资源已齐备后的自动生成/部署目标;账号准备、证书、数据接入、平台审核时长等『材料未涉及』,不得计为已经解决。


⑤ 与灰度/提审的排序:当前发布闭环优先,白标化并行打底,核心迁移后置

当前灰度进度、提审日期、阻断缺陷及审核状态均『材料未涉及』。因此采用以下默认排序,不假定当前已到某一阶段。

建议顺序

当前版本业务闭环与合规检查 → 灰度验收 → 提审基线冻结 → 提审及发布验证 → 分切片迁移 → 真实第三实例验证。

依据:白标化抽取会同时改变构建、配置和业务路径;与当前提审版本混合,会扩大回归范围并削弱故障定位能力。

可并行做与必须后置的工作分别是:

可并行,不侵入当前发布基线默认后置
两实例契约盘点、schema 设计、模板生成器、回归测试、独立环境原型替换订单/支付/退款实现、改身份权限模型、破坏性数据库迁移、两个实例同步升级

依据:前者可以独立验证,后者直接改变线上行为和数据兼容性。

冈子 miniprogram-v2 可以立即内建配置入口、适配器接口和模块注册机制,但不要因此要求 YOS 同期迁移。

依据:材料说明 v2 正在重做,适合低成本预留接口;没有证据表明两项目必须同步切换。

若白标化中的某项修改确实是当前提审的必要条件,只合入满足发布的最小修复,单独回归,不捆绑整套内核重构。

依据:发布阻断应按实际依赖处理,而不是让平台化目标扩大当前版本范围。


建议直接替换原方案的验收目标

在不扩大当前发布风险的前提下,完成最小内核与模块契约定义;以一个低风险切片证明两实例可固定版本、独立升级、可验证回退;以真实第三需求检验泛化能力。初始化速度只衡量自动化链路,不代替业务验收与提审上线。

依据:这套目标分别验证了复用、迁移安全和新实例适配,避免用“目录相似、生成成功、工期完成”替代架构有效性。