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
+8 -6
View File
@@ -8,15 +8,17 @@ paths: ["backend/**", "agent/**", "frontend/**"]
错误码是契约的一部分,前端按 `code` 分支处理,不依赖 `message` 文本。**集中登记,禁止散落定义。**
下表为**示范**(订单域 + 通用基础设施码),按项目实际增删:
| code | 含义 | 来源 |
|------|------|------|
| `SESSION_NOT_FOUND` | 会话不存在 | Backend |
| `AGENT_UNAVAILABLE` | Agent 不可用 | Backend |
| `GEMINI_STARTUP_ERROR` | LLM CLI 启动失败 | Agent |
| `GEMINI_TIMEOUT` | LLM CLI 阶段超时 | Agent |
| `SKILL_NOT_INSTALLED` | 幻灯片生成 skill 未装 | Agent |
| `HTML_EXTRACTION_FAILED` | 无法提取有效 HTML | Agent |
| `PLAYWRIGHT_ERROR` | 截图失败 | Agent |
| `ORDER_NOT_FOUND` | 订单不存在 | Backend |
| `ORDER_STATE_INVALID` | 订单状态不允许此操作 | Backend/Agent |
| `LLM_STARTUP_ERROR` | LLM 启动/连接失败 | Agent |
| `EXTERNAL_SERVICE_TIMEOUT` | 外部依赖超时 | Agent |
| `EXTERNAL_SERVICE_ERROR` | 外部依赖返回错误 | Agent |
| `CHECKPOINT_LOST` | 断点不可恢复 | Agent |
| `CAPACITY_EXCEEDED` | 并发超额(排队) | Agent |
| `INVALID_INPUT` | 输入校验失败 | Backend/Agent |
@@ -24,4 +26,4 @@ paths: ["backend/**", "agent/**", "frontend/**"]
- 命名:`大类_具体`,全大写蛇形;新增错误码必须先登记到此表
- code 字面值散落在各服务的异常类(backend `src/exceptions/base.py``AppException` 子类、agent `src/domain/exceptions.py``AgentException` 子类)。**本表是单一来源**,异常类的 `code` 与本表对齐**靠 review 把关**,不做代码生成(多数 code 服务私有、跨线共享少,生成机制收益不抵复杂度)。改 code 先改本表,再改对应异常类。
- `GEMINI_*` 等历史命名沿用现有 code 字面值(契约稳定性优先),其语义已泛化为"LLM CLI",不随当前厂商变化
- 外部依赖类错误码(`LLM_*` / `EXTERNAL_SERVICE_*`)与具体厂商解耦,换提供商不改 code。