feat: Library 批量注册 + PeopleView 修复 + 国际化

Library:
- 添加 checkbox 和鼠标框选功能
- Unregistered 卡片添加快速注册按钮
- 状态标签移至左下方,人脸图标移至左侧中间
- Deep Scan 改为 unregister -> register -> process
- 完整国际化(日语、繁体中文、英语)

PeopleView:
- 修复卡片不显示问题(使用 get_file_traces API)
- 移除对 identity_id 字段的依赖

其他:
- 添加日语语言包
- 添加 useDragSelect composable
- 新增文档:Face Bbox Null Bug Report
This commit is contained in:
2026-10-01 00:42:13 +08:00
parent 7b60ca3d2d
commit f3d75ebce8
35 changed files with 8054 additions and 961 deletions

View File

@@ -44,13 +44,19 @@
"min_minutes": "Min Minutes",
"max_minutes": "Max Minutes"
},
"status": {
"status": {
"files": "{count} files",
"registered": "Registered",
"unregistered": "Unregistered",
"pending": "Pending",
"processing": "Processing",
"completed": "Completed"
"completed": "Completed",
"scanning": "Scanning",
"ready": "Ready",
"keyword_ready": "Keyword Ready",
"semantic_ready": "Semantic Ready",
"face_mgmt_ready": "Face Mgmt Ready",
"agent_ready": "Agent Ready"
},
"thumbnail": {
"register_to_preview": "Register to see preview"
@@ -59,7 +65,6 @@
"register_file": "Register File",
"process_file": "Process File",
"reprocess": "Reprocess",
"run_identity_agent": "Run Identity Agent",
"unregister": "Unregister",
"play_video": "Play Video",
"processor_selection": "Processor Selection",
@@ -67,7 +72,9 @@
"missing_file_path": "Missing file path",
"file_not_registered": "File not registered",
"select_processor": "Please select at least one processor",
"file_must_be_completed": "File must be completed first"
"file_must_be_completed": "File must be completed first",
"face_deduplication": "Face Deduplication",
"qc_check": "QC Check"
},
"pipeline": {
"processors": "Processors",
@@ -91,17 +98,57 @@
"processing_started": "Processing started: {name}",
"processing_failed": "Processing failed: {message}",
"processing_error": "Processing error: {error}",
"identity_agent_started": "Identity Agent started: {name}",
"identity_agent_failed": "Identity Agent failed: {message}",
"identity_agent_error": "Identity Agent error: {error}",
"removing": "Removing...",
"removed": "Removed: {name}",
"removal_failed": "Removal failed: {message}",
"removal_error": "Removal error: {error}",
"clear_filters": "Clear Filters"
},
"qc": {
"audio_info": "Audio Info",
"audio_track": "Audio Track",
"has_audio": "✓ Has Audio",
"no_audio": "✗ No Audio",
"speech": "Speech",
"has_speech": "✓ Has Speech",
"no_speech": "🔇 No Speech",
"language": "Language",
"sample_rate": "Sample Rate",
"uuid_label": "UUID:",
"track_processor_output": "Phase 1: Processor Output",
"track_ingestion": "Phase 2: Data Ingestion",
"track_status_change": "Final: Status Change",
"output_ingestion_done": "📥 Output + Ingestion Complete",
"items": "{count} items"
},
"refresh": "Refresh",
"refresh_status": "Refresh Status"
"refresh_status": "Refresh Status",
"confirm": {
"title_register": "📥 Register",
"title_process": "🔍 Deep Scan",
"title_rescan": "🔄 Re-scan",
"message_register": "File will be registered and processed with default settings.",
"message_register_no_scan": "Register only, no automatic scan.",
"message_process": "Processing will run on the selected processors using default settings.",
"message_rescan": "This will unregister → register → deep scan the file using selected processors.",
"cancel": "Cancel",
"proceed": "Proceed",
"rerun_processor": "Re-run {processor} for this file?",
"run_processor": "Run {processor} on {filename}?",
"unregister_title": "Unregister",
"unregister_message": "Unregister \"{filename}\"?\n\nThis will remove the file and its output data."
},
"processor": {
"started": "{processor} started",
"failed": "Failed: {message}",
"error": "Error: {message}",
"no_file": "Error: No file selected",
"vlm_failed": "Failed to trigger VLM summary: {message}",
"pipeline_qc": "Pipeline QC"
},
"settings": {
"auto_scan": "Auto deep scan after registration"
}
},
"people": {
"toolbar": {
@@ -119,7 +166,8 @@
"pending_people": "People",
"skipped_people": "Skipped People",
"pending_faces": "Faces",
"face_group": "Face Group"
"face_group": "Face Group",
"unassigned": "Unassigned"
},
"sort": {
"title": "Sort By",
@@ -230,6 +278,13 @@
"create_identity_failed": "Failed to create person: API did not return identity_uuid",
"create_identity_error": "Failed to create person: {error}",
"assign_failed": "Assignment failed: {error}"
},
"action": {
"delete_person": "Delete Person",
"update_person": "Update Person",
"bind_face": "Bind Face",
"unbind_face": "Unbind Face",
"bind_trace": "Bind Trace"
}
},
"agent": {
@@ -269,5 +324,125 @@
"people": "People",
"admin": "Admin",
"client": "Client"
},
"time": {
"just_now": "Just now",
"minutes_ago": "{count} min ago",
"hours_ago": "{count} hr ago"
},
"video": {
"prev": "Previous",
"next": "Next",
"key_frame": "Key Frame"
},
"language": {
"en": "English",
"zh-TW": "Traditional Chinese",
"zh-CN": "Simplified Chinese",
"ja": "Japanese",
"ko": "Korean",
"auto": "Auto Detect"
},
"client": {
"title": "File Manager",
"search": {
"placeholder": "Search files..."
},
"table": {
"name": "Name",
"size": "Size",
"type": "Type",
"modified": "Modified"
},
"button": {
"upload": "Upload",
"newFolder": "New Folder",
"refresh": "Refresh",
"create": "Create",
"cancel": "Cancel",
"delete": "Delete",
"rename": "Rename",
"move": "Move",
"preview": "Preview",
"download": "Download"
},
"dialog": {
"createFolder": "Create New Folder",
"folderName": "Folder name",
"deleteTitle": "Delete \"{name}\"",
"deleteMessage": "Are you sure you want to delete this {type}? This action cannot be undone.",
"renameTitle": "Rename \"{name}\"",
"newName": "New name",
"previewTitle": "File Preview: {name}",
"uploadTitle": "Upload File{s}",
"moveTitle": "Move {type} \"{name}\"",
"selectFiles": "Select files"
},
"type": {
"file": "file",
"folder": "folder",
"files": "files"
},
"status": {
"uploading": "Uploading...",
"success": "Success",
"error": "Error"
}
},
"admin": {
"title": "Admin Panel",
"tab": {
"dashboard": "Dashboard",
"users": "Users",
"shares": "Shares",
"config": "Config",
"settings": "Settings"
},
"section": {
"systemResources": "System Resources",
"validation": "Validation",
"configuration": "Admin Configuration",
"vlmPrompts": "VLM Prompts",
"languagePacks": "Language Packs",
"llmConfig": "LLM Configuration",
"processorConfig": "Processor Configuration",
"filterConfig": "Filter Configuration",
"searchConfig": "Search Configuration",
"systemConfig": "System Configuration",
"uploadPath": "Upload Path",
"serviceUrls": "Service URLs"
},
"resource": {
"cpu": "CPU",
"memory": "Memory",
"swap": "Swap",
"gpu": "GPU",
"gpuFreq": "GPU Freq",
"systemPower": "System Power"
},
"table": {
"username": "Username",
"homeDir": "Home Dir",
"status": "Status",
"name": "Name",
"port": "Port",
"filter": "Filter",
"parameters": "Parameters"
},
"config": {
"systemPrompt": "System Prompt",
"prompt": "Prompt",
"userPrompt": "User Prompt",
"maxTokens": "Max Tokens",
"url": "URL",
"model": "Model",
"availableLanguages": "Available Languages",
"importLanguagePack": "Import Language Pack",
"tools": "Tools"
},
"stat": {
"users": "Users",
"shares": "Shares"
}
}
}