Commit Graph

247 Commits

Author SHA1 Message Date
imeepos 3f90013a47 feat: 完善素材导入模特绑定功能并添加测试
- 添加测试验证 CreateMaterialRequest 的 model_id 字段
- 添加测试验证 Material::new_with_model 方法
- 更新测试导入以包含新的 model_id 字段
- 确保数据结构和方法的正确性
2025-07-15 13:03:49 +08:00
imeepos ee7a1f6a1a fix: remote 导入动画 2025-07-15 12:59:45 +08:00
imeepos 6f888295bb feat: 添加素材导入时的模特绑定功能
- 在 CreateMaterialRequest 中添加 model_id 字段
- 更新 Material 实体添加 new_with_model 方法支持创建时绑定模特
- 修改 MaterialService 和 AsyncMaterialService 支持导入时模特绑定
- 在 MaterialImportDialog 中添加模特选择下拉框
- 支持在导入素材时可选择绑定到特定模特
- 遵循 Tauri 开发规范的组件设计和业务逻辑分层
2025-07-15 12:59:27 +08:00
imeepos b86a8a5c23 Merge feature/v0.1.13-binding-management into master
合并绑定管理功能到主分支

 新增功能:
- 项目-模板绑定管理系统
- 素材-模特绑定管理系统
- 统一通知系统
- 增强的用户界面组件

 技术改进:
- 完整的后端API实现
- 响应式前端界面设计
- 优化的状态管理
- 完善的测试框架

 版本: v0.1.13
 Feature Branch: feature/v0.1.13-binding-management
 代码变更: 41 files changed, 7259 insertions(+), 49 deletions(-)
2025-07-15 12:51:53 +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 9f222b562d feat: 模板详情弹框UI/UX全面优化
视觉设计优化:
- 重新设计信息架构,按重要性分层展示
- 优化颜色系统,减少视觉噪音
- 统一间距和字体层次,提升可读性
- 使用渐变背景和卡片设计增强视觉层次

 交互体验改进:
- 实现渐进披露,核心信息优先展示
- 添加可折叠区域,减少信息密度
- 优化状态指示器,更清晰的文件状态展示
- 改进匹配规则编辑器的位置和样式

 响应式适配:
- 移动端友好的布局设计
- 自适应网格系统
- 触摸友好的交互元素
- 优化小屏幕下的信息展示

 信息架构重构:
- 概览页:核心信息卡片 + 可折叠技术详情
- 素材页:主要信息 + 可展开详细信息
- 轨道页:轨道概览 + 片段详情 + 可展开属性

遵循frontend-developer规范,提升用户体验
2025-07-15 10:33:05 +08:00
imeepos 73c2187757 feat: 添加[随机匹配]选项到TemplateSegment匹配规则
- 在Rust后端SegmentMatchingRule枚举中添加RandomMatch变体
- 更新TypeScript前端类型定义和SegmentMatchingRuleHelper工具函数
- 修改SegmentMatchingRuleEditor组件支持随机匹配选项
- 添加绿色样式标识随机匹配规则
- 添加完整的单元测试覆盖新功能

遵循promptx/tauri-desktop-app-expert开发规范
2025-07-15 10:19:06 +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 be8c032158 fix: 时间显示精度问题 2025-07-15 09:08:37 +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 49c5b1a033 fix: 统一按钮样式 2025-07-14 22:12:39 +08:00
imeepos 2d88274c3a fix: 修复模板导入功能的关键问题
修复问题:
- 修复数据库状态格式不一致导致的列表显示错误
- 修复单个导入完成后统计信息显示为0的问题
- 修复日期时间解析错误导致的panic问题
- 修复所有unwrap()调用导致的潜在崩溃

 技术改进:
- 统一使用Debug格式保存和查询import_status
- 改进日期解析支持多种格式(RFC3339和SQLite格式)
- 优化进度监控逻辑,保留最后有效统计数据
- 完善错误处理,避免锁中毒和解析错误

 功能完善:
- 模板导入完成后正确显示'已完成'状态
- 统计信息准确显示成功/失败数量
- 进度监控稳定运行,无无限轮询问题
2025-07-14 21:50:29 +08:00
imeepos 939efd70d4 feat: 完善模板导入功能
新增功能:
- 添加详细的模板导入日志系统
- 实现全局进度存储机制
- 完善模板状态管理

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

 改进:
- 优化素材上传逻辑,只上传视频/音频/图片
- 上传失败时自动跳过而不是中断导入
- 缺失文件时继续导入而不是失败
- 改进错误处理机制
2025-07-14 21:34:07 +08:00
imeepos b3321114ac docs: 添加 v0.1.9 发布说明 2025-07-14 18:41:56 +08:00
imeepos 3786c4f54f chore: 发布版本 0.1.9
- 完成项目一键AI分类功能开发
- 更新版本号到 0.1.9
- 更新 TODO.md 标记任务完成状态
2025-07-14 18:35:59 +08:00
imeepos a3a75973aa fix: build error 2025-07-14 18:32:58 +08:00
imeepos a204c07dc2 fix: 移除项目设置按钮 2025-07-14 18:30:11 +08:00
imeepos e77f18ed13 docs: 添加项目一键AI分类功能开发文档
- 详细说明功能实现和技术架构
- 包含完整的业务流程和测试结果
- 提供后续优化建议
2025-07-14 18:29:28 +08:00
imeepos eeeef4ead4 feat: 实现项目一键AI分类功能
- 添加ProjectBatchClassificationRequest和ProjectBatchClassificationResponse数据模型
- 在VideoClassificationService中实现create_project_batch_classification_tasks方法
- 添加start_project_batch_classification Tauri命令接口
- 在前端添加startProjectBatchClassification方法和相关类型定义
- 在项目详情页面添加一键AI分类按钮和队列状态监控
- 支持批量处理项目下所有符合条件的视频素材
- 集成现有的AI分类队列系统,确保兼容性
2025-07-14 18:26:03 +08:00
imeepos 5d8e2df8d0 fix: build error 2025-07-14 16:58:31 +08:00
imeepos 708075f17e fix: 智能视频分类 测试完成 2025-07-14 16:51:33 +08:00
imeepos c3c0bb8c08 fix: 修复下拉选择问题 2025-07-14 16:45:28 +08:00
imeepos 719cc3782a fix: 进度条问题 2025-07-14 16:37:23 +08:00
imeepos 293c1e29c7 fix: 修复进度条问题 2025-07-14 16:36:11 +08:00
imeepos 29e77c2b6f 修改队列处理逻辑,添加自动停止机制 2025-07-14 16:33:11 +08:00
imeepos bb240833a4 fix: 修复片段路径更新时的数据库表名错误
问题修复:
- 修复update_segment_file_path方法中错误的表名
- 将'video_segments'改为正确的'material_segments'
- 移除不存在的updated_at字段更新

 问题分析:
- 数据库中只有material_segments表,没有video_segments表
- material_segments表结构只包含created_at,没有updated_at字段
- 这导致AI分类后文件移动成功但片段路径更新失败

 修复效果:
- AI分类完成后能正确更新片段的file_path
- 数据库中的片段记录将指向新的分类目录
- 消除'no such table: video_segments'错误

 数据一致性:
- 确保文件移动和数据库更新的一致性
- 片段路径始终反映文件的真实位置
- 避免数据库记录与实际文件位置不符的问题
2025-07-14 16:21:08 +08:00
imeepos 48ad00cfcd fix: 修复日期格式问题 2025-07-14 16:10:05 +08:00
imeepos 4cb264cc32 fix: 修复分类文件 移动到其他位置后 数据库对应字段未更新的bug 2025-07-14 16:02:57 +08:00
imeepos 7a9ac750ae fix: 修复前端队列控制按钮功能
问题修复:
- 修复暂停/恢复/停止按钮无法正常工作的问题
- 添加详细的调试日志来诊断按钮操作
- 优化按钮的启用/禁用逻辑和视觉反馈

 技术改进:
- 在队列操作后添加延迟确保后端状态更新
- 修复refreshQueueStatus方法的返回值类型
- 改进按钮状态判断逻辑,支持更多队列状态

 用户体验提升:
- 添加状态指示器显示当前队列状态
- 改进按钮的禁用状态样式
- 提供更清晰的按钮提示文本

 状态管理优化:
- 确保队列控制操作后正确刷新状态
- 添加操作中的加载状态指示
- 改进错误处理和日志输出

 任务恢复机制:
- 添加recover_stuck_tasks功能恢复卡住的任务
- 在队列启动时自动恢复处理中状态的任务
- 解决应用意外关闭导致任务永久卡住的问题
2025-07-14 15:52:28 +08:00
imeepos 0c7eeb9905 移除无用日志 2025-07-14 15:27:24 +08:00
imeepos 94bff3f785 fix: 修复前端队列统计数据不准确的问题 2025-07-14 15:21:48 +08:00
imeepos 2732be6df4 fix: 修复前端队列统计数据不准确的问题
问题修复:
- 修复get_pending_tasks查询条件,使用正确的JSON序列化格式
- 修复get_classification_stats中的状态查询条件
- 添加详细的调试日志来诊断状态序列化问题

 技术改进:
- 使用参数化查询避免SQL注入风险
- 正确处理TaskStatus枚举的JSON序列化
- 统一状态查询的格式和逻辑

 数据一致性:
- 前端显示的队列统计现在基于真实的任务状态
- 消除了前后端数据不同步的问题
- 确保任务查询和统计查询使用相同的状态格式

 调试信息:
- 添加状态序列化结果的日志输出
- 便于诊断和验证修复效果
2025-07-14 15:19:40 +08:00
imeepos fbdd1bf1ea fix: 修复MaterialRepository中get_project_by_id方法的占位符实现
问题修复:
- 修复MaterialRepository.get_project_by_id总是返回None的问题
- 实现正确的项目查询逻辑,直接从projects表查询
- 解决AI分类后文件移动失败的根本原因

 技术实现:
- 在MaterialRepository中添加完整的项目查询实现
- 正确处理数据库查询和错误处理
- 支持项目不存在时返回None而不是错误

 问题解决:
- 现在AI分类完成后可以正确找到项目信息
- 文件移动到assets/分类目录功能将正常工作
- 消除了'项目不存在'的错误信息
2025-07-14 15:06:15 +08:00
imeepos 7210c15ffd fix: 修复AI分类后文件移动失败的问题
问题修复:
- 添加详细的调试日志来诊断文件移动失败的原因
- 修复项目ID不匹配导致的文件移动失败问题
- 增强项目ID验证和错误处理逻辑

 技术改进:
- 在创建分类任务时验证项目ID匹配性
- 在移动文件时添加详细的调试信息
- 支持项目ID不匹配时的自动修复逻辑

 问题诊断:
- 发现素材的project_id与请求的project_id不匹配
- 添加了项目存在性验证
- 提供了更清晰的错误信息和日志输出
2025-07-14 15:00:41 +08:00
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