feat(monitoring): attribute SaaS citations by registrable domain

Persist host/registrable_domain/site_key on monitoring article URL
aliases, populate them on desktop-publish completion, and use them in
the citation pipeline to count how often SaaS-published content
appears as a citation source. Expose a /citation-summary endpoint with
a 7/30-day window switch and surface the new source-share metrics in
the tracking dashboard.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-30 17:12:09 +08:00
parent 6e6e19cccb
commit fb166fa9fe
15 changed files with 836 additions and 143 deletions
+17
View File
@@ -1191,6 +1191,9 @@ export interface MonitoringCitationRankingItem {
sample_status: string;
cited_answer_count: number;
cited_article_count: number;
citation_source_count: number;
saas_source_count: number;
saas_source_rate: number | null;
citation_rate: number | null;
}
@@ -1200,6 +1203,13 @@ export interface MonitoringCitedArticle {
publish_platform: string;
citation_count: number;
citation_rate: number | null;
source_share: number | null;
}
export interface MonitoringDashboardCitationWindow {
days: number;
from: string;
to: string;
}
export type MonitoringPlatformAuthorizationStatus =
@@ -1217,12 +1227,19 @@ export interface MonitoringDashboardRuntime {
export interface MonitoringDashboardCompositeResponse {
overview: MonitoringOverview;
runtime: MonitoringDashboardRuntime;
citation_window: MonitoringDashboardCitationWindow;
platform_breakdown: MonitoringPlatformBreakdownItem[];
hot_questions: MonitoringHotQuestion[];
citation_ranking: MonitoringCitationRankingItem[];
cited_articles: MonitoringCitedArticle[];
}
export interface MonitoringCitationSummaryResponse {
citation_window: MonitoringDashboardCitationWindow;
citation_ranking: MonitoringCitationRankingItem[];
cited_articles: MonitoringCitedArticle[];
}
export interface MonitoringQuestionDetailCitation {
cited_url: string;
cited_title: string | null;