diff --git a/mateclaw-server/src/main/java/vip/mate/wiki/dto/PageCitationWithRaw.java b/mateclaw-server/src/main/java/vip/mate/wiki/dto/PageCitationWithRaw.java index 5158b8d5..261ef752 100644 --- a/mateclaw-server/src/main/java/vip/mate/wiki/dto/PageCitationWithRaw.java +++ b/mateclaw-server/src/main/java/vip/mate/wiki/dto/PageCitationWithRaw.java @@ -6,4 +6,7 @@ import java.math.BigDecimal; * RFC-029: Citation record joined with the chunk's raw material ID. */ public record PageCitationWithRaw(Long id, Long pageId, Long chunkId, Long rawId, - Integer paragraphIdx, String anchorText, BigDecimal confidence) {} + Integer paragraphIdx, String anchorText, BigDecimal confidence, + String rawTitle, Integer chunkOrdinal, + Integer startOffset, Integer endOffset, + String snippet) {} diff --git a/mateclaw-server/src/main/java/vip/mate/wiki/repository/WikiPageCitationMapper.java b/mateclaw-server/src/main/java/vip/mate/wiki/repository/WikiPageCitationMapper.java index 20cf293c..686eb6ff 100644 --- a/mateclaw-server/src/main/java/vip/mate/wiki/repository/WikiPageCitationMapper.java +++ b/mateclaw-server/src/main/java/vip/mate/wiki/repository/WikiPageCitationMapper.java @@ -15,9 +15,15 @@ import java.util.List; @Mapper public interface WikiPageCitationMapper extends BaseMapper { - @Select("SELECT c.id, c.page_id, c.chunk_id, wc.raw_id, c.paragraph_idx, c.anchor_text, c.confidence " + + @Select("SELECT c.id, c.page_id, c.chunk_id, wc.raw_id, " + + "c.paragraph_idx, c.anchor_text, c.confidence, " + + "rm.title AS raw_title, " + + "wc.ordinal AS chunk_ordinal, " + + "wc.start_offset, wc.end_offset, " + + "SUBSTRING(wc.content, 1, 200) AS snippet " + "FROM mate_wiki_page_citation c " + "JOIN mate_wiki_chunk wc ON c.chunk_id = wc.id " + + "LEFT JOIN mate_wiki_raw_material rm ON wc.raw_id = rm.id " + "WHERE c.page_id = #{pageId} AND c.deleted = 0") List listWithRawByPageId(@Param("pageId") Long pageId); diff --git a/mateclaw-ui/src/i18n/locales/en-US.ts b/mateclaw-ui/src/i18n/locales/en-US.ts index d08101c3..06c18fb7 100644 --- a/mateclaw-ui/src/i18n/locales/en-US.ts +++ b/mateclaw-ui/src/i18n/locales/en-US.ts @@ -1284,6 +1284,10 @@ export default { repair: 'Repair page', citations: '{count} source chunks', noCitations: 'No source citations found', + citationUnknownSource: 'Unknown source', + citationChunkN: 'Chunk {n}', + citationChunkUnknown: 'Chunk unknown', + citationOffset: 'offset {start}–{end}', }, relation: { shared_chunk: 'Shared chunk', diff --git a/mateclaw-ui/src/i18n/locales/zh-CN.ts b/mateclaw-ui/src/i18n/locales/zh-CN.ts index f674ba62..cb858cd0 100644 --- a/mateclaw-ui/src/i18n/locales/zh-CN.ts +++ b/mateclaw-ui/src/i18n/locales/zh-CN.ts @@ -1294,6 +1294,10 @@ export default { repair: '修复页面', citations: '来源 {count} 个 chunk', noCitations: '未找到来源引用', + citationUnknownSource: '未知来源', + citationChunkN: '第 {n} 段', + citationChunkUnknown: '段落未知', + citationOffset: '偏移 {start}–{end}', }, relation: { shared_chunk: '共享片段', diff --git a/mateclaw-ui/src/views/Wiki/components/CitationDrawer.vue b/mateclaw-ui/src/views/Wiki/components/CitationDrawer.vue index 8ad6c35f..4841dbd5 100644 --- a/mateclaw-ui/src/views/Wiki/components/CitationDrawer.vue +++ b/mateclaw-ui/src/views/Wiki/components/CitationDrawer.vue @@ -12,11 +12,11 @@
-
{{ cit.rawTitle || 'Source' }}
+
{{ cit.rawTitle || t('wiki.page.citationUnknownSource') }}
- Chunk {{ cit.chunkOrdinal ?? '?' }} + {{ cit.chunkOrdinal != null ? t('wiki.page.citationChunkN', { n: cit.chunkOrdinal }) : t('wiki.page.citationChunkUnknown') }} - (offset {{ cit.startOffset }}–{{ cit.endOffset }}) + ({{ t('wiki.page.citationOffset', { start: cit.startOffset, end: cit.endOffset }) }})
"{{ cit.snippet }}"