This commit is contained in:
2026-08-23 18:58:03 +02:00
parent a30b78c3b6
commit f61fe05e7a
9 changed files with 551 additions and 61 deletions
@@ -65,11 +65,12 @@ func TestAppendDescriptionFormulaSystemOverride(t *testing.T) {
EnhanceUserTemplate: "Name: {{name}}",
DescriptionTemplate: desc,
})
if !strings.Contains(user, "Description formula") {
t.Fatalf("missing user formula: %s", user)
// Structured description_template uses A1 GPT-predloga path (legacy generator.php).
if !strings.Contains(user, "GPT predloga:") || !strings.Contains(user, "<H1>{Heading}</H1>") {
t.Fatalf("missing A1 description predloga: %s", user)
}
if !strings.Contains(sys, "Description formula") || !strings.Contains(sys, "1-2 sentences") {
t.Fatalf("system should keep company text and append formula override: %s", sys)
if !strings.Contains(sys, "Si tekstopisec") {
t.Fatalf("system should be A1 copywriter when formula set: %s", sys)
}
if AppendDescriptionFormulaSystemOverride("plain", nil) != "plain" {
t.Fatal("empty formula must be no-op")
@@ -90,16 +91,22 @@ func TestAppendTitleFormulaSystemOverride(t *testing.T) {
EnhanceUserTemplate: "Name: {{name}}",
TitleTemplate: title,
})
if !strings.Contains(user, "Title formula") || !strings.Contains(user, "attr [brand]") {
t.Fatalf("missing user title formula: %s", user)
if !strings.Contains(user, "GPT predloga:") || !strings.Contains(user, "<name>{") {
t.Fatalf("missing A1 title predloga: %s", user)
}
if !strings.Contains(sys, `When the user message includes a "Title formula"`) || !strings.Contains(sys, "short retail title") {
t.Fatalf("system should keep company text and append title override: %s", sys)
if !strings.Contains(user, "brand") {
t.Fatalf("missing brand in title formula: %s", user)
}
if !strings.Contains(sys, "Si tekstopisec") {
t.Fatalf("system should be A1 copywriter when title formula set: %s", sys)
}
if AppendTitleFormulaSystemOverride("plain", nil) != "plain" {
t.Fatal("empty title formula must be no-op")
}
dup := AppendTitleFormulaSystemOverride(sys, title)
// Direct override helper stays idempotent for soft path.
soft := "Retail product copywriter.\n- name: short retail title"
with := AppendTitleFormulaSystemOverride(soft, title)
dup := AppendTitleFormulaSystemOverride(with, title)
if strings.Count(dup, `When the user message includes a "Title formula"`) != 1 {
t.Fatalf("title override must be idempotent: %s", dup)
}
@@ -239,24 +246,24 @@ func TestAppendFormulaConstraints_injectedIntoResolve(t *testing.T) {
TitleTemplate: title,
DescriptionTemplate: desc,
})
if !strings.Contains(user, "Name: {{name}}") {
t.Fatalf("lost base template: %s", user)
if !strings.Contains(user, "GPT predloga:") {
t.Fatalf("expected A1 GPT predloga: %s", user)
}
if !strings.Contains(user, "Title formula") || !strings.Contains(user, "attr [brand]") {
t.Fatalf("missing title formula: %s", user)
if !strings.Contains(user, "<name>{") || !strings.Contains(user, "brand") {
t.Fatalf("missing title formula in predloga: %s", user)
}
if !strings.Contains(user, "Description formula") || !strings.Contains(user, "- p: Factual summary") {
t.Fatalf("missing description formula: %s", user)
if !strings.Contains(user, "<p>{Factual summary}</p>") {
t.Fatalf("missing description formula HTML: %s", user)
}
if !strings.Contains(user, "SEO meta formula") || !strings.Contains(user, "meta_title (50-60 chars)") {
t.Fatalf("missing SEO meta formula: %s", user)
if !strings.Contains(user, "<metaDescription>{") || !strings.Contains(user, "120-155") {
t.Fatalf("missing SEO meta in predloga: %s", user)
}
if !strings.Contains(sys, "SEO meta formula") {
t.Fatalf("system missing meta override: %s", sys)
if !strings.Contains(sys, "Si tekstopisec") {
t.Fatalf("system missing A1 copywriter: %s", sys)
}
// Render substitutes {{language}} in formula blocks.
_, rendered := RenderProductEnhancePrompts(
"Write in {{language}}.", user,
sys, user,
"50", "Old Name", "", "", "", "sl",
map[string]any{"brand": "Vox", "product_model": "EHT6020"},
)