Commit Graph

56 Commits

Author SHA1 Message Date
imeepos 483ea64413 fix: 修复AI视频分类进度数据不一致问题 2025-07-14 14:53:54 +08:00
imeepos 943a22a85e fix: 修复AI视频分类进度数据不一致问题
问题修复:
- 修复分类统计与队列进度数据不匹配的问题
- 添加项目特定的队列状态查询接口
- 确保AI视频分类进度显示当前项目的准确数据

 技术改进:
- 添加get_project_classification_queue_status命令
- 在VideoClassificationQueue中添加get_project_stats方法
- 前端组件现在使用项目特定的队列状态

 数据一致性:
- 队列统计现在基于项目过滤
- 分类统计和任务进度数据保持一致
- 避免了跨项目数据混淆的问题
2025-07-14 14:52:15 +08:00
imeepos b1fdcaac6b feat: 添加项目特定的AI视频分类任务进度显示
功能改进:
- 添加get_project_classification_task_progress命令
- VideoClassificationProgress组件现在只显示当前项目的任务
- 优化任务进度获取逻辑,支持按项目过滤

 技术实现:
- 后端添加项目任务进度查询接口
- 前端store支持按项目获取任务进度
- 使用useCallback优化组件性能

 用户体验提升:
- 项目详情页面只显示相关任务,避免混淆
- 更精确的进度统计和状态显示
- 更好的数据隔离和组织
2025-07-14 14:41:16 +08:00
imeepos 4b26c0406c feat: 优化项目详情页布局为上下布局
布局优化:
- 从左右布局改为上下布局,提升用户体验
- 统计信息移至顶部,采用卡片式设计
- 选项卡导航采用现代化设计风格

 响应式设计:
- 统计卡片支持2-4列自适应布局
- 选项卡在小屏幕上显示简化文本
- 操作按钮在移动端仅显示图标
- 素材网格支持1-5列响应式布局

 用户体验提升:
- 更好的信息层次结构
- 更高效的空间利用
- 移动端友好的交互设计
- 符合现代UI设计规范

遵循promptx/frontend-developer开发规范,确保:
- 移动优先的响应式设计
- 良好的可访问性支持
- 一致的设计语言
- 优秀的性能表现
2025-07-14 14:26:16 +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 a743bedd98 fix: 彻底修复数据库重复初始化问题
问题修复:
- 使用全局静态OnceLock确保数据库单例模式
- 移除AppState中的重复数据库初始化逻辑
- 确保整个应用生命周期只有一个数据库实例

 验证结果:
- 测试确认数据库初始化日志只出现一次
- 解决了启动时循环输出的问题
- 提升了应用启动性能

这个修复彻底解决了数据库重复初始化导致的日志循环输出问题。
2025-07-14 13:00:54 +08:00
imeepos 849dc8317c fix: 修复数据库重复初始化问题
问题修复:
- 修复AppState.get_database()方法重复创建数据库实例的问题
- 使用OnceLock确保数据库单例模式
- 修复video_classification_commands中重复调用get_database()的问题

 技术改进:
- 避免数据库循环初始化导致的日志重复输出
- 提升应用启动性能
- 确保数据库连接的一致性

这个修复解决了启动时数据库初始化日志循环输出的问题。
2025-07-14 12:56:30 +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 a5072d4c0f fix: 修复TypeScript编译错误
- 移除未使用的导入 StarIconSolid
- 移除未使用的导入 useMemo
- 确保构建过程顺利完成
2025-07-14 10:55:22 +08:00
imeepos 173eb8a7ed chore: 发布 v0.1.6 版本
版本更新:
- 更新版本号到 0.1.6
- 添加详细的发布说明文档

 版本亮点:
- 完整的模特管理系统
- 全面的UI/UX优化
- 现代化的设计系统
- 性能和稳定性提升

 新增功能:
- 模特CRUD操作和照片管理
- 高级搜索和筛选功能
- 双视图模式和收藏功能
- 响应式设计和动画效果

 技术改进:
- 分层架构和模块化设计
- 类型安全和错误处理
- 数据库优化和性能提升
- 组件复用和代码规范
2025-07-14 10:50:17 +08:00
imeepos 6b21a389c0 feat: 优化模特管理界面UI/UX设计
界面精致化优化:
- 优化模特卡片尺寸,宽高比调整为4:5,更加紧凑
- 精致化按钮设计,统一尺寸规范和间距
- 优化搜索框和筛选器,提升视觉精致度
- 修复下拉选择组件图标间距问题

 组件优化:
- ModelCard: 减少内边距,优化文字和图标尺寸
- ModelList: 精致化头部工具栏和按钮设计
- ModelSearch: 重新设计搜索框和筛选器布局
- 创建CustomSelect组件,解决原生select样式问题

 用户体验提升:
- 修复筛选按钮功能,添加展开/收起动画
- 优化网格布局,支持更多列显示
- 提高信息密度,在相同空间显示更多内容
- 统一设计语言,建立完整的设计系统

 响应式优化:
- 优化移动端显示效果
- 在大屏幕上支持5列布局
- 改进触摸目标尺寸和间距

技术改进:
- 建立统一的设计令牌系统
- 优化CSS动画和过渡效果
- 改进组件可维护性和复用性
- 遵循前端开发规范和视觉设计标准
2025-07-14 10:45:08 +08:00
imeepos 7a2d045be3 fix: 修复模特管理功能的数据库死锁问题
- 修复删除操作死锁:移除不必要的存在性检查
- 修复更新操作死锁:创建get_basic_by_id方法避免嵌套锁
- 优化get_all方法:分步执行避免嵌套数据库连接
- 添加详细的调试日志便于问题排查
- 确保前端在操作成功后正确刷新列表

解决的问题:
- 删除模特时卡住不响应
- 编辑模特时卡住不响应
- 数据库连接嵌套锁导致的死锁

技术改进:
- 分离基本信息查询和照片加载逻辑
- 优化数据库连接管理
- 增强错误处理和日志记录
2025-07-14 10:10:35 +08:00
imeepos 5cf1f8bfca feat: 实现模特管理功能
- 新增模特数据模型和数据库表结构
- 实现模特的完整CRUD操作
- 添加模特照片管理功能
- 实现素材与模特关联功能
- 创建模特管理前端界面
- 集成到主应用导航和路由
- 修复数据库连接死锁问题

功能特性:
- 模特基本信息管理(姓名、艺名、性别、年龄等)
- 照片管理和封面设置
- 标签系统
- 状态管理(活跃、不活跃、退役、暂停)
- 评分系统
- 搜索和过滤功能
- 素材关联功能
2025-07-14 01:39:14 +08:00
imeepos af2897d314 chore: bump version to 0.1.5
- 更新package.json版本号到0.1.5
- 更新Cargo.toml版本号到0.1.5
- 更新tauri.conf.json版本号到0.1.5
- 准备发布0.1.5版本
2025-07-14 00:30:09 +08:00
imeepos c366261008 feat: UI美化和UX改进 v0.1.5
- 优化设计系统和主题配置
  - 增强Tailwind配置,添加更丰富的色彩系统
  - 新增多种动画效果和过渡动画
  - 改进字体系统和间距设置
  - 添加阴影变体和渐变效果

- 改进项目列表页面UI/UX
  - 重新设计页面头部,添加渐变背景和统计信息
  - 优化项目卡片布局和响应式设计
  - 增强加载和错误状态的视觉效果
  - 添加交错动画效果

- 优化项目卡片组件
  - 重新设计卡片布局,添加背景装饰
  - 改进统计信息展示,使用渐变背景和徽章
  - 增强悬停效果和交互反馈
  - 优化菜单和按钮设计

- 改进表单和模态框体验
  - 重新设计模态框头部和布局
  - 增强表单字段的视觉设计和验证反馈
  - 添加加载状态和成功状态指示
  - 改进按钮样式和交互效果

- 增强加载状态和反馈机制
  - 重新设计EmptyState组件,添加装饰效果
  - 增强LoadingSpinner,支持多种动画样式
  - 改进ErrorMessage组件,支持多种消息类型
  - 新增SkeletonLoader组件用于骨架屏加载

- 添加微交互和动画效果
  - 新增AnimatedButton组件,支持涟漪效果
  - 创建PageTransition组件用于页面过渡
  - 添加多种动画工具组件
  - 增强按钮和卡片的微交互效果

- 优化响应式设计和移动端体验
  - 改进容器布局和间距设置
  - 优化移动端的触摸体验
  - 确保所有组件在不同屏幕尺寸下的完美适配

遵循前端开发规范,提升界面美观性和用户体验
2025-07-14 00:23:58 +08:00
imeepos ae854ef871 fix: 完善前端事件处理逻辑
- 移除handleStartImport中的手动完成状态设置
- 完全依赖事件监听器处理导入完成状态
- 优化日志输出和错误处理
- 确保异步导入流程的一致性
2025-07-14 00:00:39 +08:00
imeepos 44b4084eb9 fix: 修复异步导入业务逻辑和loading状态
问题修复:
1. 异步导入没有调用完整业务逻辑 - 只创建了Material记录,没有处理元数据、场景检测、视频切分
2. 导入动画一闪而逝 - 缺少实际的处理时间
3. 后台无素材处理日志 - 简化版本跳过了所有业务处理

解决方案:
1. 替换简化处理函数为完整业务逻辑处理
2. 调用MaterialService的完整处理流程
3. 添加详细的处理日志和进度事件
4. 添加适当延迟确保用户看到loading动画
5. 修复前端事件处理逻辑

技术改进:
- process_single_file_with_full_logic: 完整的素材处理流程
- 元数据提取、场景检测、视频切分全流程
- 详细的tracing日志输出
- 实时进度事件发送
- 正确的错误处理和状态更新
2025-07-13 23:57:56 +08:00
imeepos 91062ccf4c feat: 优化前端loading状态和用户体验
- 新增MaterialCardSkeleton骨架屏组件
- 优化MaterialImportDialog的进度显示
- 添加详细的导入进度动画和状态指示器
- 改进项目统计信息的loading状态
- 新增LoadingState通用加载组件
- 优化按钮状态和禁用逻辑
- 改进空状态显示和交互

UI/UX改进:
1. 骨架屏loading:替换简单spinner为详细骨架屏
2. 进度指示器:添加阶段指示器和动画效果
3. 状态反馈:实时显示当前处理文件和进度
4. 按钮状态:导入过程中禁用相关按钮
5. 视觉优化:添加图标、颜色和动画效果
2025-07-13 23:51:39 +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 3553ba3c06 chore: 发布 v0.1.3 补丁版本
- 更新版本号到 0.1.3
- 更新 CHANGELOG.md 记录 hotfix 修复内容
- 修复了 Windows 上 FFmpeg 命令行闪现问题
2025-07-13 23:09:57 +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 7af9f68e1a chore: 更新版本号到 0.1.2 并添加 CHANGELOG
- 更新 tauri.conf.json 版本号到 0.1.2
- 更新 Cargo.toml 版本号到 0.1.2
- 更新 package.json 版本号到 0.1.2
- 添加详细的 CHANGELOG.md 记录版本变更
- 准备发布 0.1.2 版本
2025-07-13 22:49:39 +08:00
imeepos 39b517dcd8 feat: 实现Tauri开发规范立即改进项目 2025-07-13 22:46:20 +08:00
imeepos c2e7b2c70f feat: 大幅增强ProjectCard - 添加统计信息和打开文件夹功能
功能增强:
为首页项目列表中的ProjectCard添加了丰富的统计信息展示和便捷的文件夹操作功能,
让用户能够快速了解项目状态并方便地访问项目文件。

新增功能:
1. 项目统计信息展示:
   - 自动加载项目素材统计数据
   - 显示素材总数和总文件大小
   - 按类型分类显示(视频、音频、图片、其他)
   - 使用颜色编码区分不同文件类型

2. 打开文件夹功能:
   - 底部按钮栏新增文件夹图标按钮
   - 下拉菜单中添加'打开文件夹'选项
   - 支持Windows长路径格式处理
   - 双重备用机制确保兼容性

3. 加载状态优化:
   - 统计信息加载时显示加载状态
   - 静默处理加载失败,不影响卡片显示
   - 优雅的动画效果

技术实现:
1. 统计数据获取:
   - 使用get_project_material_stats命令
   - React hooks管理状态
   - useEffect自动加载数据

2. 文件夹操作:
   - 集成@tauri-apps/plugin-opener
   - 路径标准化处理
   - 错误处理和用户提示

3. UI设计:
   - 统计信息卡片式展示
   - 图标+数字的直观显示
   - 响应式布局适配

4. 数据格式化:
   - formatFileSize函数处理文件大小
   - 智能单位转换(B/KB/MB/GB/TB)

视觉效果:
 项目统计信息一目了然
 文件类型分布清晰展示
 便捷的文件夹访问按钮
 加载状态友好提示
 颜色编码增强可读性

用户体验:
- 快速了解项目规模和内容
- 一键打开项目文件夹
- 直观的文件类型分布
- 流畅的交互体验

现在首页的项目卡片功能更加完善,用户可以快速了解项目状态并便捷地进行文件管理!
2025-07-13 22:26:18 +08:00
imeepos 822bbd8b64 feat: 大幅增强MaterialCard显示信息 2025-07-13 22:20:36 +08:00
imeepos d36475ff35 feat: 大幅增强MaterialCard显示信息 - 添加丰富的统计信息
功能增强:
为素材列表的MaterialCard添加了更多详细的统计信息,
让用户能够更全面地了解每个素材的详细情况。

新增信息展示:
1. 基本信息:
   - 文件大小(格式化显示,如 MB/GB)
   - 创建时间(本地化日期格式)

2. 视频元数据(蓝色主题):
   - 视频时长(mm:ss格式)
   - 分辨率(宽高)
   - 比特率(自动单位转换)
   - 帧率(fps)
   - 编解码器
   - 音频信息(如果有)

3. 音频元数据(绿色主题):
   - 音频时长
   - 比特率
   - 采样率
   - 音频编解码器

4. 图片元数据(紫色主题):
   - 图片分辨率
   - 图片格式
   - DPI信息(如果有)

5. 处理统计信息(灰色主题):
   - 场景检测结果(场景数量)
   - 切分片段数量
   - 处理状态

技术实现:
1. 辅助函数:
   - formatTime: 时间格式化(秒转mm:ss)
   - formatFileSize: 文件大小格式化
   - formatBitrate: 比特率格式化
   - formatResolution: 分辨率格式化
   - formatDate: 日期本地化格式化

2. 响应式布局:
   - 使用Grid布局优化信息展示
   - 不同类型元数据使用不同颜色主题
   - 图标+文字的直观展示方式

3. 条件渲染:
   - 根据素材类型显示对应的元数据
   - 智能检测元数据存在性
   - 优雅处理缺失信息

用户体验提升:
 一目了然的素材详细信息
 颜色编码的信息分类
 直观的图标标识
 格式化的数据展示
 响应式的布局设计

现在用户可以在素材列表中快速了解每个文件的详细技术参数和处理状态!
2025-07-13 22:20:01 +08:00
imeepos 4a377be983 fix: 实现MaterialCard中的打开文件位置功能
问题分析:
MaterialCard组件中的openFileLocation函数只是打印路径,
没有实际实现打开文件位置的功能,导致点击分片文件无响应。

修复内容:
1. 实现openFileLocation函数:
   - 使用revealItemInDir在文件管理器中显示并选中文件
   - 添加路径标准化处理,移除Windows长路径前缀
   - 提供备用方案:如果revealItemInDir失败,尝试openPath打开目录

2. 错误处理优化:
   - 双重备用机制确保功能可用性
   - 用户友好的错误提示
   - 详细的调试日志

3. TypeScript类型修复:
   - 添加MaterialSegment类型导入到materialStore
   - 在MaterialState接口中添加getMaterialSegments方法定义
   - 清理未使用的导入项

4. 技术实现:
   `	ypescript
   // 主要方法:在文件管理器中显示文件
   await revealItemInDir(normalizedPath);

   // 备用方法:打开文件所在目录
   await openPath(normalizedDirPath);
   `

功能特点:
 点击分片文件的外链图标可以打开文件位置
 自动处理Windows长路径格式
 双重备用机制确保兼容性
 用户友好的错误处理

现在用户可以方便地通过点击分片列表中的外链图标来打开文件位置了!
2025-07-13 22:12:15 +08:00
imeepos ee40fe31cf fix: 修复视频切分路径问题 - 解决FFmpeg路径处理错误
问题分析:
1. Windows长路径格式问题:\\?\前缀导致FFmpeg无法处理输出路径
2. 中文路径问题:'待分类'中文目录名可能导致FFmpeg处理失败
3. FFmpeg错误:Error opening output file Invalid argument

修复方案:
1. 路径标准化处理:
   - 检测并移除Windows长路径前缀(\\?\)
   - 确保传递给FFmpeg的路径是标准格式

2. 目录名优化:
   - 将'待分类'目录改为'pending'避免中文路径问题
   - 保持功能不变,提高兼容性

3. 双重路径处理:
   - 项目路径标准化:移除\\?\前缀
   - 输出路径标准化:确保FFmpeg可以正确处理

技术细节:
- 项目路径处理:project.path去除\\?\前缀
- 输出目录:项目目录/pending/素材名_segments
- 路径标准化:确保所有路径都是FFmpeg兼容格式
- 详细日志:便于调试路径处理过程

测试验证:
 解决FFmpeg路径处理错误
 避免中文路径兼容性问题
 保持原有功能逻辑不变
 支持Windows长路径格式

现在视频切分应该可以正常工作,文件会输出到项目的pending目录中!
2025-07-13 22:07:11 +08:00
imeepos 2a88d0dc29 feat: 视频切分文件输出到项目待分类目录
需求分析:
用户希望二次切片后的视频文件存放到当前项目目录下的'待分类'目录中,
而不是存放在原视频文件旁边,以便更好地组织项目文件结构。

实现方案:
1. 修改输出路径逻辑:
   - 原路径:原视频文件目录/视频名_segments/
   - 新路径:项目目录/待分类/视频名_segments/

2. 目录结构设计:
   项目根目录/
    待分类/
       视频1_segments/
          视频1_001.mp4
          视频1_002.mp4
          ...
       视频2_segments/
           视频2_001.mp4
           ...
    其他项目文件...

3. 技术实现:
   - 添加get_project_for_material方法获取项目信息
   - 自动创建'待分类'目录
   - 路径标准化处理确保跨平台兼容性
   - 详细的日志输出便于调试

4. 优势:
    统一的项目文件组织结构
    便于后续的文件分类和管理
    避免原始文件目录混乱
    支持多个视频的切分结果集中管理

现在所有切分后的视频片段都会整齐地存放在项目的待分类目录中!
2025-07-13 22:03:58 +08:00
imeepos 6978b8bbfd fix: 修复项目详情页打开文件夹功能
问题分析:
1. 权限问题:Tauri opener插件缺少必要的权限配置
2. 路径格式问题:Windows长路径格式(\\?\前缀)导致opener插件无法处理

修复方案:
1. 权限配置修复:
   - 在capabilities/default.json中添加opener:allow-open-path权限
   - 添加opener:allow-reveal-item-in-dir权限
   - 同时添加fs和dialog相关权限以支持完整功能

2. 路径处理优化:
   - 检测并移除Windows长路径前缀(\\?\)
   - 添加备用方案:如果openPath失败,尝试revealItemInDir
   - 增加错误处理和用户友好的提示信息
   - 添加调试日志便于问题排查

技术细节:
- openPath: 直接打开文件夹
- revealItemInDir: 在文件管理器中显示文件夹
- 路径标准化处理确保跨平台兼容性

现在项目详情页的打开文件夹功能应该可以正常工作了!
2025-07-13 22:00:30 +08:00
imeepos 27353e352f fix: 修复场景检测后不进行切分的问题
问题分析:
场景检测成功识别出44个场景,但是没有进行切分。
原因是needs_segmentation方法只检查视频总时长是否超过最大时长限制。
当视频总时长(170.86秒)小于默认限制(300秒)时,即使有场景检测结果也不会切分。

修复方案:
修改切分条件判断逻辑:
- 原逻辑:只有当视频总时长 > 最大时长限制时才切分
- 新逻辑:满足以下任一条件即切分:
  1. 视频总时长 > 最大时长限制
  2. 是视频文件且有场景检测结果

这样确保:
 有场景检测结果的视频一定会进行分镜头切分
 超长视频即使没有场景检测也会按时长切分
 保持原有的时长限制功能

现在有场景检测结果的视频都会正确进行分镜头+二次切分处理!
2025-07-13 21:53:31 +08:00
imeepos faeafa41cb fix: 修复场景切分逻辑 - 正确实现分镜头+二次切分
问题分析:
用户发现了关键问题:当前逻辑错误地将场景检测结果按最大时长合并,
违背了场景检测的目的。

错误逻辑:
场景检测  根据最大时长限制合并场景  切分视频

正确逻辑:
场景检测  按场景切分视频(分镜头)  对超长分镜头二次切分

修复内容:
1. 重构segment_video函数:
   - 第一步:create_segments_from_scenes_direct - 直接按场景创建分镜头
   - 第二步:apply_duration_limit - 对超长分镜头进行二次切分

2. 新增函数:
   - create_segments_from_scenes_direct: 每个场景作为一个片段
   - apply_duration_limit: 对超长片段按时长限制切分

3. 保持向后兼容:
   - 保留原create_segments_from_scenes函数
   - 内部使用新的两步法实现

4. 详细日志输出:
   - 分镜头切分过程追踪
   - 二次切分决策和结果
   - 最终片段统计

测试结果:
 44个场景正确识别
 每个场景作为独立分镜头
 超长分镜头自动二次切分
 保持场景完整性的同时满足时长限制

现在视频切分逻辑完全正确:先按场景分镜头,再按时长二次切分!
2025-07-13 21:50:47 +08:00
imeepos e6e9532061 fix: 修复最大片段时长限制功能
问题分析:
- 场景检测结果没有正确转换为SceneSegment结构
- create_segments_from_scenes函数逻辑有误
- 缺少对超长片段的二次切分处理
- 没有添加最后一个场景片段

解决方案:
1. 完善场景检测结果转换:
   - 正确获取视频总时长
   - 根据场景切换点创建完整的场景片段
   - 添加最后一个场景片段
   - 详细的场景信息日志输出

2. 重构切分逻辑:
   - 修复create_segments_from_scenes算法
   - 根据场景边界智能合并片段
   - 对超长片段进行二次切分处理
   - 添加create_fixed_segments_range辅助函数

3. 增强调试信息:
   - 详细的切分过程日志
   - 片段时长验证和报告
   - 二次切分过程追踪

测试结果:
 最大时长限制正确生效(2秒限制)
 场景检测识别5个场景
 智能切分生成30个片段
 所有片段都符合时长限制
 使用精确模式避免画面问题

现在视频切分功能完全按照最大片段时长配置工作,既尊重场景边界又确保片段不会过长!
2025-07-13 21:25:40 +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 704e6d8fff feat: 添加视频切分片段查看功能
新增功能:
1. MaterialCard组件 - 增强的素材卡片
   - 显示素材基本信息和状态
   - 支持展开查看切分片段详情
   - 片段时间格式化显示
   - 文件位置快速访问

2. get_material_segments命令
   - 获取指定素材的所有切分片段
   - 返回完整的片段信息包括文件路径

3. 前端store集成
   - getMaterialSegments方法
   - 错误处理和加载状态

4. 用户界面改进
   - 状态颜色编码(完成/处理中/失败/等待)
   - 可折叠的片段列表
   - 时间格式化显示(分:秒)
   - 片段索引和时长信息

视频切分结果保存位置:
- 文件系统: 原视频路径_segments/原视频名_001.mp4
- 数据库: material_segments表存储片段元信息
- 前端: 通过MaterialCard组件可视化查看

现在用户可以:
 查看每个素材的切分状态
 展开查看具体的切分片段
 了解每个片段的时间范围和文件位置
 快速访问切分后的文件
2025-07-13 21:12:01 +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 954c8a6a1c fix: 清理调试日志并添加自动处理测试
- 移除多余的调试日志,保留必要的错误日志
- 添加test_material_import_with_auto_process测试验证修复
- 确保素材状态正确从Pending更新到Completed
- 测试通过,确认修复有效

修复总结:
 素材导入时自动处理功能已启用
 状态正确更新:Pending  Processing  Completed
 添加了完整的测试覆盖
 错误处理和日志记录完善
2025-07-13 20:55:16 +08:00
imeepos db1e08ff86 fix: 修复素材状态一直是Pending的问题
- 在素材导入时启用自动处理逻辑
- 添加auto_process配置选项到MaterialProcessingConfig
- 在process_single_file中调用process_material进行实际处理
- 添加详细的调试日志跟踪处理流程
- 确保素材状态正确从Pending更新到Processing再到Completed

修复内容:
1. 移除process_single_file中的TODO注释,实现实际处理逻辑
2. 根据auto_process配置决定是否自动处理素材
3. 处理成功后返回更新后的素材对象
4. 添加错误处理和状态跟踪日志
2025-07-13 20:53:05 +08:00
imeepos 036488e13b fix: 完善前端组件和类型定义
- 添加素材导入对话框组件
- 实现项目详情页面完整功能
- 添加素材状态管理store
- 完善TypeScript类型定义
- 更新项目列表路由导航
2025-07-13 20:49:04 +08:00
imeepos fdb87bf64e feat: 实现项目详情页面和素材导入功能
- 添加项目详情页面路由和组件
- 实现素材数据模型和数据库表结构
- 集成FFmpeg进行视频元数据提取和场景检测
- 实现视频自动切分功能(基于场景检测和时长限制)
- 开发素材导入UI界面和进度显示
- 添加素材管理相关的Tauri命令
- 完善错误处理和性能优化
- 添加单元测试覆盖核心功能

主要功能:
- 项目详情页面展示项目信息和素材统计
- 素材导入支持多种格式(视频、音频、图片、文档)
- MD5重复检测避免重复导入
- FFmpeg集成提取视频/音频元数据
- 智能场景检测和视频切分
- 二次切分处理超长视频片段
- 响应式UI设计和用户友好的导入流程
2025-07-13 20:45:05 +08:00