‌
‌
‌
‌
‌
‌
QIYA · 系统交付实践
首页交付闭环
生态店铺 GMV 清洗迁移供应链订单与履约中台激励结算与业财一体化异构数据同步平台复盘AI 研发工作台参考方法论如何放大
总规程(可复制给 AI)认知:价值上移需求:体检与规格设计:上下文与边界执行:工作单与编排AI 工程操作系统验证:闭环与缺陷库运行:排查与业务解答交付物标准
总规程(可复制)需求体检清单需求到规格模板Agent 工作单模板验收与验证清单AI 代码缺陷检查表
关于
首页交付闭环
证据生态店铺 GMV 清洗迁移供应链订单与履约中台激励结算与业财一体化异构数据同步平台复盘AI 研发工作台参考方法论如何放大
方法论总规程(可复制给 AI)认知:价值上移需求:体检与规格设计:上下文与边界执行:工作单与编排AI 工程操作系统验证:闭环与缺陷库运行:排查与业务解答交付物标准
资产包总规程(可复制)需求体检清单需求到规格模板Agent 工作单模板验收与验证清单AI 代码缺陷检查表
关于本站

第三部分 · 设计

08

架构边界:让变化留在该在的位置

用责任、输入输出、禁止依赖和可替换点描述模块边界,并用工具把关键边界变成机器可检查规则。

总规程★ 把这一页交给你的 AI
第一部分:认知01. 工程师价值没有消失02. AI-native 工程交付者
第二部分:需求03. 需求体检04. 需求反问清单05. 从需求到规格
第三部分:设计06. 上下文工程07. 规格驱动开发08. 架构边界
第四部分:执行09. Agent 执行10. Agent 工作单11. 多 Agent 编排12. 工具工作台13. AI 工程操作系统
第五部分:验证14. 验证闭环15. AI 代码缺陷库
第六部分:运行与解答16. 运行排查与业务解答17. 交付物标准
第七部分:实证18. 方法论如何放大
配套资产需求体检清单需求到规格模板Agent 工作单模板验收与验证清单AI 代码缺陷检查表

THESIS / 核心主张

模型优化眼前任务,架构保护未来变化;没有边界时,最快的局部实现往往制造最高的长期成本。

OPERATING STEPS / 执行动作

把原则变成可以检查的动作。

  1. 写清模块负责与不负责什么
  2. 外部依赖通过稳定契约进入
  3. 禁止跨层直连和隐式共享状态
  4. 用依赖检查、契约测试和权限限制守边界

OUTPUTS / 交付物

每个阶段都要留下可复用的产物。

01边界规格
02依赖规则
03契约测试

APPLIED CASE / 项目映射

这条方法如何落到真实项目?

平台取数、退款和品类差异留在各自模块;总控只负责编排和共性运行控制,不复制平台业务规则。

生态店铺 GMV 清洗迁移异构数据同步平台

FULL CHAPTER / 完整正文

从结论摘要,继续读到判断依据和执行细节。

正文保留 site-v3 的完整论证结构,并将贯穿示例改写为生态店铺 GMV 清洗迁移;原作者身份、原演示案例和未经证实的个人成果不进入本站。

架构边界:防止 AI 把局部正确写成系统混乱

AI 擅长找到当前任务的最短实现路径;工程师必须让这条路径不能穿过不该穿过的边界。

一、AI 为什么天然倾向越界

当模型需要一个字段,直接访问 Mapper 比通过领域契约更短;当某个平台有特殊规则,在总控里加一个 if 比维护独立执行器更快;当测试需要完整结果,先刷新汇总再处理失败也更容易让 happy path 通过。

这些动作在当前 diff 中可能都“有效”,但会把变化方向不同的东西黏在一起:平台源表一变,总控要跟着变;某个平台口径一变,所有平台都要回归;部分失败被误标为完整,经营报表开始使用不可解释的数据。

所以边界不能只写“保持分层”。它必须回答:谁拥有规则、谁可以依赖谁、跨层通过什么契约、违规如何自动发现。

二、GMV 清洗链路的职责边界

模块 负责 不负责 允许依赖
GmvGenerateOrchestrator 参数校验、平台选择、执行顺序、失败策略、结果聚合、汇总门禁 平台 SQL、销售/退款特殊口径 PlatformExecutor、目标表配置、汇总服务
PlatformExecutor 单平台数据读取、清洗、字段映射、平台级写入与结果 调用其他平台、决定整批是否完整 当前平台 Mapper、共享规则服务
GmvRuleService 真正跨平台稳定的类目、部门等规则 覆盖平台特例 受控配置与规则数据
GmvTargetTableProperties 目标表白名单与环境差异 接受请求传入的任意表名 配置系统
GmvSummaryService 所选平台全部成功后的完整汇总刷新 在部分失败时刷新 已完成的平台结果

最重要的结构决策是:总控只认识执行器契约,不认识九个平台的 Mapper。 新增或调整平台时,变化应收敛在平台模块;总控只处理跨平台稳定的控制逻辑。

三、边界规格要写成可检查陈述

【总控边界】
- 总控 SHALL 通过 PlatformExecutor 注册表选择平台
- 总控 SHALL NOT 直接依赖任一平台 Mapper
- 总控 SHALL NOT 包含平台销售、退款、日期字段的特殊分支

【平台边界】
- 每个平台 SHALL 独立实现统一输入输出契约
- 平台执行器 SHALL 返回读取行数、写入行数、耗时和失败原因
- 平台执行器 SHALL NOT 触发整批汇总刷新

【数据边界】
- save=false SHALL 不产生删除、插入和汇总刷新
- save=true SHALL 只允许写入目标表白名单
- 任一平台失败 SHALL NOT 把整批标记为完整

这样的陈述可以进入代码审查、测试和静态规则;“注意解耦”不可以。

四、三层强制:让边界不依赖自觉

第一层:文档约束

在项目规则和工作单中写出模块职责、允许依赖和禁止事项。它解决“模型是否看见边界”。

第二层:目录与接口

让结构本身表达边界:

gmv/
  orchestrator/       # 只依赖 executor contract
  executor/           # PlatformExecutor 与注册表
  platform/
    tmall/
    jd/
    douyin/
    ...
  rules/              # 共享规则
  summary/            # 完整汇总
  config/             # 目标表白名单

平台 Mapper 放在平台包内部,不作为总控可直接使用的公共接口。目录不能彻底阻止越界,但能让错误依赖在 diff 中非常显眼。

第三层:架构测试与 CI

noClasses()
    .that().resideInAPackage("..gmv.orchestrator..")
    .should().dependOnClassesThat()
    .resideInAnyPackage("..gmv.platform..mapper..");

再配合测试检查预览副作用、目标表白名单和汇总门禁。文档告诉 AI 为什么,结构引导它怎么写,CI 负责在它没遵守时阻止合入。

五、边界为什么能提高并行度

边界清晰后,可以让不同上下文并行处理不同平台,因为它们共享稳定契约,不需要改同一个总控文件。并行的前提不是 Agent 数量,而是:

  • 输入输出契约已经冻结;
  • 文件归属不重叠;
  • 共享规则有单独负责人;
  • 独立 Review 检查跨模块影响;
  • 集成测试验证整批语义。

如果每个执行器都需要修改总控 if-else,说明扩展点没有建立,并行只会制造合并冲突。

六、边界 Review 清单

  • 新平台是否只通过执行器注册进入系统?
  • 总控是否出现平台名、平台字段或平台 SQL?
  • 平台模块是否擅自刷新完整汇总?
  • 共享规则是否真正在多个平台保持同一语义?
  • 请求参数能否绕过目标表白名单?
  • 失败路径是否仍能把部分结果包装为成功?
  • 为通过测试,是否把测试专用分支写进生产代码?

七、边界也需要重画

边界不是永远不变。如果多次需求都同时修改两个模块,可能不是执行者持续越界,而是职责划分已经不符合变化方向。此时应由人发起结构决策:记录背景、候选方案、迁移成本和兼容策略,再同步修改接口、目录、规则与测试。

AI 可以分析影响面和生成迁移代码,但“边界应该怎么重画”是长期维护成本与业务方向的取舍,不能由一次局部任务自动决定。

八、本章小结

  • 模型倾向局部最短路径,架构边界负责保护长期变化成本。
  • GMV 链路的核心边界是总控只依赖执行器契约,平台特例留在平台模块。
  • 文档、目录/接口、架构测试三层共同强制,不能只靠提醒。
  • 边界清晰才有安全并行;契约未冻结时,多 Agent 只会并行制造分歧。
  • 边界失效时要由人重画,并记录迁移决策,不能让局部实现顺手改架构。
上一章规格驱动的结构设计下一章Agent 执行:人在环路内负责裁决
QIYA Engineering Notes企业系统、数据链路与 AI 应用实践记录
关于方法论项目复盘