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

3.9 KiB
Raw Blame History

id, title, status, phase, deps, created
id title status phase deps created
T-661 图生图内置默认提示词改为 cover_prompt 模板 DONE 7
T-579
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/ 作为最终运行时资源目录。

验证

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 字体/插件告警,但无测试失败。