From 45694cc7f269ddcd286e7509fe988254bf7fa453 Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Sun, 1 Nov 2026 14:40:57 +0800 Subject: [PATCH] Revert "fix: load cluster names before saving to cache" This reverts commit 48bcd84528abb02ef4eb73c39507c2e8a4b6c07a. --- src/store.ts | 15 ++++++++++++++- src/views/PeopleView.vue | 13 ++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/store.ts b/src/store.ts index 8c85629..faa2b0f 100644 --- a/src/store.ts +++ b/src/store.ts @@ -335,7 +335,20 @@ export async function pollClusterResults(fileUuid: string, onDone?: (results: an export async function loadClusterNames(fileUuid: string, clusters: any[]) { console.log('[loadClusterNames] loading names for', clusters.length, 'clusters') const promises = clusters.map(async (c) => { - // Always load name from trace profile (DB is source of truth for custom names) + // Only load name from DB if cluster has no meaningful name + // "Person_X" names from clustering are considered meaningful + // Only replace "Unassigned", empty, or auto-generated trace names + const currentName = c.name || '' + const isAutoGenerated = currentName === 'Unassigned' || + currentName === '' || + currentName.startsWith('Face Trace ') || + currentName.startsWith('Trace ') + + if (!isAutoGenerated) { + // Cluster already has a meaningful name (e.g., Person_X from clustering or custom name), don't overwrite + return + } + const repTid = c.representative_trace !== undefined && c.representative_trace !== null ? c.representative_trace : c.trace_ids?.[0] if (repTid != null) { try { diff --git a/src/views/PeopleView.vue b/src/views/PeopleView.vue index e3640b8..985cfb9 100644 --- a/src/views/PeopleView.vue +++ b/src/views/PeopleView.vue @@ -296,10 +296,10 @@ - -
@@ -326,7 +326,7 @@
{{ faceDetailModal.candidate?.file_uuid }}:FS#{{ faceDetailModal.candidate?.trace_id }} - nav:{{ faceDetailNavSource || 'null' }} idx:{{ faceDetailNavIndex }} list:{{ faceDetailNavList.length }} clicks:{{ navClickCount }} + nav:{{ faceDetailNavSource || 'null' }} idx:{{ faceDetailNavIndex }} list:{{ faceDetailNavList.length }}
F{{ faceDetailModal.candidate?.start_frame }}–[F{{ faceDetailModal.candidate?.frame_number }}]–F{{ faceDetailModal.candidate?.end_frame }} {{ faceDetailModal.candidate?.frame_count }} Frames @@ -1003,7 +1003,6 @@ const traceProfileJsonTitle = ref('') const faceDetailModal = ref({ show: false, candidate: null as any, newIdentityName: '' }) const faceDetailNavSource = ref<'unassigned' | 'cluster' | null>(null) const faceDetailNavIndex = ref(-1) -const navClickCount = ref(0) const regeneratingThumbnail = ref(false) const clusterDetailModal = ref({ show: false, cluster: null as any, selectedTrace: null as any }) const clusterVideoTraces = ref([]) @@ -2128,14 +2127,14 @@ async function loadClusterResults() { } } if (groups.length) { - // Load trace profiles for names FIRST (DB is source of truth for custom names) - await loadClusterNames(fileUuid, groups) - console.log('[loadClusterResults] Calling setClusterResults with', groups.length, 'groups') console.log('[loadClusterResults] First group trace_ids:', groups[0]?.trace_ids) setClusterResults(fileUuid, groups) console.log('[loadClusterResults] After setClusterResults, cache:', clusterResultsCache.value[fileUuid]?.length) + // Load trace profiles for names in background (non-blocking) + loadClusterNames(fileUuid, groups).catch(() => {}) + // Load thumbnails for cluster representatives immediately. // rep 資料只需 file_uuid + trace_id,皆已存在 cluster-results payload 中, // 不需等待慢速的 get_unassigned_traces(~5s/page)。