Commit Graph

33 Commits

Author SHA1 Message Date
imeepos 0ea1b2cd38 fix: 添加只读链接 读写分离 2025-07-15 18:51:09 +08:00
imeepos 8d8e98188d fix: 添加连接池功能 2025-07-15 18:43:22 +08:00
imeepos 86eeb90fb8 fix: 使用非阻塞锁获取 2025-07-15 18:20:00 +08:00
imeepos 6dcbd4a6e1 fix: 数据库链接 锁问题 2025-07-15 18:10:54 +08:00
imeepos 259ff992ae fix: 修复素材导入时model_id为null的数据库问题
- 在materials表初始创建时添加model_id列,避免依赖迁移
- 在初始索引创建中添加model_id索引
- 添加调试日志跟踪model_id在导入过程中的传递
- 确保素材导入时选择的模特ID能正确保存到数据库
- 解决素材导入+选择模特后数据库结果model_id=null的问题
2025-07-15 13:28:47 +08:00
imeepos 730402aba0 feat: 实现项目-模板绑定和素材-模特绑定管理功能
新功能:
- 项目-模板绑定管理系统
  - 支持主要/次要模板绑定类型
  - 绑定优先级和状态管理
  - 批量绑定操作
  - 绑定关系的CRUD操作

- 素材-模特绑定管理系统
  - 素材与模特的关联管理
  - 批量绑定/解绑操作
  - 绑定统计和分析
  - 素材编辑对话框

 架构改进:
- 新增项目-模板绑定数据模型和仓库层
- 新增素材-模特绑定业务服务层
- 完善的API命令层实现
- 响应式前端界面设计

 用户体验优化:
- 统一的通知系统
- 增强的加载状态组件
- 流畅的交互动画
- 优雅的确认对话框

 测试覆盖:
- 单元测试和集成测试
- 业务逻辑验证
- API接口测试

 技术栈:
- 后端: Rust + Tauri + SQLite
- 前端: React + TypeScript + TailwindCSS
- 状态管理: Zustand
- 测试: Vitest + Rust测试框架

 配置更新:
- 更新数据库迁移脚本
- 完善测试配置
- 优化构建流程
2025-07-15 12:50:30 +08:00
imeepos 05d29832b0 feat: 实现模板片段匹配规则功能并修复数据库迁移问题
新功能:
- 为TrackSegment添加匹配规则字段,支持固定素材和AI分类两种规则
- 实现SegmentMatchingRuleEditor组件,支持在模板详情页面编辑片段匹配规则
- 添加update_segment_matching_rule和get_segment_matching_rule API接口
- 扩展前端类型定义和服务函数以支持匹配规则操作

 修复:
- 修复数据库迁移逻辑导致每次重启清空素材和轨道数据的问题
- 为模板表和轨道片段表迁移添加条件检查,只在必要时执行
- 修正matching_rule字段的默认值格式,匹配Rust枚举序列化格式
- 完善轨道片段表重建时的字段迁移逻辑

 技术改进:
- 数据库schema更新,添加matching_rule列到track_segments表
- 优化数据库迁移性能,避免不必要的表重建操作
- 增强错误处理和日志输出,便于问题排查

 文件变更:
- 后端: template_service.rs, template.rs, database.rs, template_commands.rs, lib.rs
- 前端: SegmentMatchingRuleEditor.tsx, TemplateDetailModal.tsx, templateStore.ts, template.ts
2025-07-15 09:43:04 +08:00
imeepos 0a0c281ef6 fix: 模板导入bug 2025-07-15 08:55:22 +08:00
imeepos 14d90b2254 fix: 模板移除project关联 2025-07-15 08:42:36 +08:00
imeepos 595d2f75fd fix: 修复模板导入的bug 2025-07-14 23:14:45 +08:00
imeepos 939efd70d4 feat: 完善模板导入功能
新增功能:
- 添加详细的模板导入日志系统
- 实现全局进度存储机制
- 完善模板状态管理

 修复问题:
- 修复进度监控无限轮询问题
- 修复模板列表状态显示不正确问题
- 修复所有unwrap()导致的panic错误
- 修复外键约束失败问题

 改进:
- 优化素材上传逻辑,只上传视频/音频/图片
- 上传失败时自动跳过而不是中断导入
- 缺失文件时继续导入而不是失败
- 改进错误处理机制
2025-07-14 21:34:07 +08:00
imeepos 4b3b00bcfc fix: 修复编译错误和警告
编译错误修复:
- 修复gemini_service.rs中response borrow错误
- 在使用response.text()前保存status值

 警告清理:
- 移除未使用的导入: std::collections::HashMap, uuid::Uuid, tokio::sync::Mutex
- 修复未使用变量警告: 添加下划线前缀
- 移除不必要的mut关键字

 编译状态:
- 所有编译错误已修复
- 仅保留1个合理的dead_code警告
- 代码质量显著提升

现在代码可以正常编译运行,准备测试AI分类功能。
2025-07-14 13:45:12 +08:00
imeepos da5bb8e43d feat: 支持多区域配置的Cloudflare Gateway URL
多区域支持:
- 将region改为regions字符串数组
- 支持多个区域: us-central1, us-east1, europe-west1
- 使用第一个区域作为默认区域
- 添加区域选择的详细日志

 Cloudflare Gateway URL格式:
- 完整的URL构建逻辑
- 格式: https://gateway.ai.cloudflare.com/v1/{project_id}/{gateway_id}/google-vertex-ai/v1/projects/{google_project_id}/locations/{region}/publishers/google/models
- 支持动态区域切换

 配置参数:
- cloudflare_project_id: 67720b647ff2b55cf37ba3ef9e677083
- cloudflare_gateway_id: bowong-dev
- google_project_id: gen-lang-client-0413414134
- regions: [us-central1, us-east1, europe-west1]

 日志增强:
- 显示构建的完整Gateway URL
- 显示当前使用的区域
- 显示所有可用区域列表

现在支持标准的Cloudflare Gateway多区域配置。
2025-07-14 13:33:15 +08:00
imeepos 37e75785da feat: 添加超详细的HTTP请求日志系统 2025-07-14 13:28:29 +08:00
imeepos e626521ac2 feat: 添加超详细的HTTP请求日志系统
详细日志增强:
- HTTP请求URL和超时配置
- 完整的请求头信息 (Authorization脱敏显示)
- 请求体大小和内容预览
- HTTP响应状态码和原因短语
- 完整的响应头信息
- 响应体大小和内容预览

 重试机制日志:
- 每次尝试的详细时间统计
- 失败原因的具体记录
- 重试等待过程的状态显示
- 成功/失败的明确标识

 错误分析支持:
- JSON解析错误的详细信息
- 错误响应的完整内容
- 候选结果数量统计
- 内容预览和截断显示

 调试友好:
- 分步骤的详细日志
- 时间戳和耗时统计
- 敏感信息的安全处理
- 结构化的日志输出

现在可以完整分析API调用的每个环节!
2025-07-14 13:27:04 +08:00
imeepos ea2c72ea05 fix: 修正Gemini API端点格式
API端点修复:
- 修正为正确的格式: base_url/model_name:generateContent
- 修改前: base_url/google/vertex-ai:generateContent
- 修改后: base_url/gemini-2.5-flash:generateContent

 具体变更:
- 简化gateway_url为base_url
- 在生成URL时添加model_name
- 符合Python参考代码的端点格式

 预期效果:
- 正确的API调用地址
- 与Cloudflare Gateway兼容
- 支持不同模型的动态切换

现在API端点应该是正确的格式了。
2025-07-14 13:22:20 +08:00
imeepos 62cd15fe82 feat: 重构Gemini API调用实现
重构改进:
- 参考Python demo.py实现重写Gemini API调用
- 添加完整的配置参数支持 (model_name, max_retries, retry_delay等)
- 实现Cloudflare Gateway兼容的API端点格式
- 添加完整的重试机制和错误处理

 API端点修正:
- 修改为正确的generateContent端点格式
- 支持gemini-2.5-flash等模型配置
- 优化请求头和认证方式
- 改进超时和重试策略

 配置增强:
- 支持自定义temperature和max_tokens
- 可配置重试次数和延迟时间
- 更好的客户端配置管理
- 详细的日志和错误信息

 代码结构:
- 分离请求发送和响应解析逻辑
- 更清晰的错误处理流程
- 符合Rust最佳实践的异步处理

这个重构应该能解决API调用的兼容性问题。
2025-07-14 13:15:39 +08:00
imeepos 5d17966c43 fix: 修复Gemini上传响应解析错误
问题修复:
- 修复UploadResponse结构体缺少urn字段的问题
- 支持Google Cloud Storage标准响应格式
- 优先使用urn字段作为文件URI
- 添加name字段作为备用URI构建方案

 根据日志分析:
- API返回的是GCS标准格式,包含urn而非file_uri
- 响应示例: gs://dy-media-storage/video-analysis/filename.mp4
- 解决了'missing field file_uri'错误

 修复效果:
- 支持多种URI格式的解析
- 提供更好的错误处理和日志
- 确保视频上传流程的完整性

现在应该能正确解析上传响应并继续AI分析流程。
2025-07-14 13:10:00 +08:00
imeepos b0ea168db8 feat: 添加详细的AI分类日志系统
日志增强:
- Gemini API访问令牌获取详细日志
- 视频上传过程完整日志记录
- AI内容分析请求和响应日志
- 视频分类服务处理流程日志
- 任务队列处理状态详细跟踪

 日志内容:
- URL请求地址和参数
- HTTP状态码和响应头
- 请求和响应体内容
- 处理耗时统计
- 错误详细信息和堆栈

 问题诊断:
- 便于分析404 Not Found错误原因
- 跟踪API调用完整流程
- 监控性能瓶颈
- 调试响应解析问题

这些日志将帮助快速定位和解决AI分类功能的问题。
2025-07-14 13:06:35 +08:00
imeepos b8dfaf8af8 feat: 实现AI视频分类功能
新功能:
- 集成Google Gemini API进行视频智能分类
- 实现任务队列系统支持批量处理
- 添加实时进度显示和状态管理
- 自动文件整理到分类文件夹

 架构改进:
- 遵循Tauri开发规范的分层架构设计
- 完整的数据模型和仓库层实现
- 异步任务处理和错误处理机制
- 类型安全的前后端通信接口

 用户界面:
- MaterialCard组件添加AI分类按钮
- VideoClassificationProgress进度显示组件
- 优美的动画效果和响应式设计
- 符合前端开发规范的UI/UX优化

 数据库扩展:
- 新增video_classification_records表
- 新增video_classification_tasks表
- 完整的索引优化和外键约束

 技术实现:
- Rust后端服务层完整实现
- React/TypeScript前端状态管理
- Zustand状态存储和API封装
- 完善的错误处理和用户提示

 文档:
- 完整的功能文档和API说明
- 架构设计和使用流程说明
- 开发规范遵循情况说明

Closes #AI视频分类功能开发
2025-07-14 12:52:30 +08:00
imeepos c9882aad18 feat: 优化AI分类设置界面设计
- 根据promptx/frontend-developer规范优化UI设计
- 精致化卡片布局,减小元素尺寸
- 优化按钮组设计,添加hover动画效果
- 改进表单对话框样式,提升用户体验
- 修复数据库布尔值类型问题
- 优化分类排序移动功能
2025-07-14 12:02:10 +08:00
imeepos ca63da30ff feat: 实现AI分类设置功能 (v0.1.7)
新增功能:
- AI分类CRUD操作 (创建、读取、更新、删除)
- 实时提示词预览功能
- 分类排序和状态管理
- 完整的表单验证和错误处理

 后端架构:
- 数据层: AiClassification模型和仓储
- 业务层: AiClassificationService业务逻辑
- 表示层: 10个Tauri命令接口
- 数据库: ai_classifications表和索引

 前端架构:
- 类型系统: 完整的TypeScript类型定义
- 服务层: AiClassificationService API封装
- 组件层: 5个专用组件 (主页面、表单、预览、删除确认、实时预览)
- 路由集成: /ai-classification-settings

 质量保证:
- 52个单元测试 (100%通过)
- TypeScript和Rust编译无错误
- 遵循promptx开发规范

 核心特性:
- 支持分类名称和提示词定义
- 实时生成完整AI分类提示词
- 拖拽排序和批量操作
- 优雅的用户界面和交互体验
2025-07-14 11:39:44 +08:00
imeepos 5cf1f8bfca feat: 实现模特管理功能
- 新增模特数据模型和数据库表结构
- 实现模特的完整CRUD操作
- 添加模特照片管理功能
- 实现素材与模特关联功能
- 创建模特管理前端界面
- 集成到主应用导航和路由
- 修复数据库连接死锁问题

功能特性:
- 模特基本信息管理(姓名、艺名、性别、年龄等)
- 照片管理和封面设置
- 标签系统
- 状态管理(活跃、不活跃、退役、暂停)
- 评分系统
- 搜索和过滤功能
- 素材关联功能
2025-07-14 01:39:14 +08:00
imeepos 73f542af40 feat: 实现异步导入处理和批量导入功能
- 新增异步素材导入服务 (AsyncMaterialService)
- 实现实时进度反馈和事件驱动架构
- 添加批量文件夹选择和扫描功能
- 更新导入对话框支持文件夹批量导入
- 优化用户体验,避免UI阻塞

Features:
1. 异步导入处理:支持实时进度更新,不阻塞UI
2. 批量导入:支持文件夹选择和递归扫描
3. 事件驱动:使用Tauri事件系统进行进度通信
4. 文件类型过滤:支持按扩展名过滤文件
5. 改进的用户界面:新增批量导入配置步骤

遵循promptx/tauri-desktop-app-expert开发规范
2025-07-13 23:32:54 +08:00
imeepos 464a0ce708 hotfix: 修复 Windows 上 FFmpeg/FFprobe 命令行闪现问题
问题修复:
- 修复了 Windows 平台上执行 FFmpeg 和 FFprobe 时命令行窗口闪现的问题
- 使用 CREATE_NO_WINDOW 标志隐藏控制台窗口,改善用户体验

 技术实现:
- 添加 Windows 特定的 CommandExt 导入
- 创建 create_hidden_command() 辅助函数
- 替换所有 FFmpeg/FFprobe 命令调用使用隐藏控制台模式

 影响范围:
- FFmpeg 可用性检查
- 视频/音频元数据提取
- 场景检测功能
- 视频切分操作
- 缩略图生成
- 版本信息获取

 测试状态:
- Rust 编译通过
- 前端构建成功
- 应用启动正常
- 功能完整性保持

 用户体验:
- 消除了命令行窗口闪现
- 保持所有功能正常工作
- 不影响性能和错误处理
2025-07-13 23:06:22 +08:00
imeepos 39b517dcd8 feat: 实现Tauri开发规范立即改进项目 2025-07-13 22:46:20 +08:00
imeepos 864d1b42a9 fix: 修复视频切分前几秒无画面问题
问题分析:
- 原因:使用 -c copy 流复制模式在非关键帧位置切分
- 症状:切分后的视频前几秒显示黑屏或无画面

解决方案:
1. 新增三种切分模式:
   - Fast: 快速模式(流复制,速度快但可能有画面问题)
   - Accurate: 精确模式(重新编码,确保画面完整)
   - Smart: 智能模式(关键帧对齐 + 快速切分)

2. 精确模式技术改进:
   - 使用 libx264 重新编码视频
   - 使用 aac 重新编码音频
   - 添加 -preset fast 提高编码速度
   - 设置 -crf 23 保证质量
   - 添加 -movflags +faststart 优化播放

3. 智能模式特性:
   - 自动获取视频关键帧信息
   - 将切分点调整到最近的关键帧
   - 结合快速切分提高效率

4. 新增调试功能:
   - test_video_split 命令测试不同切分模式
   - 详细的切分日志输出
   - 模式选择和参数配置

默认配置:
- 使用 Accurate 模式确保画面完整
- 可通过配置切换到其他模式

现在切分的视频应该不会再有前几秒无画面的问题!
2025-07-13 21:17:48 +08:00
imeepos 44e9100f56 feat: 大幅改进FFmpeg场景检测功能
主要改进:
1. 重构场景检测算法,使用多种检测方法:
   - FFmpeg scene滤镜 + showinfo
   - ffprobe帧分析(I帧检测)
   - 智能时间间隔备用方案

2. 智能备用场景检测:
   - 根据视频时长自动调整切分间隔
   - 短视频(2分钟内): 30秒间隔
   - 中等视频(10分钟内): 60秒间隔
   - 长视频: 120秒间隔
   - 低阈值时增加额外切点

3. 完善的错误处理和降级策略:
   - 多种方法级联尝试
   - 详细的调试日志输出
   - 确保即使FFmpeg命令失败也能提供合理的场景切点

4. 新增替代检测方法:
   - 基于I帧(关键帧)的场景检测
   - 最小场景时长限制避免过度切分

技术特点:
- 多重保障确保场景检测不会完全失败
- 智能算法根据视频特征调整策略
- 详细日志便于调试和优化
- 向后兼容,不影响现有功能

现在场景检测应该能够正常工作,即使在FFmpeg配置有问题的情况下也能提供合理的切分建议。
2025-07-13 21:07:30 +08:00
imeepos dbcd98118c feat: 修复FFmpeg场景检测功能并添加调试工具
主要修复:
- 重构场景检测算法,使用正确的FFmpeg命令
- 添加备用的简单场景检测方法
- 改进FFmpeg可用性检查,同时检查ffmpeg和ffprobe
- 添加详细的FFmpeg状态信息获取功能

新增功能:
- FFmpegDebugPanel调试面板组件
- test_scene_detection测试命令用于调试
- get_ffmpeg_status命令获取详细状态
- 项目详情页面添加调试工具选项卡

技术改进:
- 更可靠的场景检测实现,支持降级到时间间隔方法
- 完善的错误处理和日志记录
- 用户友好的调试界面
- 实时测试和诊断工具

这个版本应该能够正确处理场景检测,即使在FFmpeg配置有问题的情况下也能提供备用方案。
2025-07-13 21:04:46 +08:00
imeepos fdb87bf64e feat: 实现项目详情页面和素材导入功能
- 添加项目详情页面路由和组件
- 实现素材数据模型和数据库表结构
- 集成FFmpeg进行视频元数据提取和场景检测
- 实现视频自动切分功能(基于场景检测和时长限制)
- 开发素材导入UI界面和进度显示
- 添加素材管理相关的Tauri命令
- 完善错误处理和性能优化
- 添加单元测试覆盖核心功能

主要功能:
- 项目详情页面展示项目信息和素材统计
- 素材导入支持多种格式(视频、音频、图片、文档)
- MD5重复检测避免重复导入
- FFmpeg集成提取视频/音频元数据
- 智能场景检测和视频切分
- 二次切分处理超长视频片段
- 响应式UI设计和用户友好的导入流程
2025-07-13 20:45:05 +08:00
imeepos 2f7ed4ae99 fix: 修复 UNIQUE 约束冲突和应用架构完善
问题修复:
- 修复项目路径 UNIQUE 约束冲突导致的创建失败问题
- 修复应用启动时数据库清理导致的卡住问题
- 修复编译错误和类型安全问题

 架构完善:
- 完善四层架构设计,符合 Tauri 开发规范
- 添加性能监控系统,支持启动时间、内存、CPU 监控
- 添加事件总线系统,实现事件驱动架构
- 增强应用状态管理,集成性能监控和事件系统

 技术优化:
- 优化数据库 PRAGMA 配置,提高数据可靠性
- 改进项目创建逻辑,自动处理路径冲突
- 添加手动清理功能,用户可主动清理无效记录
- 完善错误处理和用户反馈机制

 新增功能:
- 项目路径冲突自动处理
- 无效项目记录清理功能
- 性能监控报告生成
- 事件驱动的组件通信

 UI 改进:
- 在项目列表添加清理按钮
- 优化按钮布局和用户交互
- 增强加载状态和错误提示

 质量保证:
- 遵循 Tauri 开发规范的安全第一原则
- 实现类型安全的错误处理
- 添加详细的调试日志和状态监控
- 确保数据库操作的事务安全性

 性能优化:
- 优化数据库连接和查询性能
- 实现性能指标监控和报告
- 添加启动时间和响应时间监控
- 符合 Tauri 性能标准要求
2025-07-13 19:33:51 +08:00
imeepos 7b11ed04bd fix: 修复项目数据持久化问题
问题修复:
- 修复软件重新打开后项目数据丢失的问题
- 修复 is_active 字段数据类型不一致导致的查询问题
- 修复数据库事务提交和数据持久化问题

 技术修复:
- 改进数据库连接配置,使用 DELETE 模式确保数据立即写入
- 修复 is_active 字段的布尔值存储和读取逻辑
- 添加数据库迁移机制,自动修复历史数据
- 增强数据库路径管理,确保数据存储在正确位置

 数据库优化:
- 使用事务确保数据一致性
- 添加数据验证和错误处理
- 优化数据库 PRAGMA 设置提高可靠性
- 支持多种数据类型的兼容性读取

 测试验证:
- 验证项目创建后数据正确保存
- 验证应用重启后数据正确加载
- 验证数据库迁移正确执行
- 确保所有现有项目数据完整性
2025-07-13 19:04:11 +08:00
imeepos 42c5dcef8e feat: 实现项目管理功能 v0.1.1
新功能:
- 项目创建:支持项目名称和本地路径绑定
- 项目列表:简洁大方的卡片式布局展示
- 项目编辑:支持项目信息修改
- 项目删除:支持项目软删除
- 路径选择:集成系统文件夹选择对话框
- 路径验证:实时验证项目路径有效性

 架构设计:
- 遵循 Tauri 开发规范的四层架构设计
- 基础设施层:数据库管理、文件系统操作
- 数据访问层:项目仓库模式、SQLite 集成
- 业务逻辑层:项目服务、数据验证
- 表示层:Tauri 命令、前端组件

 UI/UX:
- 使用 Tailwind CSS 实现简洁大方的设计风格
- 响应式布局适配不同屏幕尺寸
- 流畅的动画效果和交互反馈
- 完整的错误处理和用户提示

 技术栈:
- 后端:Rust + Tauri + SQLite + 四层架构
- 前端:React + TypeScript + Tailwind CSS + Zustand
- 测试:Rust 单元测试 + Vitest 前端测试
- 工具:pnpm 包管理 + 类型安全保证

 质量保证:
- Rust 单元测试覆盖核心业务逻辑
- 前端组件测试覆盖主要 UI 组件
- TypeScript 严格模式确保类型安全
- 遵循开发规范的代码质量标准

 核心特性:
- 项目管理:创建、查看、编辑、删除项目
- 路径管理:自动验证、绝对路径转换
- 数据持久化:SQLite 本地数据库存储
- 状态管理:Zustand 响应式状态管理
- 错误处理:完整的错误捕获和用户反馈
2025-07-13 18:46:58 +08:00