sync: migrate ai-operator to Gitea (2026-08-10)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"ai-operator/internal/dialogue/state"
|
||||
"ai-operator/internal/kb"
|
||||
)
|
||||
|
||||
func TestBuildSystemPromptGuardrails(t *testing.T) {
|
||||
p := BuildSystemPrompt(PromptContext{State: state.StateLanguageSelection})
|
||||
if !strings.Contains(p, "Жанна") || !strings.Contains(p, "QazAimaqGas") || !strings.Contains(p, "Do not block on explicit language selection") {
|
||||
t.Fatalf("language prompt missing guardrails: %s", p)
|
||||
}
|
||||
p = BuildSystemPrompt(PromptContext{State: state.StateReadyToHelp, Language: state.LanguageRU, RegionCode: "almaty_city"})
|
||||
if !strings.Contains(p, "search_knowledge_base") || !strings.Contains(p, "do not invent") || !strings.Contains(p, "global KB") {
|
||||
t.Fatalf("ready prompt missing KB guardrails: %s", p)
|
||||
}
|
||||
if strings.Contains(strings.ToLower(p), "authorization") || strings.Contains(p, "OPENAI_API_KEY") {
|
||||
t.Fatalf("prompt leaked secret wording: %s", p)
|
||||
}
|
||||
}
|
||||
|
||||
func TestKnowledgeAnswerUsesKBOnly(t *testing.T) {
|
||||
resp := kb.SearchResponse{OK: true, ReasonCode: "ok", MessageKey: "knowledge.results_found", Results: []kb.SearchResult{{
|
||||
Title: "Test title",
|
||||
Content: "Краткий ответ: подключение выполняется по заявке.",
|
||||
Language: "ru",
|
||||
SourceURI: "source.docx",
|
||||
Citation: kb.Citation{DocumentTitle: "Test title", SourceURI: "source.docx"},
|
||||
}}}
|
||||
ru := BuildKnowledgeAnswer(state.LanguageRU, resp)
|
||||
if !strings.Contains(ru, "По информации, которую я вижу") || !strings.Contains(ru, "подключение выполняется") {
|
||||
t.Fatalf("bad ru answer: %s", ru)
|
||||
}
|
||||
kkResp := resp
|
||||
kkResp.CrossLanguageFallbackUsed = true
|
||||
kk := BuildKnowledgeAnswer(state.LanguageKK, kkResp)
|
||||
if !strings.Contains(kk, "Мен көріп тұрған ақпарат бойынша") || !strings.Contains(kk, "подключение выполняется") {
|
||||
t.Fatalf("bad kk fallback answer: %s", kk)
|
||||
}
|
||||
}
|
||||
|
||||
func TestKnowledgeNoAnswer(t *testing.T) {
|
||||
resp := kb.SearchResponse{OK: false, ReasonCode: "no_relevant_knowledge", MessageKey: "knowledge.no_answer"}
|
||||
if got := BuildKnowledgeAnswer(state.LanguageRU, resp); !strings.Contains(got, "нет точной информации") {
|
||||
t.Fatalf("bad no answer ru: %s", got)
|
||||
}
|
||||
if got := BuildKnowledgeAnswer(state.LanguageKK, resp); !strings.Contains(got, "нақты ақпарат жоқ") {
|
||||
t.Fatalf("bad no answer kk: %s", got)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user