diff --git a/docs/tasks/T-661.md b/docs/tasks/T-661.md new file mode 100644 index 0000000..7010c66 --- /dev/null +++ b/docs/tasks/T-661.md @@ -0,0 +1,60 @@ +--- +id: T-661 +title: 图生图内置默认提示词改为 cover_prompt 模板 +status: TODO +phase: 7 +deps: [T-579] +created: 2026-07-17 +--- + +# T-661 图生图内置默认提示词改为 cover_prompt 模板 + +## 问题 / 背景 + +当前打包资源中的图生图默认模板为 `app/default_prompts/cover/papa1.txt`,首次初始化后用户目录显示为 `data/prompts/cover/papa1.txt`。现有的新默认提示词来源文件为仓库根 `default_prompts/cover/cover_prompt.txt`,但根目录资源不会被 PyInstaller 的 `app.default_prompts` 资源收集逻辑打包,最终用户无法获得该模板。 + +## 方案 + +- 将 `default_prompts/cover/cover_prompt.txt` 的提示词内容纳入正式资源包,文件路径统一为 `app/default_prompts/cover/cover_prompt.txt`。 +- 移除正式资源包中旧的 `app/default_prompts/cover/papa1.txt`,使首次初始化只播种 `cover_prompt` 模板,用户目录生成 `data/prompts/cover/cover_prompt.txt`,封面模板下拉显示 `cover_prompt`。 +- 保持 `prompts.ensure_default_prompts()` 的已有保护:只有用户封面模板目录为空时才初始化;已有 `papa1`、自定义模板或已修改模板一律不覆盖、不重命名、不迁移。 +- 保持 PyInstaller 通过 `collect_data_files("app.default_prompts")` 收集资源的机制,不引入根目录 `default_prompts/` 作为运行时依赖。 +- 更新测试与文档中旧 `papa1` 的首次初始化表述。 + +## 验收要点 + +- [ ] `app/default_prompts/cover/cover_prompt.txt` 存在,内容等于提供的 `default_prompts/cover/cover_prompt.txt`。 +- [ ] `app/default_prompts/cover/papa1.txt` 不再作为正式默认资源存在。 +- [ ] 全新临时数据目录执行默认提示词初始化后,生成 `data/prompts/cover/cover_prompt.txt`,下拉模板名为 `cover_prompt`。 +- [ ] 已有任意封面模板(包括历史 `papa1.txt`)时,初始化不覆盖、不重命名、不额外新增默认模板。 +- [ ] 打包资源测试仍确认 `app.default_prompts` 会收集新的 `cover_prompt.txt`。 + +## 测试要求 + +- 更新 `tests/test_prompts.py` 与相关 GUI 测试中的默认封面模板名断言。 +- 运行打包资源测试,覆盖新资源会被 `cmshopee.spec` 收集。 + +## 文档同步 + +- 实现时更新 `docs/04-architecture.md`、`docs/api.md` 及 T-579 中与首次播种默认模板相关的当前事实表述。 +- 不修改冻结的 `docs/06-tasks.md`。 + +## 边界(不改什么) + +- 不改变图生图接口、cmhub 别名、生成参数或图片生成流程。 +- 不覆盖、迁移或删除用户 `data/prompts/cover/` 下的任何模板。 +- 不把根目录 `default_prompts/` 作为最终运行时资源目录。 + +## 验证 + +```bash +py -3.10 -m unittest tests.test_prompts tests.test_gui tests.test_packaging +py -3.10 -m unittest discover -s tests +py -3.10 -m ruff check app tests main.py +py -3.10 -m compileall app main.py +git diff --check +``` + +## 执行记录 + +- 待实现。