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

第三部分 · 设计

07

规格驱动的结构设计

按数据模型、接口契约、状态机、异常策略和模块边界组织设计,并优先冻结最难逆转的决定。

总规程★ 把这一页交给你的 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. 对高影响决定记录 ADR
  3. 先冻结跨模块契约再并行
  4. 变更时同步更新规格、代码和验收

OUTPUTS / 交付物

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

01领域模型与状态机
02接口/事件契约
03ADR 与变更记录

APPLIED CASE / 项目映射

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

GMV 先冻结平台 Service 边界、总控请求/结果模型、目标表安全策略和汇总刷新条件,再逐平台迁移。

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

FULL CHAPTER / 完整正文

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

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

规格驱动开发:先定结构

AI 写局部代码很快,但它不会替你维护全局一致性。结构决策必须先于实现被显式地做出、记录、锁定。

需求篇产出了行为规格(系统必须表现成什么样),上下文工程解决了约束的可见性。这一章解决第三个问题:系统应该长什么样——也就是结构决策如何被做出和管理。

一、反例:边问边攒出来的GMV 清洗迁移系统

按聊天方式推进 GMV 清洗迁移,过程通常是:先让 AI 写总控,发现平台口径不同再加分支,发现需要预览再补 save,发现部分失败再改返回结构,最后才补目标表白名单和汇总门禁。每一步都局部正确,但整体很快冲突:总控塞满平台特例、预览产生副作用、失败状态和汇总状态互相矛盾。

这和执行篇批评的聊天式打补丁是同一个病灶的两个症状:结构决策被隐式地、增量地做出,没有任何一个时刻被完整审视过。 手写代码时代这个问题也存在,但写得慢,混乱成型也慢,人有时间察觉;AI 把实现压缩到分钟级,混乱以同样的倍速成型。

GitClear 对大规模代码库的纵向分析(数据见认知篇)给这个判断提供了佐证:AI 辅助普及后,重复代码上升、重构性代码移动下降——AI 不会主动维护全局一致性,因为它每次只看见局部任务。 全局一致性从来都是人的职责,AI 时代只是把这个职责从"隐性兜底"变成了"必须显式执行"。

二、行业形态:SDD 已经产品化

"先规格后实现"(Spec-Driven Development, SDD)不是本站的独创概念,而是 2025 年以来 AI 开发工具的公共演化方向:

  • GitHub Spec Kit 把工作流固化为五个阶段:/specify(写规格)→ /clarify(澄清)→ /plan(技术方案)→ /tasks(拆任务)→ /implement(实现)——代码生成被放在流程的最后一步;
  • AWS Kiro 直接以三份文档驱动 IDE:requirements.md(需求,EARS 语法)、design.md(设计)、tasks.md(任务清单),改代码先改文档。

本站方法论与它们同构:需求篇对应 specify + clarify,本章对应 plan/design,执行篇对应 tasks + implement。这个对照的意义在于:这不是某个人的工作习惯,而是整个行业在 AI 提速之后收敛出的同一条纪律——生成越快,结构越要前置。

三、结构决策五件套:按不可逆性排序

GMV 清洗迁移链路需要先定的结构决策有五类。排序不是随意的——按"改起来有多贵"从高到低,越靠前的越必须由人拍板:

决策 不可逆性 为什么必须人定
① 数据模型 最高——上线后带着存量数据迁移 平台、日期范围、销售/退款金额、类目和部门归属、运行结果。错误模型会被所有平台固化
② 接口契约 高——下游接入后变更即破坏性变更 入参出参、错误码语义。契约是模块间的法律
③ 运行状态 高——状态决定失败恢复和汇总可信度 RUNNING → SUCCESS / PARTIAL / FAILED;部分结果不得标记为完整
④ 写入边界 中——影响预览、重跑与失败语义 save=false 无副作用;平台写入与完整汇总分离
⑤ 模块边界 中——越界依赖会指数式扩散 总控依赖执行器契约,不直接访问平台 Mapper(展开见架构边界)

这张表就是执行篇决策权分层里"结构性决策"的完整清单。AI 完全可以对每一项提案——让它给出三个表结构方案及权衡是高效的用法——但选择权不能让渡:AI 对"改起来多贵"没有概念,它不承担迁移存量数据的代价。

四、把"为什么"记下来:ADR

结构决策做出后,只记结论是不够的。行业的标准做法是 ADR(Architecture Decision Record,Nygard 2011):每个重要决策一条短记录——背景、决策、理由、被否方案。

ADR-007:总控仅依赖 PlatformExecutor 契约

背景:九个平台的源表、日期、销售和退款口径不同,且会独立演进。
决策:总控通过执行器注册表选择平台,不直接访问平台 Mapper,不承载平台特殊规则。
理由:平台变化收敛在各自模块,总控只保留稳定的选择、失败策略、聚合和汇总门禁。
被否方案:仅用 Redis 分布式锁(锁过期与主从切换存在窗口);
          仅靠应用层判断(并发下必然穿透)。

ADR 在 AI 工作流里有双重价值:对人,它是评审和交接的依据;对 AI,它进入上下文工程的决策记忆层——没有理由的约束,在模型的长上下文里最先被牺牲;带着理由的约束,模型才能在新场景里正确外推(比如:知道"否掉 Redis 锁是因为失效窗口",它就不会在下个模块里再提议同样的方案)。

五、规格是单一事实源:变更走规格,不走聊天

规格文档最常见的死法,是上线前两周开始"口头变更":聊天里说一句"哦对了,平台与日期范围不要日期前缀了",代码改了,规格没改。从这一刻起规格失信,所有后续验收失去基准——这正是上下文失效模式里的"混淆"(过时信息与现行信息并存)。

纪律只有一条:

需求变更 = 修改规格文件 → 受影响的工作单重发 → 相关测试同步更新。禁止任何绕过规格的"顺嘴改"。

这不是流程洁癖。规格是测试、review、验收三方共同的基准,基准漂移的成本由三方同时承担。Spec Kit 和 Kiro 把"改文档才能改代码"做进工具强制,就是因为靠自觉守不住这条线。

六、边界:结构前置不等于大设计前置

必须回应一个经典质疑:这不就是瀑布式的 Big Design Up Front 吗?

不是,分界线在第三节那张表里:前置的只是不可逆决策,可逆决策明确留给实现层。 数据模型、契约、状态机要先定,因为改它们要付迁移代价;Service 内部怎么组织、用什么设计模式、先查缓存还是先查库,留给 AI 在实现时自由发挥——那一层试错成本趋零,前置反而浪费。

两种情况可以进一步放宽:

  • 探索期:技术可行性未知时,先做 spike(快速原型验证),验证完再回头补规格。顺序颠倒是合法的,跳过是不合法的;
  • S 级小任务:不触碰五件套中任何一项的改动(见执行篇任务分级),不需要独立的结构设计环节。

判断标准始终一致:结构设计的投入,和决策的不可逆程度成正比。

七、本章小结

  • 边攒式开发的病灶是结构决策被隐式增量地做出;AI 把混乱成型的速度提高了两个数量级,全局一致性必须由人显式维护(GitClear 数据佐证)。
  • SDD 已是行业公共方向(Spec Kit 五阶段、Kiro 三文档),本站方法与之同构:生成越快,结构越要前置。
  • 结构决策五件套按不可逆性排序:数据模型 > 接口契约 > 状态流转 > 事务边界 > 模块边界;AI 可提案,人拍板。
  • 决策连同理由记入 ADR,同时服务于人(评审交接)和 AI(决策记忆层的正确外推)。
  • 规格是单一事实源:变更走规格文件,禁止口头改;结构前置只覆盖不可逆决策,不是 BDUF。

下一章 架构边界,把五件套里扩散性最强的一项——模块边界——展开成可机器强制的规则。


参考资料

  • GitHub, Spec Kit——specify / clarify / plan / tasks / implement 五阶段工作流。
  • AWS Kiro——requirements / design / tasks 三文档驱动的 AI IDE。
  • Michael Nygard, Documenting Architecture Decisions(2011)——ADR 的原始提案。
  • GitClear——AI 辅助下重复代码上升、重构下降的纵向分析,详见认知篇。
上一章上下文工程:让事实持续可见下一章架构边界:让变化留在该在的位置
QIYA Engineering Notes企业系统、数据链路与 AI 应用实践记录
关于方法论项目复盘