Files
cmshoppe/docs/tasks/T-661.md
T

61 lines
2.9 KiB
Markdown

---
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
```
## 执行记录
- 待实现。