1
0
Files
PPTX/openspec/changes/archive/2026-03-04-add-description-field/design.md
lanyuanxiaoyao 2fd8bc1b4a feat: 为metadata、模板和幻灯片添加description字段支持
添加可选的description字段用于文档目的,不影响渲染输出。

主要更改:
- core/presentation.py: 添加metadata.description属性
- core/template.py: 添加template.description属性
- tests: 添加16个新测试用例验证description功能
- docs: 更新README.md和README_DEV.md文档
- specs: 新增page-description规范文件
2026-03-04 13:22:33 +08:00

83 lines
3.3 KiB
Markdown
Raw 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.
# Design: Add Description Field to Metadata, Templates, and Slides
## Context
当前项目使用YAML格式的模板文件和演示文稿定义。YAML文件包含metadata元数据部分和slides列表。模板系统`template-system` spec定义了模板的结构包括vars、elements等字段。演示文稿通过YAML文件定义slides列表每个slide可以引用模板或定义自定义元素。
项目目前没有内置的机制来描述文档整体、页面或幻灯片的用途。开发者只能通过元素内容和变量名来推断,这降低了演示文稿、模板和幻灯片的可维护性。
## Goals / Non-Goals
**Goals:**
- 为metadata添加可选的description字段
- 为模板文件添加可选的description字段
- 为幻灯片定义添加可选的description字段
- 确保description字段在数据模型中被正确解析和保留
- 保持完全的向后兼容性
- 不影响渲染逻辑和输出结果
**Non-Goals:**
- 不将description写入最终的PPTX文件PowerPoint备注功能不在本次范围
- 不实现description的验证逻辑如长度限制、格式要求
- 不实现基于description的搜索或过滤功能
## Decisions
### 1. Description字段为可选的字符串类型
**决策:** description字段为可选字段类型为字符串可以为空字符串。
**理由:**
- 保持简单,不过度设计
- 用户可以自由描述,不受格式限制
- 可选设计确保向后兼容
**替代方案考虑:**
- 使用结构化格式如对象包含title、content等子字段- 过于复杂,当前需求不需要
### 2. Description不参与渲染
**决策:** description字段仅用于文档目的不传递给渲染器不影响PPTX生成。
**理由:**
- PowerPoint的备注功能需要额外处理且不在当前需求范围
- 保持渲染逻辑简单,避免引入不必要的复杂性
**替代方案考虑:**
- 将description写入PPTX备注 - 需要额外的python-pptx API调用增加复杂度
### 3. 在数据模型层面实现
**决策:** 在数据模型类Metadata/Document、Template、Slide中添加description属性在YAML解析时读取该字段。
**理由:**
- 与现有代码结构一致
- 便于统一处理和访问
- metadata中的description可以描述整个文档
**替代方案考虑:**
- 仅在YAML解析时保留不添加到数据模型 - 会导致信息丢失,不利于后续使用
## Risks / Trade-offs
| 风险 | 缓解措施 |
|------|----------|
| description字段可能被滥用或包含不恰当内容 | 依赖用户自律,不添加内容验证 |
| 增加数据模型的字段数量 | 影响很小,仅增加一个可选字符串字段 |
| 用户可能期望description能影响输出 | 在文档中明确说明description仅用于文档目的 |
## Migration Plan
1. 更新数据模型类添加description属性Metadata、Template、Slide
2. 更新YAML解析器读取metadata、模板和幻灯片的description字段
3. 添加测试用例验证description正确读取和保留
4. 更新文档说明新字段的用法
**回滚策略:**
- 由于是新增可选字段,移除该字段不会影响现有功能
- 如需回滚只需从数据模型和解析器中移除description相关代码
## Open Questions
无。本设计较为简单直接,没有未解决的技术问题。