package service import ( "git.sundynix.cn/Blizzard/Veyra/internal/model" "testing" ) func TestAIConclusionValidation(t *testing.T) { c := model.CandidateRevision{Snapshot: model.CandidateContent{Symbol: "000042", Exchange: "SZSE", Evidence: []model.CandidateEvidence{{SourceURL: "https://example.com"}}}} valid := model.AIConclusion{SchemaVersion: "candidate_analysis.v1", Symbol: "000042", Exchange: "SZSE", Decision: "APPROVE", Summary: "日线研究", Risks: "历史样本有限", EvidenceIndices: []int{0}, MissingInformation: []string{"未提供公告"}} if err := ValidateAIConclusion(valid, c); err != nil { t.Fatal(err) } for _, change := range []func(*model.AIConclusion){func(a *model.AIConclusion) { a.Symbol = "000043" }, func(a *model.AIConclusion) { a.Decision = "BUY" }, func(a *model.AIConclusion) { a.EvidenceIndices = []int{1} }, func(a *model.AIConclusion) { a.EvidenceIndices = []int{0, 0} }, func(a *model.AIConclusion) { a.EvidenceIndices = []int{} }, func(a *model.AIConclusion) { a.Risks = "" }, func(a *model.AIConclusion) { a.MissingInformation = nil }} { a := valid change(&a) if ValidateAIConclusion(a, c) == nil { t.Fatal("invalid conclusion accepted") } } }