docs: define outfit factory config seeding

This commit is contained in:
2026-06-23 17:45:52 +08:00
parent a9360f9421
commit cad8b61bcf
4 changed files with 50 additions and 5 deletions
+4 -1
View File
@@ -75,6 +75,8 @@
app_config.json # 用户偏好(输出格式、最近文件夹、最近模板、更新源等)
templates.json # 用户自定义模板
ai_models.json # AI 穿搭模型配置(管理员填写 key,首次可由出厂模板播种)
outfit_prompt.txt # AI 穿搭默认话术(用户可编辑,缺失时由出厂模板补种)
title_prompt.txt # 标题生成默认提示词(用户可编辑,缺失时由出厂模板补种)
logs\
output\ # 默认导出目录的回退位置(安装根不可写时,AI 穿搭回退到 output\穿搭图片)
```
@@ -110,8 +112,9 @@
1. 环境变量 `CMBOT_DATA_DIR` 非空时使用它(覆盖口,供测试或特殊部署)。
2. 打包态(`sys.frozen`)→ `~/.cmbot`(即 `%USERPROFILE%\.cmbot`)。**不依赖启动器注入环境变量**:即使用户绕过 `Launcher.exe` 直接双击 `app\CMBot.exe`,数据也落在 `~/.cmbot`。
3. 开发态 → 项目根(不污染开发者主目录,保持现状)。
- **首次运行播种**:`~/.cmbot/config/app_config.json`、`templates.json`、`ai_models.json` 不存在时,从程序包内 `app\config\` 拷贝对应出厂默认;缺省再退回内置默认(呼应 `docs/09` 第 6 节)。`ai_models.json` 出厂模板不得包含真实 API key,管理员在用户数据目录中填写。
- **首次运行播种**:`~/.cmbot/config/app_config.json`、`templates.json`、`ai_models.json`、`outfit_prompt.txt`、`title_prompt.txt` 不存在时,从程序包内 `app\config\` 拷贝对应出厂默认;缺省再退回内置默认(呼应 `docs/09` 第 6 节)。`ai_models.json` 出厂模板不得包含真实 API key,管理员在用户数据目录中填写。
- **新增配置的更新兼容**:启动器当前先执行播种,再应用 `staging\app.new`。因此用户通过自更新换到新版时,播种阶段读取的仍可能是旧版 `app\config\`,新增的出厂配置文件(例如 `ai_models.json`)不会在这次启动被复制。且 `Launcher.exe` 本身不参与自更新,旧 Launcher 也可能不知道新增文件名。新增配置文件必须由**主程序运行时兜底补种**:新版 app 启动或加载配置时,如果 `~/.cmbot/config/<name>` 不存在,应从当前新版 `app\config\<name>` 复制一次,仍不得覆盖用户已有文件。
- **已有配置的非覆盖式补全**:对于 `ai_models.json` 这类列表配置,用户文件已存在时不得整文件覆盖。若新版新增了默认标题模型(`app_config.title_model` 指定的 `name`,默认 `GPT-5.5 文本`),主程序应从当前 `app\config\ai_models.json` 查找同名条目并追加到用户 `ai_models.json`;用户已有同名条目时不改,出厂条目 `api_key` 仍为空,管理员后续在用户目录填写真实 key。
- 写入配置/模板/日志/输出前按需创建多级目录(`parents=True`)。
数据目录分离与 `~/.cmbot` 约定后续需同步 `docs/05-project-architecture.md` 与 `docs/09` 第 5、6 节的目录说明。