2026-06-01 12:03:57 +08:00
|
|
|
|
package aiagent
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2026-08-21 00:41:07 +08:00
|
|
|
|
"code.tczkiot.com/wlw/ai-agent/cmd/testdata/seedlang"
|
|
|
|
|
|
"code.tczkiot.com/wlw/ai-agent/cmd/testdata/seeds"
|
2026-06-01 12:03:57 +08:00
|
|
|
|
"regexp"
|
2026-07-28 12:30:48 +08:00
|
|
|
|
"strings"
|
2026-06-01 12:03:57 +08:00
|
|
|
|
"testing"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
var hanTextPattern = regexp.MustCompile(`\p{Han}`)
|
|
|
|
|
|
|
|
|
|
|
|
func TestEnglishAIAgentSeedDoesNotContainChineseText(t *testing.T) {
|
2026-06-01 12:15:41 +08:00
|
|
|
|
for _, item := range seeds.AIAgentSeeds(seedlang.English) {
|
2026-06-01 12:03:57 +08:00
|
|
|
|
values := []string{item.Name, item.Description, item.SystemPrompt, item.WelcomeMessage, item.FallbackMessage}
|
2026-07-28 12:30:48 +08:00
|
|
|
|
values = append(values, item.LegacyNames...)
|
2026-06-01 12:03:57 +08:00
|
|
|
|
for _, value := range values {
|
|
|
|
|
|
if hanTextPattern.MatchString(value) {
|
|
|
|
|
|
t.Fatalf("english AI agent seed contains Chinese text: %q", value)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-07-28 12:30:48 +08:00
|
|
|
|
|
|
|
|
|
|
func TestChineseAIAgentSeedUsesPresalesConfiguration(t *testing.T) {
|
|
|
|
|
|
items := seeds.AIAgentSeeds(seedlang.Chinese)
|
|
|
|
|
|
if len(items) != 1 {
|
|
|
|
|
|
t.Fatalf("expected one Chinese AI agent seed, got %d", len(items))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
item := items[0]
|
|
|
|
|
|
if item.Name != "贝壳AI售前客服" {
|
|
|
|
|
|
t.Fatalf("unexpected Chinese AI agent name: %q", item.Name)
|
|
|
|
|
|
}
|
|
|
|
|
|
for _, expected := range []string{
|
|
|
|
|
|
"你是贝壳AI(AgentDesk)的售前客服",
|
|
|
|
|
|
"# 售前对话策略",
|
|
|
|
|
|
"# 事实与工具边界",
|
|
|
|
|
|
"不得编造价格、折扣、合同条款、商业 SLA",
|
|
|
|
|
|
} {
|
|
|
|
|
|
if !strings.Contains(item.SystemPrompt, expected) {
|
|
|
|
|
|
t.Fatalf("Chinese AI agent system prompt missing %q", expected)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if !strings.Contains(item.WelcomeMessage, "贝壳AI售前客服") {
|
|
|
|
|
|
t.Fatalf("unexpected welcome message: %q", item.WelcomeMessage)
|
|
|
|
|
|
}
|
|
|
|
|
|
if !strings.Contains(item.FallbackMessage, "方案评估") {
|
|
|
|
|
|
t.Fatalf("unexpected fallback message: %q", item.FallbackMessage)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-08-28 22:23:13 +08:00
|
|
|
|
func TestBuildModelsUsesSupportedBindings(t *testing.T) {
|
2026-07-28 12:30:48 +08:00
|
|
|
|
items := buildModels(seedlang.Chinese, 7, []int64{11}, "13")
|
|
|
|
|
|
if len(items) != 1 {
|
|
|
|
|
|
t.Fatalf("expected one AI agent model, got %d", len(items))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
item := items[0]
|
|
|
|
|
|
if item.AIConfigID != 7 || item.KnowledgeIDs != "11" || item.TeamIDs != "13" {
|
|
|
|
|
|
t.Fatalf("unexpected AI agent bindings: %+v", item)
|
|
|
|
|
|
}
|
|
|
|
|
|
columns := seedUpdateColumns(item)
|
2026-08-28 22:23:13 +08:00
|
|
|
|
if value, ok := columns["knowledge_ids"]; !ok || value != "11" {
|
|
|
|
|
|
t.Fatalf("seed update must keep knowledge bindings, got %#v", value)
|
2026-07-28 12:30:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|