Appearance
Go 预设持久化与标签
系统概览
五类预设(环境/模型/动作/渲染/场景)与资源标签的 Go 侧持久化(6 个文件)。统一 presetDir(subDir) 派生目录、autoNumberedSave 自动编号命名、validatePresetName 名称清洗;库内预设(保存到资源库)与用户文件预设并存。模型预设额外承载 GetLibraryIndex(库索引解析)。
核心职责
env_preset.go— 环境预设保存/自动保存/加载/列表/删除。model_preset.go— 模型预设(文件 + 库内 ToLib/FromLib)+writeConfig/writeConfigAndRescan+GetLibraryIndex/parseLibraryIndex。motion_preset.go— 动作预设(文件 + 库内)。render_preset.go— 渲染预设保存/列表/删除。scene_preset.go— 场景预设(presetDir/autoNumberedSave/deletePresetFile共享工具)。tags.go— 标签增删查 + 按标签反查模型。
对外 API(节选)
SaveEnvPresetAuto(jsonStr) (string, error)— 自动编号保存并返回文件名。GetModelPresets() []ModelPresetEntry— 库内模型预设列表(前端模型预设 UI)。GetLibraryIndex() ([]ModelEntry, error)— 资源库索引(前端 library 用)。GetPresetScenes() []string— 场景预设列表。
与其他子系统关系
- 前端预设 UI:
model-preset-ui.ts、motion-preset-ui、settings相关页调用。 - 场景预设联动
go-scene.md的LoadSceneFile。
前端接入入口
- 模型菜单 → 模型预设;动作菜单 → 动作预设;场景菜单 → 场景预设(
model-preset-ui.ts、motion-binding-ui.ts)。 - 标签管理:资源库菜单(
library-actions.ts)。
不变量
- 用户输入路径必须
validatePresetName,任何预设名不得直接拼进文件路径。 - 「库内」与「文件」预设命名空间分离,同名不互覆。
- 模型/渲染预设变更后触发 rescan/刷新,否则前端库视图过期。
验证入口
- 测试:
internal/app/app_test.go(validatePresetName等)。 - 命令:
go test ./internal/app/ -run "Preset|Tag|Index"。