69ab0e8000
feat: 实现动态密码系统,消除硬编码
...
核心改动:
1. db.rs - 默认密码从环境变量读取或自动生成
- 优先级: MOMENTRY_DEFAULT_PASSWORD > 自动生成
- 格式: demo_<timestamp> 或自定义
- 首次创建时打印密码到控制台
2. main.rs - SMB 服务密码动态化
- 从 SMB_PASSWORD 或 MOMENTRY_DEFAULT_PASSWORD 读取
- 支持自定义 SMB 用户名
3. user_tool.rs - 新增用户管理工具
- list: 列出所有用户
- create: 创建新用户
- set-password: 修改密码
- delete: 删除用户
- init-demo: 初始化 demo 用户
4. install.sh - 安装时自动生成密码
- 生成随机密码: demo_$(openssl rand -hex 4)
- 保存到 .env 文件
- 初始化数据库
5. .env.template - 新增密码配置
- MOMENTRY_DEFAULT_PASSWORD
- SMB_USER / SMB_PASSWORD
安全改进:
- 消除硬编码密码 'demo123'
- 每次安装密码唯一
- 密码哈希存储 (Argon2id)
- 支持自定义强密码
文档:
- docs/DEFAULT_PASSWORD_SYSTEM.md 完整说明
2026-10-12 14:25:47 +08:00
14fe2eda07
docs: 确认 ClientView 文件存储架构
...
确认结论:
- ClientView (/client) 使用 MarkBase API
- 文件存储位置: ~/momentry/var/sftpgo/data/{user}/
- 不是 ~/markbase 目录
架构详解:
1. API 端点
- MarkBase API: localhost:11438
- /api/v2/myfiles/{user}/folders
- /api/v2/myfiles/{user}/files
2. 文件存储
- 实际路径: ~/momentry/var/sftpgo/data/demo/
- 包含所有上传的文件 (*.mp4)
3. MarkBase 目录
- ~/markbase/data/ 存储 MarkBase 自身数据
- 认证数据库 (auth.sqlite)
- 配置文件
- 不是文件存储位置
4. 配置映射
- admin_config.json: server.storage_root
- 环境变量: STORAGE_ROOT
关键区别:
- ~/markbase = MarkBase 项目代码和自身数据
- ~/momentry/var/sftpgo/data = 实际文件存储位置
部署注意:
- 需要创建 ~/momentry/var/sftpgo/data/{user}/
- 设置正确的权限
- 配置 STORAGE_ROOT 环境变量
2026-10-12 13:55:17 +08:00
bb45f0981a
fix: 添加 m4promini 部署路径修复方案
...
问题:
- 100+ 处硬编码路径 /Users/accusys
- 配置文件 (admin_config.json) 无法适应新环境
- Rust 代码 (main.rs) 中 10+ 处路径硬编码
- 服务启动/停止命令依赖固定路径
影响:
- 无法在 m4promini (/Users/nextorageai) 上部署
- Admin 页面服务控制失效
- Worker 管理失败
解决方案:
1. 文档: docs/DEPLOYMENT_PATH_ISSUES.md
- 详细分析所有硬编码路径
- 提供 3 种修复方案
- 环境变量优先级建议
2. 脚本: fix_paths_for_m4promini.sh
- 自动替换所有硬编码路径
- 创建备份
- 生成环境变量模板
- 创建部署说明
目标环境:
- 用户: nextorageai
- 主目录: /Users/nextorageai
- 项目目录: /Users/nextorageai/momentry_studio
下一步:
1. 在 m4promini 上运行 fix_paths_for_m4promini.sh
2. 配置环境变量 (.env)
3. 构建项目
4. 启动服务
2026-10-12 12:20:24 +08:00
7ee9ea0d30
docs: 添加分页实施路线图
...
内容:
- 文档索引(3 个核心文档)
- 实施目标(功能、性能)
- 实施步骤(Phase 1 + Phase 2)
- 快速开始指南(1 小时最小实施)
- 验证清单(功能、性能、样式)
- 技术栈适配表
- 故障排除指南
- 后续优化计划
- 成功标准
核心内容:
- 只需修改 1 个文件(SearchView.vue)
- 5 个步骤,预计 1-2 小时
- 初始加载提速 4x(2s → 0.5s)
- 渐进式加载降低内存占用
文档索引:
1. Agent_Search_Integration_Analysis.md - 分析文档
2. Vue3_Pagination_Implementation_Guide.md - 完整指南
3. Quick_Implementation_Checklist.md - 快速清单
4. Pagination_Implementation_Roadmap.md - 路线图
2026-10-11 21:38:26 +08:00
896b12be9a
docs: 添加 Vue 3 分页实施指南
...
内容:
1. Vue3_Pagination_Implementation_Guide.md (718 行)
- Vue 3 + TypeScript + Tauri 2 完整实施指南
- 完整的代码示例
- 分页和 Session 管理
- 临时方案(兼容现有 API)
2. Quick_Implementation_Checklist.md (331 行)
- 5 步快速实施(1-2 小时)
- 只需修改 1 个文件(SearchView.vue)
- 复制即用的代码片段
- 验证步骤
实施方案:
- 添加状态(sessionId, hasMore, nextOffset 等)
- 实现 loadMore() 函数
- 修改 executeSearch() 支持分页
- 添加 More 按钮 UI
- 添加样式
预期效果:
- 初始加载:~2s → ~0.5s(4x 更快)
- 内存占用:渐进式加载
- 用户体验:立即反馈
技术栈适配:
- useState → ref / reactive
- useEffect → onMounted / watch
- lucide-react → 内联 SVG
2026-10-11 21:37:50 +08:00
1618965a9b
docs: Agent Search 集成现状分析
...
内容:
- 分析提供的 React 文档与 Studio Vue 3 现状的差异
- 确认 Studio 已实现大部分功能(5 种搜索模式)
- 识别缺失的核心功能(More 按钮、Session 管理)
- 提供实施建议和优先级
现状:
✅ 5 种搜索模式(Keyword, Semantic, Visual, Agent, People)
✅ 统一搜索界面(SearchView.vue)
✅ 结果显示和视频播放
✅ 搜索历史和书签
缺失:
❌ More 按钮和分页加载(高优先级)
❌ Session 管理(高优先级)
❌ 智能意图识别(中优先级,可选)
技术栈差异:
- 提供的文档是 React 版本
- Studio 使用 Vue 3 + TypeScript
- 需要转换为 Composition API
下一步:
1. 实现 More 按钮 + 分页加载(1-2 天)
2. 后端实现 Session API(2-3 天)
3. 测试验证
2026-10-11 21:21:23 +08:00
e11ee429f1
docs: 添加 Tauri GUI 架构分析文档
...
内容:
- 四大模块总览(Search, File Prep, Admin, File Mgmt)
- 每个模块的详细分析(组件、API、数据流、数据库)
- 模块间交互关系和依赖关系
- 已知问题和改进建议
- API 调用链示例
- 技术栈总结
四大模块:
1. Search - 多模式搜索 + 历史管理
2. File Prep/Processing - Pipeline 处理 + 状态追踪
3. Admin - 系统监控 + 配置管理
4. File Management - 文件上传/下载/移动
关键问题:
- 双 API 架构复杂度
- 状态同步不一致
- 缩略图缓存无淘汰策略
- Pipeline 进度轮询效率低
- Admin 配置无验证
改进建议:
- 短期: WebSocket 状态推送、LRU Cache、批量查询
- 中期: 统一 API Gateway、Resumable Upload
- 长期: IndexedDB、离线模式、插件系统
2026-10-11 16:41:27 +08:00
af967b3345
docs: 添加 FaceFilterSettings 透明文件管理部署测试指南
...
内容:
- 完整的部署步骤
- 4 个测试场景(自动迁移、持久化、新文件、跨设备)
- API 行为变化说明
- 调试方法和故障排查
- 验证清单
测试文件: 020.mp4 (UUID: b496a68800f90770aa7246c877f38985)
相关:
- Core API: 86c776ce, 1379cf59
- Studio: 8789770 , f75ebfa
2026-10-09 21:14:55 +08:00
f75ebfac88
fix: 修复 Face Filter UI 参数持久化到后端数据库
...
问题:
- UI Filter Rules (min_confidence, min_bbox_size 等) 修改后只保存到 localStorage
- 不会持久化到后端数据库,导致刷新页面或换浏览器后设置丢失
修复:
- updateRules() 函数现在会调用 markSingleFrameSettingsModified()
- 触发 500ms debounce 的 auto-save 到后端 API
- 保存完整的 FaceFilterSettings (包括 ui_filter_rules, processing_thresholds, trace_settings)
变更:
1. src/composables/useFaceFilter.ts
- updateRules() 新增调用 markSingleFrameSettingsModified()
- 确保 UI Filter Rules 修改后自动保存到后端
2. docs/FACE_FILTER_PERSISTENCE_TEST_GUIDE.md
- 完整的测试指南
- 包含调试方法和后端 API 要求
持久化流程:
- FaceFilterPanel 打开 → loadSingleFrameSettings() 从后端加载
- 用户修改参数 → updateRules() → markSingleFrameSettingsModified() → auto-save
- 500ms debounce → saveSingleFrameSettings() → PUT /api/v1/file-profile
测试:
- ✅ TypeScript 编译通过
- ⏳ 需要验证后端 API 支持
测试文件: 020.mp4 (UUID: b496a68800f90770aa7246c877f38985)
2026-10-09 16:25:26 +08:00
6423eeed77
feat: 更新 FaceFilterSettings TypeScript 类型定义为三段式统一结构
...
变更内容:
- 创建 src/types/faceFilter.ts 类型定义文件
- 新增 UiFilterRules, ProcessingThresholds, TraceSettings 三个子结构
- 更新 FaceFilterSettings 为三段式统一结构
- min_confidence 范围从 0-100 改为 0.0-1.0
- min_size 重命名为 min_bbox_size
- 新增字段: max_confidence, max_bbox_size, source, backend_status
向后兼容性:
- FaceFilterSettingsMigration.fromLegacy() 自动转换旧格式
- FaceFilterSettingsMigration.defaults() 提供默认值
- 保留向后兼容字段(deprecated 标记)
更新文件:
- src/composables/useFaceFilter.ts: 使用新类型,更新变量名
- src/components/FaceFilterPanel.vue: 更新导入和变量引用
- docs/FACE_FILTER_SETTINGS_MIGRATION_GUIDE.md: 完整迁移指南
测试:
- ✅ TypeScript 编译通过
- ✅ Vite build 成功
对应 Core API commit: 86c776ce
2026-10-09 15:13:50 +08:00
2f9b44d4b3
docs: 添加 Deep Scan 队列功能需求文档
...
目的:
- 提交给 Core Team 实现后端队列功能
- 替代当前前端临时队列方案
主要内容:
1. 问题背景和当前限制
2. 核心需求说明
3. API 设计建议(包含详细示例)
4. 数据库设计
5. 后端架构建议
6. 前端集成简化方案
7. 配置选项
8. 实施里程碑
关键特性:
- 全局队列管理
- 优先级支持
- 动态并发控制
- 错误重试机制
- 实时状态跟踪
2026-10-08 01:50:38 +08:00
7b60ca3d2d
feat: add face filter components and integration guide
...
- useFaceFilter composable: manages face filtering state and API calls
- FaceFilterPanel component: UI for filtering controls
- FaceCard component: text-only face display card
- Integration guide: step-by-step guide for integrating into PeopleView
Implements hybrid filtering mode with:
- Instant mode: client-side filtering (5-10ms)
- Backend mode: server-side complex filtering
- Hybrid mode: backend + instant filtering (AND)
Uses actual Core API endpoints:
- GET /file/{uuid}/faces
- POST /file/{uuid}/faces/filter
- GET /file/{uuid}/face/{faceId}/filter-report
- GET /file/{uuid}/filter-stats
Preferences stored in localStorage.
2026-08-09 21:24:52 +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
299f58e883
docs: update cluster-agent implementation status
2026-07-20 21:49:25 +08:00
f915aaf794
feat: pending identity sorting, face detail modal, video player fps, processor counts
2026-06-24 02:02:33 +08:00
d910bac0bb
docs: People 頁面設計文件,基於實測 API 定義
2026-06-14 12:52:22 +08:00
6d6fd2d43c
docs: Core API 完整測試報告,所有端點實測驗證
2026-06-14 12:39:19 +08:00