Files
Agent-System-Backend/internal/runmgr/material_first_checkpoint_test.go
T

60 lines
2.4 KiB
Go

package runmgr
import (
"strings"
"testing"
core "agent-system-core"
)
func TestMaterialFirstFindingBeforeOptionalSearch(t *testing.T) {
c := materialRetrievalContext(t)
task := buildMaterialTaskFor(c)
t.Logf("material task UTF-8 bytes=%d", len(task))
first := strings.Index(task, "先从已提供的实质原文发布一条 reading 材料记载")
search := strings.Index(task, "knowledge_search")
if first != 0 || search <= first || !strings.Contains(task[:search], "只写一项") {
t.Fatalf("material task did not place one sourced finding before optional search: first=%d search=%d task=%q", first, search, task)
}
}
func TestMaterialNoForcedFindingWithoutSource(t *testing.T) {
c := materialRetrievalContext(t)
c.attachments = []core.ParsedDocument{{Meta: core.DocMeta{Filename: "空.txt", Parser: "builtin:txt"}}}
task := buildMaterialTaskFor(c)
if strings.Contains(task, "先从已提供的实质原文发布一条") || strings.Contains(task, "sourceId=src_") {
t.Fatalf("empty material was told to invent a checkpoint: %q", task)
}
}
func TestWorkCheckpointTwoUsefulPhases(t *testing.T) {
c := materialRetrievalContext(t)
if task := buildMaterialTaskFor(c); !strings.HasPrefix(task, "先从已提供的实质原文发布一条 reading 材料记载") {
t.Fatal("first useful phase was not prioritized before final organization")
}
first := validCheckpoint(c, "reading-1")
first.PhaseID = "reading"
first.Findings[0].FindingKey = "recorded-date"
first.Findings[0].Text = "原文记载上线六月"
if _, err := c.PublishWorkCheckpoint(first); err != nil {
t.Fatal(err)
}
second := validCheckpoint(c, "crosscheck-2")
second.PhaseID = "crosscheck"
second.Findings[0].FindingKey = "date-to-confirm"
second.Findings[0].Kind = "needs_user"
second.Findings[0].Text = "上线日期还需要确认"
if _, err := c.PublishWorkCheckpoint(second); err != nil {
t.Fatal(err)
}
card, err := c.mgr.st.GetCard(c.run.Owner, c.task.cardID)
if err != nil || card.Task == nil {
t.Fatalf("task card missing: %v", err)
}
if card.Task.ExecutionState != "running" || card.Task.CheckpointSeq != 2 || len(card.Task.Findings) != 2 ||
card.Task.Findings[0].Kind != "material_record" || card.Task.Findings[1].Kind != "needs_user" ||
card.Task.Findings[0].ID == card.Task.Findings[1].ID {
t.Fatalf("reading and crosscheck were not distinct running findings: %+v", card.Task)
}
}