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

64 lines
3.9 KiB
Markdown
Raw Normal View History

---
id: T-661
title: 图生图内置默认提示词改为 cover_prompt 模板
2026-07-17 18:24:58 +08:00
status: DONE
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` 收集。
## 文档同步
2026-07-17 18:24:58 +08:00
- 实现时更新 `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
```
## 执行记录
2026-07-17 18:24:58 +08:00
- 2026-07-17:将提供的 `default_prompts/cover/cover_prompt.txt` 内容复制为正式打包资源 `app/default_prompts/cover/cover_prompt.txt`,SHA-256 一致;移除旧正式资源 `papa1.txt`。
- 2026-07-17:默认播种后全新用户目录生成 `data/prompts/cover/cover_prompt.txt`,模板下拉显示 `cover_prompt`;`ensure_default_prompts()` 仍只在封面模板目录为空时播种,历史 `papa1` 和其他用户模板均不覆盖、不重命名、不迁移。
- 2026-07-17:更新 prompts、GUI 和 PyInstaller 资源回归测试;同步架构与 API 当前事实。根目录 `default_prompts/` 保持为本次提供的来源,不作为运行时资源或提交内容。
- 验证通过:`py -3.10 -m unittest tests.test_prompts tests.test_gui tests.test_packaging`(214 项)、`py -3.10 -m unittest discover -s tests`(592 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。离屏 GUI 测试有 Qt 字体/插件告警,但无测试失败。