1
0

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(+)
This commit is contained in:
2026-03-02 14:28:25 +08:00
parent 6cb422a72a
commit cd7988cbd5
30 changed files with 4984 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
## Why
当前脚本默认使用相对路径 `templates_dir='templates'` 加载模板,这限制了脚本的可移植性——脚本只能在包含 templates 目录的项目根目录下运行。为了让脚本可以在任何位置使用,需要支持通过命令行参数明确指定模板目录,并移除隐式的默认行为。
## What Changes
- 添加 `--template-dir` 命令行参数,允许用户指定模板文件目录
- **BREAKING**: 移除默认模板目录行为,使用模板时必须通过 `--template-dir` 明确指定模板目录
- 添加模板名称验证,禁止在模板名称中使用路径分隔符(`/``\`),确保模板只能从指定目录的一层加载
- 改进错误提示信息,明确告知用户模板查找位置和失败原因
- 不使用模板的纯自定义幻灯片不受影响,无需指定 `--template-dir`
## Capabilities
### New Capabilities
- `template-directory-cli`: 支持通过命令行参数指定模板目录,包括参数解析、路径验证、错误提示
### Modified Capabilities
- `template-system`: 修改模板加载逻辑,从硬编码的 `templates/` 目录改为必须明确指定的目录;添加模板名称验证规则
## Impact
**代码影响**:
- `Template.__init__` 方法184行修改模板路径解析逻辑添加名称验证
- `Presentation.__init__` 方法610行移除默认 templates_dir 参数
- `parse_args` 函数756行添加 `--template-dir` 参数定义
- `main` 函数775行传递 template_dir 参数给 Presentation
**用户影响**:
- **破坏性变更**: 现有使用模板的用户必须在命令行添加 `--template-dir` 参数
- 不使用模板的用户不受影响
- 脚本可以在任何位置运行,不再依赖特定的目录结构
**示例**:
```bash
# 之前(只能在项目根目录运行)
uv run yaml2pptx.py presentation.yaml
# 之后(可以在任何位置运行,但使用模板时必须指定目录)
uv run yaml2pptx.py presentation.yaml --template-dir ./templates
uv run yaml2pptx.py presentation.yaml --template-dir /path/to/templates
```