8.0 KiB
8.0 KiB
MixVideo 项目概览与开发规范
项目简介
MixVideo 是一个基于 Tauri 2.0 构建的跨平台AI视频创作桌面应用,采用 Rust + React + TypeScript 技术栈,旨在构建全球领先的AI驱动视频创作生态平台。
核心愿景
"构建全球领先的AI驱动视频创作生态平台,让每个人都能轻松创作出专业级的视频内容"
技术架构
整体架构
mixvideo/
├── apps/
│ └── desktop/ # Tauri桌面应用
│ ├── src/ # React前端代码
│ │ ├── components/ # UI组件
│ │ ├── pages/ # 页面组件
│ │ ├── store/ # 状态管理(Zustand)
│ │ ├── services/ # 业务服务
│ │ ├── types/ # TypeScript类型定义
│ │ ├── hooks/ # React Hooks
│ │ ├── utils/ # 工具函数
│ │ └── styles/ # 样式文件
│ └── src-tauri/ # Rust后端代码
│ ├── src/
│ │ ├── infrastructure/ # 基础设施层
│ │ ├── data/ # 数据访问层
│ │ ├── business/ # 业务逻辑层
│ │ ├── presentation/ # 表现层(Commands)
│ │ └── services/ # 服务层
│ └── Cargo.toml
├── packages/ # 共享包(未来扩展)
├── docs/ # 项目文档
└── .promptx/ # 开发规范文档
前端技术栈
- 框架: React 18 + TypeScript 5.8
- 构建工具: Vite 6.0
- 状态管理: Zustand 4.4
- UI框架: TailwindCSS 3.4
- 图标: Lucide React + Heroicons
- 路由: React Router DOM 6.20
- 测试: Vitest + Testing Library
- 包管理: PNPM 8.15 (Workspace)
后端技术栈
- 框架: Tauri 2.0 + Rust 1.70+
- 数据库: SQLite (WAL模式,支持连接池)
- AI集成: Google Gemini API
- 多媒体: FFmpeg
- 异步: Tokio + async/await
- 序列化: Serde + JSON
- 错误处理: anyhow + thiserror
核心功能模块
1. 项目管理
- 多项目管理,本地路径绑定
- 素材管理:视频、音频、图片统一管理
- 版本控制:素材版本追踪,支持回滚
2. AI智能分析
- 基于Gemini AI的视频内容自动分类
- 场景检测:自动识别视频场景变化,智能分割片段
- 质量评估:AI评估视频质量,提供优化建议
3. 模板系统
- 可视化模板编辑器
- AI驱动的素材与模板自动匹配
- 批量处理:一键应用模板到多个素材
4. 模特管理
- 完整的模特信息管理系统
- 支持多类型照片分类存储
- 素材与模特自动关联
5. 穿搭推荐
- AI驱动的穿搭搭配推荐
- 智能搜索和筛选
- 收藏和比较功能
6. 视频生成
- 基于模板的视频自动生成
- 支持多种输出格式
- 批量导出处理
四层架构设计
1. 基础设施层 (Infrastructure)
- 数据库管理: SQLite连接池,读写分离
- 外部服务: Gemini API, FFmpeg集成
- 文件系统: 文件操作,路径管理
- 日志系统: 结构化日志,性能监控
- 事件总线: 组件间通信
2. 数据访问层 (Data)
- 模型定义: 所有业务实体模型
- 仓库模式: 数据访问抽象
- 数据库迁移: 版本管理
- 连接管理: 连接池优化
3. 业务逻辑层 (Business)
- 服务层: 核心业务逻辑
- 领域模型: 业务规则封装
- 工作流: 复杂业务流程
- 验证: 数据验证规则
4. 表现层 (Presentation)
- Tauri Commands: 前后端通信接口
- 参数验证: 输入参数校验
- 错误处理: 统一错误响应
- 权限控制: 操作权限管理
开发环境配置
环境要求
- Node.js >= 18.0.0
- Rust >= 1.70.0
- PNPM >= 8.0.0
- Tauri CLI >= 2.0.0
开发命令
# 安装依赖
pnpm install
# 开发模式
pnpm tauri:dev
# 构建应用
pnpm tauri:build
# 运行测试
pnpm test
# 代码格式化
pnpm format
# 代码检查
pnpm lint
核心设计原则
1. 安全第一
- 数据库文件安全存储
- 输入参数严格验证
- 错误信息不泄露敏感数据
2. 性能优化
- 数据库连接池
- 读写分离
- 虚拟化列表
- 懒加载
3. 用户体验
- 响应式设计
- 优雅的加载状态
- 友好的错误提示
- 流畅的动画效果
4. 可维护性
- 清晰的分层架构
- 统一的编码规范
- 完善的测试覆盖
- 详细的文档说明
5. 可扩展性
- 模块化设计
- 插件化架构
- 配置化管理
- 微服务准备
数据库设计
核心表结构
- projects: 项目管理
- materials: 素材管理
- models: 模特信息
- templates: 模板定义
- video_classifications: AI分类记录
- outfit_images: 穿搭图片
- conversations: 对话记录
数据库特性
- WAL模式:提高并发性能
- 外键约束:保证数据一致性
- 索引优化:提升查询性能
- 连接池:支持高并发访问
状态管理规范
Zustand Store 设计
- uiStore: UI状态管理
- projectStore: 项目状态
- materialStore: 素材状态
- outfitSearchStore: 穿搭搜索状态
- videoClassificationStore: 视频分类状态
状态管理原则
- 单一数据源
- 不可变更新
- 异步操作处理
- 错误状态管理
UI/UX 设计规范
设计系统
- 颜色系统: 现代蓝色主题,语义化颜色
- 字体系统: Inter + JetBrains Mono
- 间距系统: 8px基础网格
- 圆角系统: 统一的圆角规范
- 阴影系统: 层次化阴影效果
组件规范
- 原子化设计
- 可复用组件
- 一致的交互模式
- 无障碍访问支持
动画规范
- 流畅的过渡效果
- 有意义的动画反馈
- 性能优化的动画
- 可配置的动画偏好
测试策略
测试类型
- 单元测试: 核心业务逻辑
- 集成测试: API和数据库集成
- 组件测试: React组件测试
- E2E测试: 用户界面端到端测试
测试工具
- 前端: Vitest + Testing Library
- 后端: Rust内置测试框架
- E2E: 计划使用Playwright
测试覆盖率
- 目标覆盖率: 80%+
- 关键路径: 100%覆盖
- 持续集成: 自动化测试
版本管理
版本号规范
- 语义化版本: MAJOR.MINOR.PATCH
- 当前版本: v0.2.1
- 发布周期: 迭代式发布
Git工作流
- 主分支: master
- 功能分支: feature/功能名
- 修复分支: hotfix/问题描述
- 发布分支: release/版本号
部署与发布
构建产物
- Windows: .msi + .exe
- macOS: .dmg + .app
- Linux: .deb + .rpm + .AppImage
自动化发布
- GitHub Actions
- 自动构建
- 自动发布
- 版本标签管理
性能监控
监控指标
- 应用启动时间
- 数据库查询性能
- AI分类处理时间
- 内存使用情况
优化策略
- 数据库查询优化
- 图片懒加载
- 虚拟化列表
- 缓存策略
错误处理
错误分类
- 用户输入错误
- 系统运行错误
- 网络连接错误
- 外部服务错误
处理策略
- 统一错误格式
- 友好错误提示
- 错误日志记录
- 自动重试机制
国际化支持
多语言支持
- 中文(简体): 主要语言
- 英文: 计划支持
- 其他语言: 未来扩展
本地化策略
- 文本外部化
- 日期时间格式
- 数字格式
- 文化适配
安全考虑
数据安全
- 本地数据加密
- 敏感信息保护
- 安全的文件操作
- API密钥管理
应用安全
- 输入验证
- SQL注入防护
- 文件路径验证
- 权限控制
未来规划
短期目标 (3个月)
- 完善AI分类功能
- 优化用户界面
- 提升性能表现
- 增加测试覆盖
中期目标 (6个月)
- 添加更多AI功能
- 支持更多文件格式
- 云端同步功能
- 插件系统
长期目标 (1年)
- 多平台支持
- 微服务架构
- 商业化功能
- 生态系统建设