refactor: 规则中性化——剥离 PPT 业务,统一为订单示范域

把规则从原 ppt-gen 项目泛化为通用脚手架,覆盖 19 个文件:
- ddd/architecture/design-discipline/error-codes/communication-* 等:
  领域术语、错误码、消息示例、扩展点、状态流统一为「订单」示范域
- agent-dag/agent.md/agent-concurrency/agent-llm-*:DAG 节点、配置、并发、
  LLM 适配从「对话→预览→生成→截图→合成」改为「intake→process→validate→finalize」
- backend-db:Session 实体/状态机/ORM/仓储/checkpoint 对齐新流水线
- 移除幻灯片专属依赖与产物:agent 去 playwright/python-pptx,
  Dockerfile 去 Chromium 系统库,.gitignore 去 *.pptx
- 保留合法通用项:ANSI(PTY 处理)、Playwright(E2E 测试工具)、Gemini CLI(真实 provider)

验证:gemini-cli/openai-api 两变体生成退出 0,生成项目零 PPT 残留,
backend/agent 骨架均可 import 运行。
This commit is contained in:
baozaotumao
2026-06-01 23:15:05 -07:00
parent bb6503c3f8
commit df48c36422
23 changed files with 257 additions and 285 deletions
+12 -11
View File
@@ -6,19 +6,20 @@
## 统一语言(Ubiquitous Language
代码、注释、提交、文档、对话一律使用同一套领域术语,禁止同义异名
代码、注释、提交、文档、对话一律使用同一套领域术语,禁止同义异名
**下表用「订单」作示范领域,仅为占位**——新项目应替换为自己的业务术语;结构和约束保持不变:
| 术语 | 定义 |
|------|------|
| 会话 Session | 一次端到端生成交互的生命周期聚合根 |
| 演示文稿 Deck | 生成的 HTML 演示文稿,领域核心产物 |
| 幻灯片 Slide | Deck 内的单页 |
| 主旨 Intent | 用户表达的演示意图 |
| 风格 Style | 视觉美学配方(Aesthetic Recipe |
| 风格预览 StylePreview | 供选择的候选样张 |
| 精修 Refinement | 对已生成 Deck 的迭代修改 |
| 检查点 Checkpoint | 可恢复的会话状态快照 |
| 端口 Port | 领域对外部能力的抽象接口(LLM / 图片 / 导出 / 存储) |
| 订单 Order | 一次交易的生命周期聚合根 |
| 订单项 OrderItem | Order 内的单条商品明细 |
| 金额 Money | 币种 + 数值的值对象(构造即自校验) |
| 收货地址 ShippingAddress | 带校验规则的值对象 |
| 订单状态 OrderStatus | 状态机(待支付/已支付/已发货/已完成/已取消 |
| 修订 Revision | 对已存在 Order 的一次受控修改 |
| 检查点 Checkpoint | 可恢复的状态快照 |
| 端口 Port | 领域对外部能力的抽象接口(支付 / 通知 / 导出 / 存储) |
术语变更须同步更新本表、代码标识符与契约,三者恒一致。
@@ -27,7 +28,7 @@
目标:**让后续未预见的变化只改一处**(变化局部化)。不追求初期设计周全,追求封装良好——围绕「易变的决策」隐藏信息(Parnas Information Hiding)。以下为硬约束:
1. **按意图建模,不按 CRUD 建模**
领域对象暴露的是*领域操作*`change_password` / `authenticate` / `refine`),不是数据表的增删改查。先问"这个对象能做什么",而非"它有哪些字段的 getter/setter"。
领域对象暴露的是*领域操作*`place` / `cancel` / `add_item`),不是数据表的增删改查。先问"这个对象能做什么",而非"它有哪些字段的 getter/setter"。
2. **易变规则收拢为值对象(Value Object**
有规则、有约束的概念不用裸标量表示。规则全封进值对象,**一处定义、全局复用**。