Fix report citation chip labels

This commit is contained in:
liyizhouAI 2026-06-08 21:47:31 +08:00
parent 5b00fae91e
commit 8990b60fe5
1 changed files with 39 additions and 9 deletions

View File

@ -280,13 +280,13 @@
:key="citation.id"
class="citation-chip"
type="button"
:data-citation-id="citation.anchor_id || citation.id"
:data-section-index="citation.section_index"
:data-agent-id="citation.agent_id ?? ''"
:data-citation-id="citationAnchorId(citation)"
:data-section-index="citationSectionIndex(citation)"
:data-agent-id="citationAgentId(citation)"
:title="citation.title"
@click.stop="jumpToCitation(citation)"
>
{{ citation.label }}
{{ citationLabel(citation) }}
</button>
</div>
</div>
@ -524,10 +524,44 @@ const citationTargetSection = (citation) => {
const raw = citation.section_index || citation.sectionIndex
const parsed = Number(raw)
if (Number.isFinite(parsed) && parsed > 0) return parsed
const anchor = citation.anchor || citation.anchor_id || citation.anchorId
const anchorMatch = typeof anchor === 'string' ? anchor.match(/^section-(\d+)$/) : null
if (anchorMatch) return Number(anchorMatch[1]) + 1
const id = citation.id || citation.anchor_id || citation.anchorId
const sectionMatch = typeof id === 'string' ? id.match(/^S(\d{1,2})$/i) : null
if (sectionMatch) return Number(sectionMatch[1])
if (citation.agent_id !== undefined || citation.agentId !== undefined) return 2
const agentMatch = typeof id === 'string' ? id.match(/^A(\d{1,2})$/i) : null
if (agentMatch) return 2
return 1
}
const citationAgentId = (citation) => {
if (!citation) return ''
if (citation.agent_id !== undefined && citation.agent_id !== null) return citation.agent_id
if (citation.agentId !== undefined && citation.agentId !== null) return citation.agentId
const id = citation.id || citation.anchor_id || citation.anchorId
const match = typeof id === 'string' ? id.match(/^A(\d{1,2})$/i) : null
return match ? Number(match[1]) : ''
}
const citationAnchorId = (citation) => {
if (!citation) return ''
const raw = citation.anchor_id || citation.anchorId || citation.id
if (raw) return String(raw).toUpperCase()
const agentId = citationAgentId(citation)
if (agentId !== '') return `A${String(Number(agentId)).padStart(2, '0')}`
return `S${String(citationTargetSection(citation)).padStart(2, '0')}`
}
const citationSectionIndex = (citation) => citationTargetSection(citation)
const citationLabel = (citation) => {
const label = citation?.label || citation?.display_label || citation?.displayLabel
if (label) return label
return citationAnchorId(citation)
}
const citationIdFromDataset = (target) => {
if (target.dataset.citationId) return target.dataset.citationId
if (target.dataset.agentId) return `A${String(Number(target.dataset.agentId)).padStart(2, '0')}`
@ -582,11 +616,7 @@ const jumpToSection = (sectionIndex) => {
const jumpToCitation = (citation) => {
const sectionIndex = citationTargetSection(citation)
const citationId = citation.anchor_id || citation.id || (
citation.agent_id !== undefined
? `A${String(Number(citation.agent_id)).padStart(2, '0')}`
: `S${String(sectionIndex).padStart(2, '0')}`
)
const citationId = citationAnchorId(citation)
const zeroIndex = sectionIndex - 1
const newSet = new Set(collapsedSections.value)