## 问题根因 MaterialMatchingService中直接调用material_repo.get_by_project_id()方法, 该方法只返回素材基本信息,不包含segments字段,导致: 1. material.segments.is_empty()始终为true 2. 匹配逻辑创建虚拟片段,使用原始素材完整时长 3. 10.042秒的原始素材与1.267秒的模板片段比较,超出692.8% ## 解决方案 将所有调用material_repo.get_by_project_id()的地方改为: MaterialService::get_project_materials() 该方法会: 1. 调用repository.get_by_project_id()获取素材基本信息 2. 为每个素材调用repository.get_segments()加载片段信息 3. 返回包含完整片段信息的素材列表 ## 修改位置 1. match_materials方法 - 主要匹配逻辑 2. can_template_be_fully_matched方法 - 模板匹配检查 3. match_materials_with_used_segments方法 - 批量匹配逻辑 ## 预期效果 - material.segments不再为空 - 匹配逻辑使用真实的切分片段而不是虚拟片段 - 片段时长将是合理的切分后时长(如1-5秒)而不是原始素材时长 - 时长匹配评分将更加准确 这是一个关键修复,解决了匹配逻辑的根本问题。 |
||
|---|---|---|
| .. | ||
| docs | ||
| public | ||
| scripts | ||
| src | ||
| src-tauri | ||
| test_data | ||
| .gitignore | ||
| CHANGELOG.md | ||
| DATABASE_OPTIMIZATION_GUIDE.md | ||
| README.md | ||
| TOOLS_FEATURE.md | ||
| index.html | ||
| package.json | ||
| postcss.config.js | ||
| tailwind.config.js | ||
| test_parallel_processing.md | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
README.md
@mixvideo/desktop
MixVideo 桌面应用 - 基于 Tauri + React + TypeScript 构建的跨平台桌面应用。
🚀 快速开始
开发环境要求
- Node.js 18+
- Rust 1.70+
- PNPM 8+
安装依赖
pnpm install
开发模式
pnpm dev
# 或
pnpm tauri:dev
构建应用
pnpm tauri:build
📁 项目结构
apps/desktop/
├── src/ # React 前端源码
│ ├── components/ # React 组件
│ ├── pages/ # 页面组件
│ ├── hooks/ # 自定义 Hooks
│ ├── services/ # API 服务
│ ├── types/ # TypeScript 类型
│ └── utils/ # 工具函数
├── src-tauri/ # Rust 后端源码
│ ├── src/ # Rust 源码
│ ├── Cargo.toml # Rust 依赖配置
│ └── tauri.conf.json # Tauri 配置
├── public/ # 静态资源
└── package.json # 前端依赖配置
🛠️ 技术栈
- 前端: React 18 + TypeScript + Vite
- 后端: Rust + Tauri 2.0
- UI: 待定 (可选择 Ant Design、Material-UI 等)
- 状态管理: 待定 (可选择 Zustand、Redux Toolkit 等)