1
0
Files
lanyuanxiaoyao 5d60f3c2c2 feat: 实现模板元素混合模式功能
新增混合模式,允许幻灯片同时使用 template 和 elements,实现更灵活的布局组合。

核心变更:
- core/presentation.py: 修改 render_slide() 支持三种模式(纯模板/纯自定义/混合模式)
- 自定义元素可访问模板变量,实现主题色等值的统一控制
- 元素采用简单追加策略合并(模板元素在前,自定义元素在后)
- 完全向后兼容现有用法

测试覆盖:
- 新增 TestRenderSlideHybridMode 测试类,包含 8 个测试用例
- 验证向后兼容性(纯模板模式、纯自定义模式)
- 验证混合模式功能(变量共享、空元素列表、元素顺序等)
- 所有 79 个测试通过

文档更新:
- README.md: 新增"混合模式模板"章节,包含语法示例和使用场景
- README_DEV.md: 更新开发文档,说明元素合并策略和实现细节

规范更新:
- openspec/specs/template-system/spec.md:
  - 修改"系统必须支持自定义幻灯片"需求,支持混合模式
  - 新增 4 个需求:变量共享、元素合并策略、向后兼容、内联模板支持
  - 新增 13 个场景定义

归档:
- openspec/changes/archive/2026-03-04-template-element-composition/: 完整变更记录
2026-03-04 13:12:51 +08:00

50 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Template Element Composition - 实现任务清单
## 1. 核心实现
- [x] 1.1 修改 `Presentation.render_slide()` 方法支持混合模式
- [x] 1.2 实现模板元素和自定义元素的合并逻辑(简单追加策略)
- [x] 1.3 实现自定义元素对模板变量的访问(复用 `Template.resolve_element()`
- [x] 1.4 处理空 `elements` 列表的情况(等同于不指定 elements
## 2. 单元测试
- [x] 2.1 添加测试:纯模板模式(向后兼容验证)
- [x] 2.2 添加测试:纯自定义元素模式(向后兼容验证)
- [x] 2.3 添加测试:混合模式基本功能
- [x] 2.4 添加测试:自定义元素访问模板变量
- [x] 2.5 添加测试:空 elements 列表
- [x] 2.6 添加测试:模板条件渲染后与自定义元素合并
- [x] 2.7 添加测试:变量未定义时的错误处理
- [x] 2.8 添加测试:内联模板与自定义元素混合使用
- [x] 2.9 添加测试:外部模板与自定义元素混合使用
## 3. 集成测试
- [ ] 3.1 添加集成测试:完整的 YAML → PPTX 转换流程(混合模式)
- [ ] 3.2 添加集成测试:验证 z 轴顺序(自定义元素覆盖模板元素)
- [ ] 3.3 添加集成测试:背景设置与混合模式的交互
## 4. E2E 测试
- [ ] 4.1 添加 E2E 测试convert 命令处理混合模式 YAML
- [ ] 4.2 添加 E2E 测试preview 命令显示混合模式幻灯片
- [x] 4.3 创建测试用的混合模式 YAML 示例文件
## 5. 文档更新
- [x] 5.1 更新 README.md新增"混合模式模板"使用说明
- [x] 5.2 更新 README.md添加混合模式语法示例
- [x] 5.3 更新 README.md说明 z 轴顺序规则
- [x] 5.4 更新 README_DEV.md说明元素合并策略
- [x] 5.5 更新 README_DEV.md添加混合模式相关的开发说明
## 6. 验证与清理
- [x] 6.1 运行所有单元测试并通过(`uv run pytest tests/unit/`
- [ ] 6.2 运行所有集成测试并通过(`uv run pytest tests/integration/`
- [ ] 6.3 运行所有 E2E 测试并通过(`uv run pytest tests/e2e/`
- [ ] 6.4 运行完整测试套件并通过(`uv run pytest`
- [x] 6.5 手动测试:使用现有 complex_presentation.yaml 验证向后兼容性
- [x] 6.6 手动测试:创建新的混合模式 YAML 并通过 convert 命令生成 PPTX