2026-06-24 16:48:56 +00:00
|
|
|
package placement
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
libkg "haixun-backend/internal/library/knowledge"
|
2026-06-25 08:20:03 +00:00
|
|
|
"haixun-backend/internal/library/websearch"
|
2026-06-24 16:48:56 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestCollectPatrolTagQueriesManualOnly(t *testing.T) {
|
2026-06-25 08:20:03 +00:00
|
|
|
queries := CollectPatrolTagQueries([]string{"化療 沐浴乳"}, nil, websearch.ProviderBrave)
|
2026-06-24 16:48:56 +00:00
|
|
|
if len(queries) < 2 {
|
|
|
|
|
t.Fatalf("expected relevance + recency queries, got %d", len(queries))
|
|
|
|
|
}
|
|
|
|
|
if queries[0].Tag != "化療 沐浴乳" || queries[0].Dimension != QueryRelevance {
|
|
|
|
|
t.Fatalf("unexpected first query: %+v", queries[0])
|
|
|
|
|
}
|
|
|
|
|
if queries[0].ProductFitScore != defaultPatrolProductFit {
|
|
|
|
|
t.Fatalf("expected default fit %d, got %d", defaultPatrolProductFit, queries[0].ProductFitScore)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCollectPatrolTagQueriesUsesGraphFit(t *testing.T) {
|
|
|
|
|
nodes := []libkg.Node{
|
|
|
|
|
{
|
|
|
|
|
ID: "n1",
|
|
|
|
|
Label: "化療 沐浴乳",
|
|
|
|
|
ProductFitScore: 92,
|
|
|
|
|
DerivedTags: libkg.DerivedTags{
|
|
|
|
|
Relevance: []string{"化療 沐浴乳"},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
2026-06-25 08:20:03 +00:00
|
|
|
queries := CollectPatrolTagQueries([]string{"化療 沐浴乳"}, nodes, websearch.ProviderBrave)
|
2026-06-24 16:48:56 +00:00
|
|
|
if len(queries) == 0 || queries[0].ProductFitScore != 92 {
|
|
|
|
|
t.Fatalf("expected graph fit 92, got %+v", queries)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestResolveTagQueriesPrefersPatrolKeywords(t *testing.T) {
|
|
|
|
|
nodes := []libkg.Node{
|
|
|
|
|
{ID: "n1", Label: "ignored", SelectedForScan: true, DerivedTags: libkg.DerivedTags{Relevance: []string{"ignored"}}},
|
|
|
|
|
}
|
2026-06-25 08:20:03 +00:00
|
|
|
queries := ResolveTagQueries(nodes, []string{"手動 關鍵字"}, websearch.ProviderBrave)
|
2026-06-24 16:48:56 +00:00
|
|
|
if len(queries) == 0 || queries[0].Tag != "手動 關鍵字" {
|
|
|
|
|
t.Fatalf("expected patrol keyword query, got %+v", queries)
|
|
|
|
|
}
|
|
|
|
|
}
|