fix media supply citation attribution
Desktop Client Build / Resolve Build Metadata (push) Successful in 26s
Frontend CI / Frontend (push) Successful in 2m53s
Backend CI / Backend (push) Successful in 16m37s
Desktop Client Build / Build Desktop Client (push) Successful in 23m40s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 28s

This commit is contained in:
2026-06-25 23:53:35 +08:00
parent 89ef95b65d
commit 6780963c28
16 changed files with 1033 additions and 457 deletions
@@ -583,6 +583,38 @@ func TestBuildMonitoringCitationFactResolvesContentForQwen(t *testing.T) {
}
}
func TestBuildMonitoringCitationFactResolvesMediaSupplyContentSource(t *testing.T) {
aliasArticleID := int64(42)
sourceID := int64(9001)
normalizedURL := "https://example.com/submitted/article"
input := MonitoringSourceItem{
URL: "https://example.com/submitted/article?utm_source=chat",
NormalizedURL: &normalizedURL,
}
aliasMap := map[string]monitoringAliasResolution{
normalizedURL: {
ArticleID: &aliasArticleID,
NormalizedURLKey: normalizedURL,
SourceType: monitoringContentSourceMediaSupplyOrderItem,
SourceID: &sourceID,
},
}
fact, ok := buildMonitoringCitationFact(input, aliasMap, true)
if !ok {
t.Fatal("buildMonitoringCitationFact() returned !ok")
}
if fact.ArticleID == nil || *fact.ArticleID != aliasArticleID {
t.Fatalf("ArticleID = %v, want %d", fact.ArticleID, aliasArticleID)
}
if fact.ContentSourceType == nil || *fact.ContentSourceType != monitoringContentSourceMediaSupplyOrderItem {
t.Fatalf("ContentSourceType = %v, want %q", fact.ContentSourceType, monitoringContentSourceMediaSupplyOrderItem)
}
if fact.ContentSourceID == nil || *fact.ContentSourceID != sourceID {
t.Fatalf("ContentSourceID = %v, want %d", fact.ContentSourceID, sourceID)
}
}
func TestScoreMonitoringAliasCandidateUsesCanonicalArticleKey(t *testing.T) {
input := monitoringAliasLookupInput{
NormalizedURL: "https://m.163.com/dy/article/KRPRE8DJ0556MCR0.html",
@@ -613,6 +645,70 @@ func TestScoreMonitoringAliasCandidateRejectsSameDomainDifferentArticle(t *testi
}
}
func TestMonitoringPublishedAliasIndexMatchesMediaSupplySubmission(t *testing.T) {
index := make(monitoringPublishedAliasIndex)
sourceID := int64(9001)
mediaAlias := monitoringPublishedAlias{
ArticleID: 42,
ArticleTitle: "投稿文章",
PublishPlatform: monitoringMediaSupplySubmissionCitationLabel,
OriginalURL: "https://m.example.com/submitted/article?id=123&utm_source=chat",
NormalizedURL: "https://www.example.com/submitted/article?id=123",
SourceType: monitoringContentSourceMediaSupplyOrderItem,
SourceID: sourceID,
SourcePriority: 1,
}
addMonitoringPublishedAliasToIndex(index, mediaAlias)
match, ok := index.Match(
"https://www.example.com/submitted/article?id=123&utm_medium=ai",
"https://www.example.com/submitted/article?id=123",
)
if !ok {
t.Fatal("Match() = false, want media supply alias match")
}
if match.SourceType != monitoringContentSourceMediaSupplyOrderItem {
t.Fatalf("SourceType = %q, want %q", match.SourceType, monitoringContentSourceMediaSupplyOrderItem)
}
if match.SourceID != sourceID {
t.Fatalf("SourceID = %d, want %d", match.SourceID, sourceID)
}
}
func TestMonitoringPublishedAliasIndexPrefersMediaSupplySubmission(t *testing.T) {
index := make(monitoringPublishedAliasIndex)
normalizedURL := "https://www.example.com/submitted/article?id=123"
addMonitoringPublishedAliasToIndex(index, monitoringPublishedAlias{
ArticleID: 42,
OriginalURL: normalizedURL,
NormalizedURL: normalizedURL,
SourceType: monitoringContentSourcePublishedArticle,
SourceID: 42,
SourcePriority: 2,
})
addMonitoringPublishedAliasToIndex(index, monitoringPublishedAlias{
ArticleID: 42,
OriginalURL: normalizedURL,
NormalizedURL: normalizedURL,
SourceType: monitoringContentSourceMediaSupplyOrderItem,
SourceID: 9001,
SourcePriority: 1,
})
match, ok := index.Match(normalizedURL, normalizedURL)
if !ok {
t.Fatal("Match() = false, want media supply alias match")
}
if match.SourceType != monitoringContentSourceMediaSupplyOrderItem {
t.Fatalf("SourceType = %q, want %q", match.SourceType, monitoringContentSourceMediaSupplyOrderItem)
}
if match.SourceID != 9001 {
t.Fatalf("SourceID = %d, want 9001", match.SourceID)
}
}
func TestBuildMonitoringRawPayloadDeepSeekIncludesSearchResultsInCitationInputs(t *testing.T) {
searchTitle := "搜索网页结果"