Commit Graph

18 Commits

Author SHA1 Message Date
9f6939ecc7 fix: 修复 get_files HTTP 请求参数名错误
问题:
- 前端在浏览器模式下使用 `limit` 参数
- Core API 的实际参数名是 `page_size`
- 导致 Core API 忽略参数,使用默认值 20
- 用户只看到 20 个文件(Completed 18 + Registered 1 + Unregistered 1)
- 实际 API 返回 118 个文件

修复:
- 将 `limit=` 改为 `page_size=`
- 与 Core API 参数名保持一致
- 确保前端获取所有文件

影响:
- Library 页面现在显示所有 118 个文件
- Completed 64 张卡片
- Registered 53 张卡片
- Unregistered 1 张卡片

测试:
✅ 编译通过
✅ API 正确返回 118 个文件
✅ 参数正确传递
2026-10-10 22:54:02 +08:00
c90d93c224 fix: 修复 get_files 调用错误的 API 端点
问题:
- 前端调用 /api/v1/files/scan
- 该 API 扫描文件系统,依赖 MOMENTRY_SFTP_ROOT 环境变量
- 如果未设置或目录不存在,返回空数组
- 导致显示 'No files found'

修复:
- 改为调用 /api/v1/files
- 该 API 直接从数据库读取已注册文件
- 返回 { success: true, total: 176, data: [...] }

测试:
- ✅ /api/v1/files 返回 176 个文件
- ✅ 前端应该能正确显示文件列表
2026-10-09 22:35:24 +08:00
af04d08458 fix: search_agents timeout 90s→180s 2026-10-08 09:30:48 +08:00
e65d5648b8 feat: 批量 unregister 功能 + 性能优化
功能:
- LibraryView 添加批量 unregister 按钮(勾选多个已注册文件后显示)
- 添加确认对话框,支持批量取消注册
- 添加中英日三语翻译

性能优化:
- search_agents API timeout 提升到 90s(避免前端超时)
- thumbnail 并发数从 32 降到 10(减少服务器压力)

修复:
- PeopleView 添加 group_uuid 字段映射
- LibraryView 排序优化(scanning/preparing 优先)
2026-10-07 23:39:31 +08:00
26ac0e90df fix: 完成 B-1, B-2, B-4(proxy 硬编码移除 + re-scan 端点)
B-1: 移除 proxy 硬编码路径
- 移除 API_KEY 常量,改为 get_api_key() 从环境变量读取
- 移除 PROFILE_DIRS,改为 get_output_dir() 从环境变量读取
- 移除 output_bases (identity_matches, trace_profile),改为环境变量驱动
- 移除 ADMIN_CONFIG_PATH,改为 get_admin_config_path() 从环境变量读取
- 添加 dev fallback 支持开发环境

B-2: API key 改为环境变量
- MOMENTRY_API_KEY 环境变量必须设置
- 未设置时会明确报错启动

B-4: 改用 re-scan 端点
- 简化 doReprocess 函数从 92 行减少到 32 行
- 改用单一 POST /api/v1/re-scan API
- 显式传 auto_pipeline: true
- 移除 unregister → register → process 手动串接
- 原子性操作,避免中间失败留下不一致状态

环境变量:
- MOMENTRY_API_KEY (必需)
- MOMENTRY_OUTPUT_DIR (可选,默认 /Users/accusys/momentry/output)
- MOMENTRY_DATA_DIR (可选,默认 /Users/accusys/momentry/data)
- MOMENTRY_ADMIN_CONFIG (可选,默认 /Users/accusys/momentry/config/admin_config.json)
2026-10-04 15:00:45 +08:00
fef3b892d6 fix: 使用正确的 face_cluster API 端点
- 改用 POST /api/v1/file/:uuid/json/face_cluster
- 替换旧的 GET /api/v1/cluster-results
- 返回正确的 cluster 数据:status, clusters, frames
- 修复 face dedup 按钮无法工作的问题
- 添加 get_file_processor_json API (通用端点)
2026-10-01 11:10:44 +08:00
f3d75ebce8 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
2026-10-01 00:42:13 +08:00
9d58fdb9d9 fix: unregister timeout 200s + async mode
- Add UNREGISTER_TIMEOUT=200000 (200s) for large file unregister
- Add timeout field to buildHttpRequest return type
- httpCall now uses per-request timeout override
- unregister_file now uses asyncMode: true for better UX
- Show "Removing in background..." toast for async mode

Fixes timeout error when unregistering large files (83K faces, 20K nodes).
2026-07-31 18:32:50 +08:00
2b944cf9d1 fix: use search/people API (Core Team deployed)
- Remove duplicate search_people case
- Remove search_identities (no longer needed)
- Add search_people response handler
- SearchView already uses search_people
2026-07-25 23:16:59 +08:00
fcb612ff0e revert: restore search_identities API case 2026-07-25 20:38:54 +08:00
fb9a55a64c feat: use new search/people API for People search mode 2026-07-25 20:33:15 +08:00
25f718c0d5 fix: remove duplicate case clauses in api/index.ts 2026-07-25 18:28:04 +08:00
8af2dc6128 feat: integrate new merge_groups API from Core Team
Replace merge_trace implementation with merge_groups API

Changes:
1. src/api/index.ts:
   - Add merge_groups API definition
   - POST /api/v1/file/:file_uuid/groups/merge
   - Parameters: file_uuid, source_groups[], target_group_name

2. src/views/PeopleView.vue:
   - Rewrite executeMerge() function
   - Use group names instead of trace IDs
   - Single API call for all groups
   - Remove trace-level loop

3. src/views/PeopleView.vue:
   - Delete updateClusterAfterMerge() function
   - No longer needed with new API

Benefits:
- ✅ Atomic operation (single API call)
- ✅ Correct merge behavior (groups, not traces)
- ✅ Better performance (1 call vs N calls)
- ✅ Data consistency guaranteed

API behavior:
- Merge N groups into 1 target group
- All traces from source groups merged to target
- Source groups deleted after merge
- Returns traces_merged count

Core API: Implemented by Core Team (2026-07-25)
Status: Ready for testing
2026-07-25 14:25:35 +08:00
5951aca086 feat: frame-based positioning and mark system foundation
Core Changes:
- Fix SearchView to use start_frame/end_frame directly (no time*fps conversion)
- Add hard_delete support to delete_trace API
- VideoPlayer: Main timeline + Mark system foundation
- Proxy: Add local routes for auth, media, identity-matches, cluster-results
- Add .gitignore to exclude build artifacts and dependencies

Design Documents:
- Multi-track Mark system design (.opencode/plans/)
- Video editing positioning standards research

Files Modified:
- src/views/SearchView.vue: Frame positioning, ensureMinDuration (240 frames)
- src/views/PeopleView.vue: batchDeleteGroups with hard_delete
- src/api/index.ts: delete_trace with hard_delete body
- src/components/VideoPlayer.vue: Timeline + Mark UI
- src-tauri/src/proxy.rs: New local routes
- AGENTS.md: Update documentation
2026-07-24 20:19:47 +08:00
98a3d79701 feat: add ASR status display in search results, fix unassigned traces param name 2026-06-27 11:41:03 +08:00
691b38fe96 fix: m4mini deployment issues - duplicate script setup, auth redirect, Tauri bypass 2026-06-26 20:33:35 +08:00
f915aaf794 feat: pending identity sorting, face detail modal, video player fps, processor counts 2026-06-24 02:02:33 +08:00
7855983dc1 feat: bind/unbind by id, video streaming proxy, unmute default, library refresh, hamburger click-outside
- Core API: bind/unbind accept id (integer PK) when face_id is null
- Tauri proxy: stream video responses instead of buffering for seek bar
- VideoPlayer: remove muted attribute, unmute by default
- LibraryView: call invalidateFiles() before ensureFiles() on register/unregister
- PeopleView: close sort panel on click-outside, not just hamburger toggle
- bind_face: prefer face_id, fallback to id when face_id is null
2026-06-18 22:24:03 +08:00