package knowledge import "testing" func TestSelectTopPatrolTagsLimitsAndDedupes(t *testing.T) { tags := SelectTopPatrolTags([]PatrolTagCandidate{ {Tag: "化療 沐浴乳", Score: 100, Reason: "受眾提問", Intent: patrolIntentRelevance}, {Tag: "化療 沐浴乳 推薦", Score: 98, Reason: "受眾提問", Intent: patrolIntentRelevance}, {Tag: "無香沐浴乳 推薦", Score: 90, Reason: "產品匹配", Intent: patrolIntentRelevance}, {Tag: "乳癌 沐浴乳", Score: 88, Reason: "內容支柱", Intent: patrolIntentRelevance}, {Tag: "荷爾蒙 敏感", Score: 80, Reason: "內容支柱", Intent: patrolIntentRelevance}, {Tag: "化療 皮膚", Score: 75, Reason: "高相關延伸", Intent: patrolIntentRelevance}, {Tag: "病友 沐浴乳", Score: 70, Reason: "周邊情境", Intent: patrolIntentRelevance}, {Tag: "抗敏 沐浴乳", Score: 65, Reason: "置入產品", Intent: patrolIntentRelevance}, {Tag: "香精 過敏", Score: 60, Reason: "周邊情境", Intent: patrolIntentRelevance}, }, MaxTopPatrolTags) if len(tags) != MaxTopPatrolTags { t.Fatalf("expected %d tags, got %d: %v", MaxTopPatrolTags, len(tags), tags) } if tags[0] != "化療 沐浴乳" { t.Fatalf("expected highest score first, got %q", tags[0]) } } func TestCollectPatrolTagsCapsOutput(t *testing.T) { tags := CollectPatrolTags(PatrolTagInput{ ProductName: "抗敏無香沐浴露", MatchTags: []string{"化療", "無香沐浴乳", "乳癌"}, Questions: []string{ "化療後皮膚敏感要換什麼沐浴乳", "乳癌治療中不能用有香味的沐浴乳嗎", "癌症病人適合用的無香沐浴乳推薦", "荷爾蒙治療皮膚乾癢怎麼挑沐浴乳", }, Pillars: []string{ "化療皮膚敏感無香沐浴乳", "乳癌病友沐浴用品挑選", "荷爾蒙治療對香味敏感", "癌症康復後換清潔品牌", }, }) if len(tags) > MaxTopPatrolTags { t.Fatalf("expected <=%d tags, got %d: %v", MaxTopPatrolTags, len(tags), tags) } }