fix monitoring manual mark attribution
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
import { ArrowLeftOutlined, BookOutlined, CopyOutlined } from '@ant-design/icons-vue'
|
||||
import type {
|
||||
MonitoringQuestionCitationAnalysisItem,
|
||||
MonitoringQuestionContentCitation,
|
||||
MonitoringQuestionDetailCitation,
|
||||
MonitoringQuestionDetailPlatform,
|
||||
MonitoringSourceItem,
|
||||
@@ -198,7 +199,10 @@ const activeDeepSeekCitationReferenceLabels = computed<string[][]>(() => {
|
||||
})
|
||||
|
||||
const activeInlineContentCitations = computed<TrackingAnalyzedContentCitation[]>(() => {
|
||||
return analyzeInlineContentCitations(activePlatform.value)
|
||||
return analyzeContentCitations(
|
||||
activePlatform.value,
|
||||
detailQuery.data.value?.content_citations ?? [],
|
||||
)
|
||||
})
|
||||
|
||||
const shouldShowInlineContentCitations = computed(() => {
|
||||
@@ -266,7 +270,7 @@ function openImitationCreate(
|
||||
}
|
||||
|
||||
function markCitationAsExternal(citation: MonitoringQuestionDetailCitation): void {
|
||||
if (!canMarkCitationAsExternal(citation, activePlatform.value?.ai_platform_id)) {
|
||||
if (!canMarkCitationAsExternal(citation)) {
|
||||
return
|
||||
}
|
||||
markCitationMutation.mutate(citation)
|
||||
@@ -351,9 +355,8 @@ function isManualMarkedCitation(
|
||||
|
||||
function canMarkCitationAsExternal(
|
||||
citation: MonitoringQuestionDetailCitation | null | undefined,
|
||||
platformId: string | null | undefined,
|
||||
): boolean {
|
||||
if (!citation || !supportsContentCitationDisplay(platformId)) {
|
||||
if (!citation) {
|
||||
return false
|
||||
}
|
||||
if (!String(citation.cited_url ?? '').trim()) {
|
||||
@@ -367,7 +370,7 @@ function canMarkCitationAsExternal(
|
||||
}
|
||||
|
||||
function isLinkedInlineCitationPlatform(platformId: string | null | undefined): boolean {
|
||||
return platformId === 'yuanbao'
|
||||
return platformId === 'yuanbao' || platformId === 'qwen'
|
||||
}
|
||||
|
||||
function isKimiInlineCitationPlatform(platformId: string | null | undefined): boolean {
|
||||
@@ -378,10 +381,6 @@ function isDeepSeekInlineCitationPlatform(platformId: string | null | undefined)
|
||||
return platformId === 'deepseek'
|
||||
}
|
||||
|
||||
function supportsContentCitationDisplay(platformId: string | null | undefined): boolean {
|
||||
return platformId !== 'qwen'
|
||||
}
|
||||
|
||||
function createQwenSourceGroupPattern(): RegExp {
|
||||
return /\[\[source_group_web_(\d+)\]\]/g
|
||||
}
|
||||
@@ -1140,6 +1139,36 @@ function collectDeepSeekInlineCitationOccurrences(
|
||||
}))
|
||||
}
|
||||
|
||||
function analyzeContentCitations(
|
||||
platform: MonitoringQuestionDetailPlatform | null,
|
||||
contentCitations: MonitoringQuestionContentCitation[],
|
||||
): TrackingAnalyzedContentCitation[] {
|
||||
const platformId = normalizeMonitoringPlatformId(platform?.ai_platform_id)
|
||||
const serverItems = contentCitations
|
||||
.filter((item) => normalizeMonitoringPlatformId(item.ai_platform_id) === platformId)
|
||||
.sort((left, right) => {
|
||||
if (right.citation_count !== left.citation_count) {
|
||||
return right.citation_count - left.citation_count
|
||||
}
|
||||
return left.article_title.localeCompare(right.article_title, 'zh-CN')
|
||||
})
|
||||
.map((item) => ({
|
||||
key: `server-${item.ai_platform_id}-${item.source_type}-${item.source_id}`,
|
||||
contentName: item.article_title || item.source_url || '--',
|
||||
channelName: item.publish_platform || deriveCitationChannelName(item.source_url),
|
||||
citationCount: item.citation_count,
|
||||
citationRate: item.citation_rate,
|
||||
citedURL: item.source_url || null,
|
||||
sourceType: item.source_type,
|
||||
}))
|
||||
|
||||
if (serverItems.length > 0) {
|
||||
return serverItems
|
||||
}
|
||||
|
||||
return analyzeInlineContentCitations(platform)
|
||||
}
|
||||
|
||||
function analyzeInlineContentCitations(
|
||||
platform: MonitoringQuestionDetailPlatform | null,
|
||||
): TrackingAnalyzedContentCitation[] {
|
||||
@@ -1563,7 +1592,7 @@ const contentCitationColumns = computed(() => [
|
||||
</span>
|
||||
<div class="tracking-question-source-card__actions">
|
||||
<a-tooltip
|
||||
v-if="canMarkCitationAsExternal(citation, activePlatform?.ai_platform_id)"
|
||||
v-if="canMarkCitationAsExternal(citation)"
|
||||
:title="t('tracking.markAsExternalArticle')"
|
||||
>
|
||||
<button
|
||||
@@ -1592,20 +1621,14 @@ const contentCitationColumns = computed(() => [
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<a-tag
|
||||
v-if="
|
||||
citation.article_id &&
|
||||
supportsContentCitationDisplay(activePlatform?.ai_platform_id)
|
||||
"
|
||||
v-if="citation.article_id"
|
||||
color="blue"
|
||||
class="tracking-question-source-card__badge"
|
||||
>
|
||||
{{ t('tracking.contentCitationBadge') }}
|
||||
</a-tag>
|
||||
<a-tag
|
||||
v-else-if="
|
||||
isManualMarkedCitation(citation) &&
|
||||
supportsContentCitationDisplay(activePlatform?.ai_platform_id)
|
||||
"
|
||||
v-else-if="isManualMarkedCitation(citation)"
|
||||
color="green"
|
||||
class="tracking-question-source-card__badge"
|
||||
>
|
||||
@@ -1654,10 +1677,7 @@ const contentCitationColumns = computed(() => [
|
||||
{{ record.site_name }}
|
||||
</strong>
|
||||
<small
|
||||
v-if="
|
||||
record.content_citation_count > 0 &&
|
||||
supportsContentCitationDisplay(record.ai_platform_id)
|
||||
"
|
||||
v-if="record.content_citation_count > 0"
|
||||
class="meta-subtext"
|
||||
>
|
||||
{{
|
||||
|
||||
Reference in New Issue
Block a user