diff --git a/docs/02-prd.md b/docs/02-prd.md index 2b85ad8..46c9e71 100644 --- a/docs/02-prd.md +++ b/docs/02-prd.md @@ -339,6 +339,7 @@ CMBot/ 说明: +- `output_dir`:用户选择的导出目录。为空时使用默认导出目录——打包态为安装根下的 `合并后的图片\`(就在程序旁、好找、不随更新替换,不可写时回退用户数据目录的 `output\`),详见 `docs/10-lan-update.md` 第 4、5 节。 - `last_garment_dir` / `last_print_dir`:上次打开的衣服 / 印花文件夹路径,用于让文件夹对话框定位到上次位置。 - `last_template`:上次选中的模板名称,用于启动恢复。 - `last_batch_mode`:上次选择的批量模式(取 `BatchMode` 枚举值,如 `full_combo` / `many_garments` / `many_prints` / `one_to_one`)。 diff --git a/docs/07-ui-design.md b/docs/07-ui-design.md index 7c60c52..813d20c 100644 --- a/docs/07-ui-design.md +++ b/docs/07-ui-design.md @@ -306,7 +306,7 @@ Shift 锁比例 要求: -- 输出目录显示完整或省略路径。 +- 输出目录显示完整或省略路径;默认指向程序旁的 `合并后的图片\`(便于找到结果,详见 `docs/10` 第 4 节),用户可浏览改为任意目录。 - 格式至少支持 PNG 和 JPG。 - PNG 默认保留透明相关能力;JPG 需要处理背景。 - 质量设置用于 JPG 或需要压缩的输出格式。 diff --git a/docs/10-lan-update.md b/docs/10-lan-update.md index 4b6bffc..c03598e 100644 --- a/docs/10-lan-update.md +++ b/docs/10-lan-update.md @@ -67,13 +67,14 @@ config\ # 出厂默认配置/模板,首次运行播种到 ~/.cmbot(见第 5 节) app.old\ # 上一个可用版本,仅用于回滚,可不存在 staging\ # 下载/解压临时区,安装成功后清理 + 合并后的图片\ # 默认导出目录(就在程序旁、好找、不随更新替换;可在导出面板改) %USERPROFILE%\.cmbot\ # 用户数据,独立于程序位置,始终可写、按用户隔离 config\ app_config.json # 用户偏好(输出格式、最近文件夹、最近模板、更新源等) templates.json # 用户自定义模板 logs\ - output\ + output\ # 默认导出目录的回退位置(安装根不可写时) ``` 说明: @@ -84,7 +85,8 @@ - `app\config\`:出厂默认配置/模板,仅作首次运行的播种来源,运行时不读写。 - `app.old\`:上一个可用程序目录。更新失败或新版启动异常时,可把它改回 `app\` 完成回滚。 - `staging\`:下载的 zip 与解压临时目录。校验通过后,`staging\app.new\` 才会切换为 `app\`。 -- `~/.cmbot\`:所有用户可写数据集中存放,**与程序位置、版本切换均无关**。即便 `app\` 所在目录只读(更新失败),配置/模板/导出仍可正常写。 +- `合并后的图片\`:**默认导出目录**,放在安装根(`Launcher.exe` 旁),便于用户直接找到合成结果,且不随 `app\` 更新替换。用户可在导出面板改成任意目录;安装根不可写时回退 `~/.cmbot/output`。 +- `~/.cmbot\`:配置/模板/日志集中存放,**与程序位置、版本切换均无关**。即便 `app\` 所在目录只读(更新失败),配置/模板仍可正常写。 - 安装根(含 `app\`、`app.old\`、`staging\`、`Launcher.exe`)需免提权可写**才能自更新**;不可写时仅「更新失败」,不影响数据读写。 ## 5. 数据目录分离(实现前置改造) @@ -98,7 +100,8 @@ - 数据根(`get_data_dir()`):用户数据所在,**与程序位置解耦**。 - 路径函数划分: - `get_resource_path()` 指向**程序根**下的 `resources/`。 - - `get_config_path()`、`get_log_dir()`、`get_output_dir()` 指向**数据根**下的对应目录。 + - `get_config_path()`、`get_log_dir()` 指向**数据根**下的对应目录。 + - `get_output_dir()`(默认导出目录)特例:打包态优先返回 `<安装根>\合并后的图片`(就在程序旁、好找、不随更新替换),不可写时回退数据根 `output\`;开发态用项目目录。用户在导出面板的选择(`output_dir`)仍优先。 - 数据根解析规则(`get_data_dir()`,三级回退): 1. 环境变量 `CMBOT_DATA_DIR` 非空时使用它(覆盖口,供测试或特殊部署)。 2. 打包态(`sys.frozen`)→ `~/.cmbot`(即 `%USERPROFILE%\.cmbot`)。**不依赖启动器注入环境变量**:即使用户绕过 `Launcher.exe` 直接双击 `app\CMBot.exe`,数据也落在 `~/.cmbot`。 diff --git a/tasks.md b/tasks.md index c0ec62b..2137ed5 100644 --- a/tasks.md +++ b/tasks.md @@ -988,6 +988,24 @@ - [x] 文档:`docs/10` §3/§6/§8/§12/§16/§18、`docs/07` §4.3/§4.4 对齐 - [ ] GUI 实测:提示文字出现 → 设置里更新 → 重启生效(真机) +### 17.22 默认导出目录改为程序旁的「合并后的图片」 + +前置阅读: + +- `docs/10-lan-update.md`(§4 布局、§5 路径规则) +- `docs/07-ui-design.md`(7.5 输出设置) + +背景: + +- 默认导出在 `~/.cmbot/output`,藏在用户目录深处不好找。改为放在**安装根**(`Launcher.exe` 旁)的 `合并后的图片\`:好找、不随 `app\` 更新替换。**不放 `app\`**(每次更新会被替换、导出会丢)。 + +任务: + +- [x] 文档:`docs/10` §4/§5、`docs/02` 配置说明、`docs/07` §7.5 对齐 +- [ ] `file_service.get_output_dir()`:打包态优先 `<安装根>\合并后的图片`(安装根 = `get_app_dir().parent`),不可写回退 `get_data_dir()/output`;开发态用项目目录;补单测 +- [ ] 导出面板默认值随之变化(沿用 `get_output_dir()`,无需单独改) +- [ ] GUI 实测:打包运行后默认导出到 `<安装根>\合并后的图片`,且更新后仍在 + ## 18. 后续暂缓任务 以下任务第一阶段暂不做,后续需要时再新增设计文档: