Commit Graph

28 Commits

Author SHA1 Message Date
11f9973179 Revert "fix: add missing proxy routes and API keys for Core API endpoints"
This reverts commit c00dcfbfbb.
2026-11-01 14:40:57 +08:00
24efec604f Revert "fix: add API key to remaining endpoints"
This reverts commit a26f1fe9f1.
2026-11-01 14:40:57 +08:00
a26f1fe9f1 fix: add API key to remaining endpoints
- Added requiresApiKey: true to get_trace_profile, get_file_profile
- Added x-api-key header to loadDefaultFaceFilter fetch call
- Fixes 401 errors on admin/config, trace-profile, and file-profile endpoints
2026-10-31 01:41:41 +08:00
c00dcfbfbb fix: add missing proxy routes and API keys for Core API endpoints
- Added proxy routes for /api/v1/file/*/json/face_cluster, /api/v1/file/*/traces, /api/v1/admin/config, /api/v1/file-profile
- Added requiresApiKey: true to get_cluster_results
- Fixes 500 errors when loading cluster results and other Core API endpoints
2026-10-31 00:52:16 +08:00
f23124a157 fix: add requiresApiKey to register, unregister, merge_groups, update_trace_profile_group
- Added requiresApiKey?: boolean to buildHttpRequest return type
- Added API key header injection in httpCall
- Fixes 401 errors on register, unregister, merge, and rename operations
2026-10-30 21:44:08 +08:00
fe91afff98 feat: integrate MarkBase Search Session API into Studio
- Created useSearchSession composable for session management
- Added 7 API endpoints in api/index.ts
- Updated SearchView.vue to use sessions instead of history
- Session sidebar with create, rename, delete functionality
- Auto-save messages to current session after each search
- Auto-create default session on first load
- Updated CSS for session active state and new session button
2026-10-27 05:06:03 +08:00
3b638f0416 feat: integrate MarkBase Admin API with Bearer token authentication
- Added useAdminAuth composable for login/logout/token management
- Admin Users tab now requires login before showing users
- loadUsers/loadShares now use direct fetch with Bearer token
- Added login form with username/password fields
- Token stored in localStorage with expiry check
- Default credentials: demo/demo123
2026-10-27 02:17:41 +08:00
388c548e4a feat: multi-language support for agent search and admin pipeline config
- search_agents now accepts output_language parameter (en/zh-TW/ja)
- Admin Settings: added Pipeline Configuration section (enabled, max_concurrent_stages, default_timeout_secs)
- Admin Settings: search config now includes vlm_output_language dropdown
- Added translations for pipeline config in en/zh-TW/ja locales
- Agent search uses searchConfig.vlm_output_language for output language
2026-10-27 01:18:19 +08:00
c21c186e0c fix: increase start_service timeout for MBE to 60s
- MBE needs up to 60s to load model
- Default timeout (30s) was too short causing timeout errors
2026-10-23 01:22:44 +08:00
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
cb7e1ba0ba fix: resolve TypeScript compilation errors
Fixes:
- VideoPlayer.vue: restore allTags, filteredMarks, marksByTag (removed by mistake)
- PeopleView.vue: fix frameTime scope in playFaceDetailVideo catch block
- Both errors caused white screen on build failure

Root cause:
1. visibleTags duplicate declaration (old + new logic)
2. frameTime undefined in catch block (scope issue)

Solution:
1. Keep allTags/filteredMarks/marksByTag (needed in template)
2. Keep visibleTags (new logic for processor toggles)
3. Move frameTime calculation to correct scope in catch block
2026-07-24 23:33:40 +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