1
0
Files
PPTX/openspec/changes/archive/2026-03-02-add-template-dir-parameter/specs/template-system/spec.md
lanyuanxiaoyao cd7988cbd5 feat: initial implementation of html2pptx with OpenSpec documentation
Add core Python script (yaml2pptx.py) for converting YAML to PowerPoint:
- Element rendering: text, image, shape, table, chart
- Template system with placeholders
- PPTX generation with python-pptx

OpenSpec workflow setup:
- 3 archived changes: browser-preview, template-dir-cli, yaml-to-pptx
- 7 main specifications covering all core modules
- Config and documentation structure

30 files changed, 4984 insertions(+)
2026-03-02 14:28:25 +08:00

2.9 KiB
Raw Blame History

Template System (Delta)

MODIFIED Requirements

Requirement: 模板文件必须可从指定目录加载

系统 SHALL 从用户通过 --template-dir 参数指定的目录加载模板文件,支持通过模板名称引用。模板名称必须是纯文件名,不能包含路径分隔符。

Scenario: 通过名称加载模板

  • WHEN 幻灯片指定 template: title-slide,且用户提供 --template-dir /path/to/templates
  • THEN 系统从 /path/to/templates/title-slide.yaml 加载模板文件

Scenario: 模板文件不存在时报错

  • WHEN 幻灯片引用不存在的模板名称
  • THEN 系统抛出错误,提示"模板文件不存在: <模板名>",并显示查找位置和期望文件路径

Scenario: 缓存已加载的模板

  • WHEN 多个幻灯片使用同一个模板
  • THEN 系统仅加载一次模板文件,后续使用缓存

Scenario: 错误信息包含详细的查找信息

  • WHEN 模板文件未找到
  • THEN 错误信息包含模板名称、查找位置template_dir、期望文件的完整路径、解决建议

ADDED Requirements

Requirement: 模板名称必须是纯文件名

系统 SHALL 验证模板名称不包含路径分隔符,确保模板只能从指定目录的一层加载。

Scenario: 拒绝包含正斜杠的模板名称

  • WHEN 幻灯片指定 template: subdir/title-slide
  • THEN 系统抛出错误,提示"模板名称不能包含路径分隔符: subdir/title-slide"

Scenario: 拒绝包含反斜杠的模板名称

  • WHEN 幻灯片指定 template: subdir\title-slide
  • THEN 系统抛出错误,提示"模板名称不能包含路径分隔符: subdir\title-slide"

Scenario: 拒绝路径遍历尝试

  • WHEN 幻灯片指定 template: ../other-templates/slide
  • THEN 系统抛出错误,提示模板名称不能包含路径分隔符

Scenario: 接受纯文件名

  • WHEN 幻灯片指定 template: title-slide(不包含路径分隔符)
  • THEN 系统正常处理,从指定的 template_dir 加载模板

Scenario: 错误信息提供正确格式示例

  • WHEN 系统因模板名称包含路径分隔符而报错
  • THEN 错误信息中包含"模板名称应该是纯文件名,如: 'title-slide'"的提示

Requirement: 未指定模板目录时必须报错

系统 SHALL 在用户未提供 --template-dir 参数但 YAML 文件中使用了模板时,立即报错。

Scenario: 使用模板但未指定目录

  • WHEN YAML 文件中包含 template: title-slide,但 templates_dir 参数为 None
  • THEN 系统在尝试加载模板时抛出错误,提示"未指定模板目录,无法加载模板"

Scenario: 不使用模板时不检查目录

  • WHEN YAML 文件中所有幻灯片都是自定义幻灯片(不包含 template 字段)
  • THEN 系统不检查 templates_dir 是否为 None,正常处理