Files

64 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 字体/插件告警,但无测试失败。