From 97af4da331c83cbd5b2196f0a3357bece3cf225e Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Mon, 15 Jun 2026 12:25:48 +0800 Subject: [PATCH] fix: use identityUuid (camelCase) for person data --- src/views/PeopleView.vue | 45 ++++++++++++++++++++-------------- src/views/PersonDetailView.vue | 10 ++++---- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/views/PeopleView.vue b/src/views/PeopleView.vue index 1648d81..d620ed6 100644 --- a/src/views/PeopleView.vue +++ b/src/views/PeopleView.vue @@ -22,10 +22,10 @@
已知人物:
-
+
- - + + @@ -44,10 +44,10 @@
待定人物:
-
+
- - + + @@ -72,10 +72,10 @@
-
+
- - + + @@ -224,7 +224,13 @@ function onSearch() { async function loadProfile(uuid: string) { if (profiles.value[uuid]) return - try { profiles.value[uuid] = await invoke('get_identity_profile', { uuid }) } catch {} + try { + const result: string = await invoke('get_identity_profile', { uuid }) + console.log('Profile loaded for:', uuid, result ? 'success' : 'empty') + profiles.value[uuid] = result + } catch (e) { + console.error('Profile load failed for:', uuid, e) + } } async function loadCandidateThumb(uuid: string) { @@ -233,7 +239,10 @@ async function loadCandidateThumb(uuid: string) { } function selectPerson(p: any) { - router.push({ name: 'PersonDetail', params: { uuid: p.identity_uuid } }) + const uuid = p.identityUuid || p.identityUuid + console.log('selectPerson called:', uuid, p.name) + router.push({ name: 'PersonDetail', params: { uuid } }) + .catch(e => console.error('Router push failed:', e)) } async function toggleStar() { @@ -247,7 +256,7 @@ async function confirmDelete() { if (!confirm(`Delete "${selected.value.name}"?`)) return try { await invoke('delete_identity', { uuid: selected.value.identity_uuid }) - people.value = people.value.filter((p: any) => p.identity_uuid !== selected.value.identity_uuid) + people.value = people.value.filter((p: any) => p.identityUuid !== selected.value.identity_uuid) selected.value = null } catch (e) { console.error('Failed to delete:', e) } } @@ -273,7 +282,7 @@ async function confirmMerge() { try { await invoke('merge_identities', { uuid: selected.value.identity_uuid, intoUuid: mergeTarget.value }) showMerge.value = false - people.value = people.value.filter((p: any) => p.identity_uuid !== selected.value.identity_uuid) + people.value = people.value.filter((p: any) => p.identityUuid !== selected.value.identity_uuid) selected.value = null } catch (e) { console.error('Merge failed:', e) } } @@ -304,16 +313,16 @@ function ctxAction(action: string) { ctxMenu.value.show = false if (action === 'star') { p.starred = !p.starred - const idx = people.value.findIndex((x: any) => x.identity_uuid === p.identity_uuid) + const idx = people.value.findIndex((x: any) => x.identity_uuid === p.identityUuid) if (idx >= 0) people.value[idx].starred = p.starred } else if (action === 'skip') { - invoke('update_identity_status', { uuid: p.identity_uuid, status: 'skipped' }).then(() => { - const idx = people.value.findIndex((x: any) => x.identity_uuid === p.identity_uuid) + invoke('update_identity_status', { uuid: p.identityUuid, status: 'skipped' }).then(() => { + const idx = people.value.findIndex((x: any) => x.identity_uuid === p.identityUuid) if (idx >= 0) people.value[idx].status = 'skipped' }).catch(e => console.error('Skip failed:', e)) } else if (action === 'confirm') { - invoke('update_identity_status', { uuid: p.identity_uuid, status: 'confirmed' }).then(() => { - const idx = people.value.findIndex((x: any) => x.identity_uuid === p.identity_uuid) + invoke('update_identity_status', { uuid: p.identityUuid, status: 'confirmed' }).then(() => { + const idx = people.value.findIndex((x: any) => x.identity_uuid === p.identityUuid) if (idx >= 0) people.value[idx].status = 'confirmed' }).catch(e => console.error('Confirm failed:', e)) } else if (action === 'rename' || action === 'merge') { diff --git a/src/views/PersonDetailView.vue b/src/views/PersonDetailView.vue index 4bb4bb7..7550fd0 100644 --- a/src/views/PersonDetailView.vue +++ b/src/views/PersonDetailView.vue @@ -162,7 +162,7 @@ onMounted(async () => { console.log('getPeople raw result:', JSON.stringify(people).slice(0, 200)) console.log('getPeople result count:', Array.isArray(people) ? people.length : 'not array') peopleCount.value = Array.isArray(people) ? people.length : 0 - const found = (Array.isArray(people) ? people : []).find((p: any) => p.identity_uuid === uuid) + const found = (Array.isArray(people) ? people : []).find((p: any) => p.identityUuid === uuid) console.log('Person found:', !!found, found?.name) if (found) { person.value = { ...found, status: found.status || 'confirmed' } @@ -245,7 +245,7 @@ async function toggleStar() { async function confirmDelete() { if (!person.value || !confirm(`Delete "${person.value.name}"?`)) return try { - await invoke('delete_identity', { uuid: person.value.identity_uuid }) + await invoke('delete_identity', { uuid: person.value.identityUuid }) router.back() } catch (e) { console.error('Failed to delete:', e) } } @@ -253,16 +253,16 @@ async function confirmDelete() { async function bindCandidate(c: any) { if (!person.value) return try { - await invoke('bind_face', { uuid: person.value.identity_uuid, faceId: String(c.id), fileUuid: c.file_uuid }) + await invoke('bind_face', { uuid: person.value.identityUuid, faceId: String(c.id), fileUuid: c.file_uuid }) showCandidates.value = false - await loadFaces(person.value.identity_uuid) + await loadFaces(person.value.identityUuid) } catch (e) { console.error('Bind failed:', e) } } async function confirmMerge() { if (!person.value || !mergeTarget.value) return try { - await invoke('merge_identities', { uuid: person.value.identity_uuid, intoUuid: mergeTarget.value }) + await invoke('merge_identities', { uuid: person.value.identityUuid, intoUuid: mergeTarget.value }) router.back() } catch (e) { console.error('Merge failed:', e) } }