diff --git a/src/api/types.ts b/src/api/types.ts
index 8ba93d48..01d759fa 100644
--- a/src/api/types.ts
+++ b/src/api/types.ts
@@ -1369,6 +1369,14 @@ export interface ManualTransferPreviewItem {
episode_end?: number | string
// Part
part?: string
+ // 原始识别字符串
+ org_string?: string
+ // 应用的自定义识别词
+ apply_words?: string[]
+ // 制作组/字幕组
+ resource_team?: string
+ // 自定义占位符
+ customization?: string
}
// 手动整理预览数据
diff --git a/src/components/dialog/ReorganizeDialog.vue b/src/components/dialog/ReorganizeDialog.vue
index 4c9474ae..0fe78587 100644
--- a/src/components/dialog/ReorganizeDialog.vue
+++ b/src/components/dialog/ReorganizeDialog.vue
@@ -511,6 +511,22 @@ const previewFileRows = computed(() => {
})
})
+// 标准化预览项中的识别词命中详情
+function getPreviewApplyWords(item: ManualTransferPreviewItem) {
+ return (item.apply_words ?? []).filter(Boolean)
+}
+
+// 手动整理识别词应用详情
+const previewCustomWordDetails = computed(() => {
+ return filteredPreviewItems.value
+ .map(item => ({
+ sourceName: getFileName(item.source),
+ orgString: item.org_string,
+ applyWords: getPreviewApplyWords(item),
+ }))
+ .filter(item => item.applyWords.length > 0)
+})
+
// 是否需要拓宽窗口
const previewNeedsWideLayout = computed(() => {
const candidates = [...previewFileRows.value.map(item => `${item.sourceName}${item.targetName}`)]
@@ -1439,6 +1455,36 @@ onUnmounted(() => {
{{ previewEpisodeCountText }}
+
@@ -1698,6 +1744,66 @@ onUnmounted(() => {
white-space: nowrap;
}
+.preview-custom-words {
+ display: flex;
+ flex-direction: column;
+ border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
+ border-radius: 0.75rem;
+ gap: 0.75rem;
+ padding-block: 0.875rem;
+ padding-inline: 1rem;
+}
+
+.preview-custom-words__title {
+ display: inline-flex;
+ align-items: center;
+ color: rgb(var(--v-theme-info));
+ font-size: 0.875rem;
+ font-weight: 600;
+ gap: 0.375rem;
+}
+
+.preview-custom-words__items {
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+ min-inline-size: 0;
+}
+
+.preview-custom-words__item {
+ display: flex;
+ flex-direction: column;
+ gap: 0.375rem;
+ min-inline-size: 0;
+}
+
+.preview-custom-words__source {
+ overflow-wrap: anywhere;
+ color: rgb(var(--v-theme-on-surface));
+ font-size: 0.8125rem;
+ font-weight: 600;
+ line-height: 1.4;
+}
+
+.preview-custom-words__original {
+ overflow-wrap: anywhere;
+ color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
+ font-size: 0.75rem;
+ line-height: 1.4;
+}
+
+.preview-custom-words__chips {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.375rem;
+ min-inline-size: 0;
+}
+
+.preview-custom-words__chip {
+ max-inline-size: 100%;
+ white-space: normal;
+}
+
.reorganize-preview-pane__scroll {
display: flex;
overflow: hidden auto;
@@ -1797,11 +1903,13 @@ onUnmounted(() => {
}
.preview-file-row__path {
- overflow: hidden;
+ overflow: visible;
+ overflow-wrap: anywhere;
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
font-size: 0.8125rem;
- text-overflow: ellipsis;
- white-space: nowrap;
+ line-height: 1.4;
+ white-space: normal;
+ word-break: break-all;
}
.preview-file-row__card--target .preview-file-row__name {
diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts
index fef6e025..bc8411ad 100644
--- a/src/locales/en-US.ts
+++ b/src/locales/en-US.ts
@@ -2643,6 +2643,7 @@ export default {
previewSeasonInfo: 'Season',
previewSeasonLabel: 'Season',
previewEpisodeCount: 'Episodes',
+ customWordsApplied: 'Recognition Word Details',
previewAfterColumn: 'After',
previewBeforeColumn: 'Before',
previewFileNameColumn: 'Filename',
diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts
index e5656215..5e0a6ccf 100644
--- a/src/locales/zh-CN.ts
+++ b/src/locales/zh-CN.ts
@@ -2596,6 +2596,7 @@ export default {
previewSeasonInfo: '季信息',
previewSeasonLabel: '季',
previewEpisodeCount: '总集数',
+ customWordsApplied: '识别词应用详情',
previewAfterColumn: '整理后',
previewBeforeColumn: '整理前',
previewFileNameColumn: '文件名',
diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts
index 0b17c914..5359fafe 100644
--- a/src/locales/zh-TW.ts
+++ b/src/locales/zh-TW.ts
@@ -2597,6 +2597,7 @@ export default {
previewSeasonInfo: '季資訊',
previewSeasonLabel: '季',
previewEpisodeCount: '總集數',
+ customWordsApplied: '識別詞應用詳情',
previewAfterColumn: '整理後',
previewBeforeColumn: '整理前',
previewFileNameColumn: '文件名',