## 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 渲染)