From 1129d63fcc92e29ee5cac9b211b6a5140f5fd380 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 5 Aug 2026 06:56:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=81=A2=E5=A4=8D=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=AA=92=E4=BD=93=E5=88=86=E7=B1=BB=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/en-US.ts | 3 +++ src/locales/zh-CN.ts | 3 +++ src/locales/zh-TW.ts | 3 +++ src/views/system/NameTestView.vue | 10 +++++++++- src/views/system/__tests__/NameTestView.spec.ts | 15 +++++++++++++++ 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index e8bdc7dc..9791b136 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -1653,6 +1653,9 @@ export default { title: 'Meta Info', caption: 'Parsed name, episodes, and resource terms', }, + classification: { + title: 'Media Classification', + }, source: { title: 'Recognition Source', caption: 'The media source matched by this recognition', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 879b8249..74278504 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -1642,6 +1642,9 @@ export default { title: '元信息', caption: '解析出的名称、季集和资源信息', }, + classification: { + title: '媒体分类', + }, source: { title: '识别数据源', caption: '本次识别匹配到的媒体数据源', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 2ab6c5e5..705bbd28 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -1641,6 +1641,9 @@ export default { title: '元資訊', caption: '解析出的名稱、季集和資源資訊', }, + classification: { + title: '媒體分類', + }, source: { title: '識別資料源', caption: '本次識別匹配到的媒體資料源', diff --git a/src/views/system/NameTestView.vue b/src/views/system/NameTestView.vue index f34be8e0..f72cac75 100644 --- a/src/views/system/NameTestView.vue +++ b/src/views/system/NameTestView.vue @@ -143,10 +143,13 @@ const mediaInfo = computed(() => nameTestResult.value?.media_info) const isRecognized = computed(() => Boolean(metaInfo.value?.name)) const resultTitle = computed(() => mediaInfo.value?.title || metaInfo.value?.name || t('nameTest.unrecognized')) const resultSubtitle = computed(() => { - const parts = [mediaInfo.value?.year || metaInfo.value?.year, mediaInfo.value?.type || metaInfo.value?.type] + const parts = [mediaInfo.value?.year || metaInfo.value?.year] if (metaInfo.value?.season_episode) parts.push(metaInfo.value.season_episode) return parts.filter(Boolean).join(' · ') || t('nameTest.waitingResult') }) +const mediaClassification = computed(() => { + return [mediaInfo.value?.type || metaInfo.value?.type, mediaInfo.value?.category].filter(Boolean).join(' · ') || '-' +}) const resourceChips = computed(() => { return [ metaInfo.value?.web_source, @@ -229,6 +232,11 @@ const pipelineSteps = computed(() => [ .filter(Boolean) .join(' · ') || '-', }, + { + icon: 'mdi-shape-outline', + title: t('nameTest.steps.classification.title'), + value: mediaClassification.value, + }, { icon: 'mdi-database-search-outline', source: recognizedMediaSource.value, diff --git a/src/views/system/__tests__/NameTestView.spec.ts b/src/views/system/__tests__/NameTestView.spec.ts index c0915d1e..a93fe58b 100644 --- a/src/views/system/__tests__/NameTestView.spec.ts +++ b/src/views/system/__tests__/NameTestView.spec.ts @@ -35,6 +35,7 @@ vi.mock('vue-toastification', () => ({ })) interface RecognizedMedia { + category?: string media_id: string source: string title: string @@ -114,6 +115,20 @@ describe('NameTestView media identity', () => { expect(sourceDisplay.querySelector('.media-source-logo')).toBeInTheDocument() }) + it('shows the recognized media type and category below metadata', async () => { + await renderRecognizedMedia({ + category: '动漫', + media_id: '485', + source: 'bangumi', + title: '测试动画', + type: '电视剧', + year: '2026', + }) + + const classificationStep = screen.getByText('媒体分类').closest('.pipeline-step') + expect(classificationStep).toHaveTextContent('媒体分类电视剧 · 动漫') + }) + it('closes the recognition dialog before navigating to the media detail', async () => { const eventOrder: string[] = [] const onClose = vi.fn(() => eventOrder.push('close'))