mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-04 23:18:44 +08:00
fix: 恢复识别结果媒体分类展示
This commit is contained in:
@@ -1653,6 +1653,9 @@ export default {
|
|||||||
title: 'Meta Info',
|
title: 'Meta Info',
|
||||||
caption: 'Parsed name, episodes, and resource terms',
|
caption: 'Parsed name, episodes, and resource terms',
|
||||||
},
|
},
|
||||||
|
classification: {
|
||||||
|
title: 'Media Classification',
|
||||||
|
},
|
||||||
source: {
|
source: {
|
||||||
title: 'Recognition Source',
|
title: 'Recognition Source',
|
||||||
caption: 'The media source matched by this recognition',
|
caption: 'The media source matched by this recognition',
|
||||||
|
|||||||
@@ -1642,6 +1642,9 @@ export default {
|
|||||||
title: '元信息',
|
title: '元信息',
|
||||||
caption: '解析出的名称、季集和资源信息',
|
caption: '解析出的名称、季集和资源信息',
|
||||||
},
|
},
|
||||||
|
classification: {
|
||||||
|
title: '媒体分类',
|
||||||
|
},
|
||||||
source: {
|
source: {
|
||||||
title: '识别数据源',
|
title: '识别数据源',
|
||||||
caption: '本次识别匹配到的媒体数据源',
|
caption: '本次识别匹配到的媒体数据源',
|
||||||
|
|||||||
@@ -1641,6 +1641,9 @@ export default {
|
|||||||
title: '元資訊',
|
title: '元資訊',
|
||||||
caption: '解析出的名稱、季集和資源資訊',
|
caption: '解析出的名稱、季集和資源資訊',
|
||||||
},
|
},
|
||||||
|
classification: {
|
||||||
|
title: '媒體分類',
|
||||||
|
},
|
||||||
source: {
|
source: {
|
||||||
title: '識別資料源',
|
title: '識別資料源',
|
||||||
caption: '本次識別匹配到的媒體資料源',
|
caption: '本次識別匹配到的媒體資料源',
|
||||||
|
|||||||
@@ -143,10 +143,13 @@ const mediaInfo = computed(() => nameTestResult.value?.media_info)
|
|||||||
const isRecognized = computed(() => Boolean(metaInfo.value?.name))
|
const isRecognized = computed(() => Boolean(metaInfo.value?.name))
|
||||||
const resultTitle = computed(() => mediaInfo.value?.title || metaInfo.value?.name || t('nameTest.unrecognized'))
|
const resultTitle = computed(() => mediaInfo.value?.title || metaInfo.value?.name || t('nameTest.unrecognized'))
|
||||||
const resultSubtitle = computed(() => {
|
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)
|
if (metaInfo.value?.season_episode) parts.push(metaInfo.value.season_episode)
|
||||||
return parts.filter(Boolean).join(' · ') || t('nameTest.waitingResult')
|
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(() => {
|
const resourceChips = computed(() => {
|
||||||
return [
|
return [
|
||||||
metaInfo.value?.web_source,
|
metaInfo.value?.web_source,
|
||||||
@@ -229,6 +232,11 @@ const pipelineSteps = computed<PipelineStep[]>(() => [
|
|||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
.join(' · ') || '-',
|
.join(' · ') || '-',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
icon: 'mdi-shape-outline',
|
||||||
|
title: t('nameTest.steps.classification.title'),
|
||||||
|
value: mediaClassification.value,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
icon: 'mdi-database-search-outline',
|
icon: 'mdi-database-search-outline',
|
||||||
source: recognizedMediaSource.value,
|
source: recognizedMediaSource.value,
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ vi.mock('vue-toastification', () => ({
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
interface RecognizedMedia {
|
interface RecognizedMedia {
|
||||||
|
category?: string
|
||||||
media_id: string
|
media_id: string
|
||||||
source: string
|
source: string
|
||||||
title: string
|
title: string
|
||||||
@@ -114,6 +115,20 @@ describe('NameTestView media identity', () => {
|
|||||||
expect(sourceDisplay.querySelector('.media-source-logo')).toBeInTheDocument()
|
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 () => {
|
it('closes the recognition dialog before navigating to the media detail', async () => {
|
||||||
const eventOrder: string[] = []
|
const eventOrder: string[] = []
|
||||||
const onClose = vi.fn(() => eventOrder.push('close'))
|
const onClose = vi.fn(() => eventOrder.push('close'))
|
||||||
|
|||||||
Reference in New Issue
Block a user