## 1. 重构参数解析逻辑 - [x] 1.1 移除 `parse_args()` 中的双模式检查逻辑(删除 `sys.argv[1]` 检查) - [x] 1.2 使用 `subparsers.add_parser()` 创建 check 子命令解析器 - [x] 1.3 使用 `subparsers.add_parser()` 创建 convert 子命令解析器 - [x] 1.4 使用 `subparsers.add_parser()` 创建 preview 子命令解析器 - [x] 1.5 为 convert 子命令添加 `--force/-f` 参数 - [x] 1.6 将 convert 子命令的 `--no-check` 重命名为 `--skip-validation` - [x] 1.7 移除 convert 子命令的 `--preview` 和 `--port` 参数 - [x] 1.8 为 preview 子命令添加 `--port`、`--host`、`--no-browser` 参数 ## 2. 更新 convert 命令处理逻辑 - [x] 2.1 从 `handle_convert()` 中移除 preview 相关逻辑 - [x] 2.2 在 `handle_convert()` 中添加输出文件存在性检查 - [x] 2.3 实现 `--force` 参数逻辑(已存在文件时检查是否有 --force) - [x] 2.4 更新 `--skip-validation` 参数的处理(原 --no-check) ## 3. 创建 preview 命令处理逻辑 - [x] 3.1 创建 `handle_preview()` 函数 - [x] 3.2 实现随机端口生成逻辑(30000-40000 范围) - [x] 3.3 处理 `--port` 参数(用户指定时使用指定端口) - [x] 3.4 处理 `--host` 参数(默认 127.0.0.1) - [x] 3.5 处理 `--no-browser` 参数(控制是否自动打开浏览器) - [x] 3.6 调用 `start_preview_server()` 并传递新参数 ## 4. 更新预览服务器模块 - [x] 4.1 修改 `start_preview_server()` 函数签名,添加 `host` 参数 - [x] 4.2 修改 `start_preview_server()` 函数签名,添加 `open_browser` 参数 - [x] 4.3 更新 Flask 服务器启动逻辑,使用传入的 `host` 参数 - [x] 4.4 更新浏览器自动打开逻辑,根据 `open_browser` 参数决定是否打开 - [x] 4.5 移除或更新端口随机生成逻辑(现在由调用方处理) ## 5. 更新主函数路由逻辑 - [x] 5.1 更新 `main()` 函数,根据 `args.command` 路由到对应的处理函数 - [x] 5.2 确保 check 命令路由到 `handle_check()` - [x] 5.3 确保 convert 命令路由到 `handle_convert()` - [x] 5.4 确保 preview 命令路由到 `handle_preview()` - [x] 5.5 移除传统模式的兼容逻辑(`args.command is None` 的处理) ## 6. 更新文档 - [x] 6.1 更新 README.md 中的"快速开始"部分,移除传统模式示例 - [x] 6.2 更新 README.md 中的"实时预览"部分,使用 `preview` 子命令 - [x] 6.3 更新 README.md 中的"命令行选项"表格,反映新的参数结构 - [x] 6.4 更新 README.md 中的所有使用示例 - [x] 6.5 更新 `yaml2pptx.py` 文件顶部的 docstring 使用说明 ## 7. 测试验证 - [x] 7.1 测试 check 子命令基本功能 - [x] 7.2 测试 check 子命令的 --template-dir 参数 - [x] 7.3 测试 convert 子命令基本功能(自动生成输出文件名) - [x] 7.4 测试 convert 子命令指定输出文件名 - [x] 7.5 测试 convert 子命令的 --force 参数(覆盖已存在文件) - [x] 7.6 测试 convert 子命令的 --skip-validation 参数 - [x] 7.7 测试 preview 子命令基本功能(随机端口) - [x] 7.8 测试 preview 子命令的 --port 参数 - [x] 7.9 测试 preview 子命令的 --host 参数 - [x] 7.10 测试 preview 子命令的 --no-browser 参数 - [x] 7.11 验证输入文件不存在时的错误提示 - [x] 7.12 验证输出文件已存在且未使用 --force 时的错误提示