1
0
Files
PPTX/openspec/changes/archive/2026-03-02-add-browser-preview/proposal.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

51 lines
2.2 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.
## 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 渲染)