Source-only publication of reviewed commit 64e96a7f423673dc29ad56485be9fc79bce8af1c.
Passed in isolation: focused frontend/backend tests, race checks, TypeScript typecheck, lint, Go compilation, Flowgram build, and deterministic SDK build/tests.
Not accepted as a production release: Next.js export/native assembly remains blocked by environment memory limits; browser interaction and MySQL staging acceptance remain unverified. No production server, database/schema, runtime configuration, deployment, release tag, or workflow execution was performed.
Expected source tree: 0a4a7528e9.
48 lines
2.5 KiB
Go
48 lines
2.5 KiB
Go
package builders
|
||
|
||
import (
|
||
"agent-desk/internal/models"
|
||
"agent-desk/internal/pkg/enums"
|
||
"agent-desk/internal/pkg/i18nx"
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
func TestKnowledgeBuildersLocalizeLabelsWithoutChangingContent(t *testing.T) {
|
||
for _, locale := range []string{"en-US", "ru-RU", "zh-CN"} {
|
||
t.Run(locale, func(t *testing.T) {
|
||
kb := BuildKnowledgeBase(&models.KnowledgeBase{Name: "用户 название", KnowledgeType: "faq", Status: enums.StatusOk, AnswerMode: 1}, locale)
|
||
if kb.Name != "用户 название" || kb.KnowledgeTypeName != i18nx.Getf(locale, "knowledge.labels.type.faq") || kb.StatusName != i18nx.Getf(locale, "knowledge.labels.status.0") {
|
||
t.Fatalf("unexpected labels/content: %+v", kb)
|
||
}
|
||
raw := " 原文 answer\n回答: keep this "
|
||
faq := BuildKnowledgeFAQ(&models.KnowledgeFAQ{Question: raw, Answer: raw, Status: enums.StatusDisabled, IndexStatus: enums.KnowledgeDocumentIndexStatusFailed, IndexError: "SQL failed password=fixture-only"}, locale)
|
||
if faq.Question != raw || faq.Answer != raw {
|
||
t.Fatal("authored content changed")
|
||
}
|
||
if faq.IndexStatusName != i18nx.Getf(locale, "knowledge.labels.index.failed") || faq.StatusName != i18nx.Getf(locale, "knowledge.labels.status.1") {
|
||
t.Fatalf("unexpected labels: %+v", faq)
|
||
}
|
||
if faq.IndexError != i18nx.Getf(locale, "error.knowledge.indexFailed") || strings.Contains(faq.IndexError, "fixture-only") {
|
||
t.Fatalf("unsafe index error %q", faq.IndexError)
|
||
}
|
||
doc := BuildKnowledgeDocument(&models.KnowledgeDocument{Content: raw, IndexError: "provider raw error"}, locale)
|
||
list := BuildKnowledgeDocumentList(&models.KnowledgeDocument{IndexError: "provider raw error"}, locale)
|
||
if doc.Content != raw || doc.IndexError != faq.IndexError || list.IndexError != faq.IndexError {
|
||
t.Fatal("document content or safe error mismatch")
|
||
}
|
||
log := BuildKnowledgeRetrieveLog(&models.KnowledgeRetrieveLog{Answer: raw, Question: raw, AnswerStatus: 2, TraceData: raw}, locale)
|
||
hit := BuildKnowledgeRetrieveHitResponse(&models.KnowledgeRetrieveHit{Snippet: raw, ChunkType: "faq"}, locale)
|
||
if log.Answer != raw || log.Question != raw || log.TraceData != raw || hit.Snippet != raw {
|
||
t.Fatal("historical data was rewritten")
|
||
}
|
||
if log.AnswerStatusName != i18nx.Getf(locale, "knowledge.labels.answer.2") {
|
||
t.Fatalf("answer label = %q", log.AnswerStatusName)
|
||
}
|
||
})
|
||
}
|
||
if BuildKnowledgeFAQ(&models.KnowledgeFAQ{}, "en-US").IndexError != "" {
|
||
t.Fatal("empty error should remain empty")
|
||
}
|
||
}
|