This commit is contained in:
2026-08-16 16:57:36 +02:00
parent 96f8c1115c
commit 532d439c41
106 changed files with 10147 additions and 494 deletions
@@ -1,6 +1,7 @@
package processing
import (
"strings"
"testing"
"github.com/descrybe/descrybe-v2/apps/api/internal/company"
@@ -9,14 +10,18 @@ import (
func TestResolvePromptFallbackChain(t *testing.T) {
t.Parallel()
// Category override for language wins over company user template.
// Overrides without {{attrs}} get standard context placeholders injected.
sys, user := resolveProductPromptTemplates(ProductInput{
EnhanceSystemTemplate: "sys",
EnhanceUserTemplate: "company-en",
CategoryEnhancePrompt: "cat-sl",
Language: "sl",
})
if sys != "sys" || user != "cat-sl" {
t.Fatalf("sys=%q user=%q", sys, user)
if sys != "sys" {
t.Fatalf("sys=%q", sys)
}
if !strings.HasPrefix(user, "cat-sl") || !strings.Contains(user, "{{attrs}}") {
t.Fatalf("sys=%q user=%q want cat-sl + attrs", sys, user)
}
// Empty category → company template.
@@ -28,12 +33,20 @@ func TestResolvePromptFallbackChain(t *testing.T) {
t.Fatalf("user=%q", user)
}
// categoryEnhancePromptFor: lang-specific only (no cross-lang fallback).
// sl-only category prompt: exact for sl; en falls back to primary=sl.
m := map[string]company.LangPromptMap{"audio": {"sl": "slo-prompt"}}
if got := categoryEnhancePromptFor(m, "audio", "sl"); got != "slo-prompt" {
t.Fatalf("got %q", got)
if got := categoryEnhancePromptFor(m, "audio", "sl", "sl"); got != "slo-prompt" {
t.Fatalf("sl exact: got %q", got)
}
if got := categoryEnhancePromptFor(m, "audio", "en"); got != "" {
t.Fatalf("cross-lang should be empty, got %q", got)
if got := categoryEnhancePromptFor(m, "audio", "en", "sl"); got != "slo-prompt" {
t.Fatalf("en→primary sl: got %q", got)
}
if got := categoryEnhancePromptFor(m, "audio", "en", "en"); got != "" {
t.Fatalf("en with primary=en and no en/* prompt should be empty, got %q", got)
}
// wildcard shared overlay
m2 := map[string]company.LangPromptMap{"audio": {"*": "shared-overlay"}}
if got := categoryEnhancePromptFor(m2, "audio", "en", "sl"); got != "shared-overlay" {
t.Fatalf("wildcard: got %q", got)
}
}