fix: clone standard template to user-editable copy before first use

This commit is contained in:
tian 2026-07-27 18:17:29 +08:00
parent 76f4b5af9a
commit 0895d19fe0
2 changed files with 25 additions and 0 deletions

View File

@ -372,6 +372,31 @@ func (s *AutoConfigService) BuildPipeline(req AutoConfigRequest, deploy bool) (*
templateName := resolveResult.TemplateName
result.Composed = resolveResult.Composed
// ---- 1.5. Clone standard template to user-editable copy ----
if strings.HasPrefix(templateName, "std_") {
userName := strings.TrimPrefix(templateName, "std_")
if _, _, err := s.preview.readAssetJSON("templates", userName); err != nil {
raw, _, err := s.preview.readAssetJSON("templates", templateName)
if err != nil {
result.Error = fmt.Sprintf("读取标准模板失败: %v", err)
return result, fmt.Errorf(result.Error)
}
raw["name"] = userName
raw["description"] = "从 " + templateName + " 复制"
delete(raw, "source")
body, err := marshalConfigJSON(raw)
if err != nil {
result.Error = fmt.Sprintf("序列化模板失败: %v", err)
return result, fmt.Errorf(result.Error)
}
if err := s.preview.SaveTemplateAsset(userName, stringValue(raw["description"]), string(body)); err != nil {
result.Error = fmt.Sprintf("保存用户模板失败: %v", err)
return result, fmt.Errorf(result.Error)
}
}
templateName = userName
}
// ---- 2. Compose template if needed ----
if resolveResult.Composed {
composed, err := s.composeFromFeatureTemplates(req.Features, resolveResult.composePrimary, resolveResult.composeFeatures)

Binary file not shown.