64 lines
3.9 KiB
Markdown
64 lines
3.9 KiB
Markdown
---
|
||
id: T-661
|
||
title: 图生图内置默认提示词改为 cover_prompt 模板
|
||
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` 收集。
|
||
|
||
## 文档同步
|
||
|
||
- 实现时更新 `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:将提供的 `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 字体/插件告警,但无测试失败。
|