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(+)
51 lines
2.2 KiB
Markdown
51 lines
2.2 KiB
Markdown
## 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 渲染)
|