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,50 @@
## Why
当前工作流程中,每次编辑 YAML 文件后,需要手动运行 `yaml2pptx.py` 生成 PPTX 文件,然后在 Keynote 或 PowerPoint 中打开查看效果。这个反馈循环较慢,需要频繁切换应用程序,降低了内容创作和调试的效率。添加浏览器实时预览功能可以让用户在编辑 YAML 时立即看到效果,大幅提升开发体验。
## What Changes
-`yaml2pptx.py` 中添加 `--preview` 参数,启用浏览器预览模式
- 使用 Flask 提供 Web 服务,动态生成 HTML 预览
- 使用 Server-Sent Events (SSE) 实现浏览器自动刷新
- 使用 watchdog 监听 YAML 文件变化
- 复用现有的 YAML 解析和模板渲染逻辑
- 将 YAML 元素转换为 HTML/CSS 进行渲染
- 新增依赖:`flask``watchdog`(添加到脚本的 Inline script metadata
- 保持向后兼容,不影响现有的 PPTX 生成功能
## Capabilities
### New Capabilities
- `browser-preview-server`: 浏览器预览服务器,负责启动 Web 服务、文件监听、SSE 事件推送
- `html-rendering`: HTML 渲染系统,负责将 YAML 元素(文本、形状、表格、图片)转换为 HTML/CSS
### Modified Capabilities
无。此变更不修改现有能力的需求,仅复用 `yaml-parsing``template-system` 的功能。
## Impact
### 修改文件
- `yaml2pptx.py`: 添加预览服务器功能(约 200 行新增代码)
- 新增 `--preview` 命令行参数
- 新增 Flask 路由和 SSE 事件流
- 新增 HTML 渲染函数
- 新增文件监听逻辑
### 依赖变化
-`yaml2pptx.py` 的 Inline script metadata 中新增依赖:`flask``watchdog`
- 使用 uv 自动管理依赖,无需手动安装
### 现有功能
- 完全向后兼容,不影响现有的 PPTX 生成功能
- 复用 `Presentation` 类和 YAML 解析逻辑
- 不修改现有的模板系统和元素渲染逻辑
### 用户体验
- 生成 PPTX`uv run yaml2pptx.py input.yaml` (保持不变)
- 浏览器预览:`uv run yaml2pptx.py input.yaml --preview` (新增)
- 预览模式下浏览器自动打开预览页面
- 编辑 YAML 文件后浏览器自动刷新
- 预览效果与最终 PPTX 可能存在细微差异HTML/CSS vs PPTX 渲染)