Commit Graph

86 Commits

Author SHA1 Message Date
imeepos 785502aa20 improve: 优化AI分组策略提示词
- 明确要求AI先确定分组策略,再为每组生成3个方案
- 添加分组示例,指导AI更好地理解分组逻辑
- 强调分组均匀分布和风格差异化
- 提供具体的分组命名建议

现在的逻辑:
1. AI分析用户查询确定分组维度
2. 创建3-4个不同分组类别
3. 每个分组生成恰好3个相关方案
4. 总共12个方案,分布均匀
2025-07-28 11:44:25 +08:00
imeepos d33f7fbc7f feat: 实现AI穿搭方案智能分组功能
- 修改提示词让AI直接返回分组结构
- 添加GroupingStrategy和OutfitQualityScore数据结构
- 支持按风格、场合、季节等维度智能分组
- 为每个方案添加质量评分系统
- 前端支持分组展示和获取更多同类方案
- 保持向后兼容性

主要变更:
- 后端: 更新提示词和解析逻辑支持分组JSON结构
- 前端: OutfitRecommendationList支持分组显示
- 类型: 新增分组相关TypeScript接口
- 功能: 每个分组支持'获取更多'按钮扩展方案
2025-07-28 11:26:13 +08:00
imeepos 30ecaf56ec feat: 实现模板片段权重配置功能
新功能:
- 模板片段级别的AI分类权重配置
- 权重继承机制(全局权重作为默认值)
- 批量权重配置操作
- 直观的权重管理界面

 后端实现:
- 新增 template_segment_weights 数据表
- 实现 TemplateSegmentWeightRepository 仓储层
- 实现 TemplateSegmentWeightService 业务逻辑层
- 新增 Tauri 命令接口

 前端实现:
- TemplateSegmentWeightEditor 权重配置编辑器
- SegmentWeightIndicator 权重状态指示器
- BatchWeightConfigModal 批量配置模态框
- 集成到模板详情页面

 测试:
- 单元测试覆盖核心功能
- 集成测试验证端到端流程
- E2E测试确保用户体验

 技术特性:
- 权重范围:0-100,数值越大优先级越高
- 支持单个和批量更新操作
- 事务处理确保数据一致性
- 类型安全的API设计

 文档:
- 完整的功能文档和使用指南
- 技术架构说明
- 最佳实践建议

这个功能将显著提升模板匹配的灵活性和准确性!
2025-07-25 17:04:45 +08:00
imeepos 82d9ccfe21 feat: 实现AI穿搭方案推荐素材库检索功能
新增功能:
- 为每个穿搭方案添加素材库检索功能
- 智能生成检索条件基于穿搭方案内容
- 调用Google VET API进行素材检索
- 实现分页展示和导航功能

 架构改进:
- 新增MaterialSearchService前端服务
- 新增material_search_commands后端命令
- 新增material_search数据模型
- 遵循Tauri开发规范的组件设计

 UI/UX优化:
- 美观的素材卡片展示
- 流畅的分页导航体验
- 响应式设计和动画效果
- 遵循promptx/frontend-developer标准

 组件结构:
- MaterialSearchPanel: 素材检索面板
- MaterialSearchResults: 搜索结果列表
- MaterialCard: 素材卡片组件
- MaterialSearchPagination: 分页组件

 技术实现:
- TypeScript类型安全
- React Hooks状态管理
- TailwindCSS样式系统
- 错误处理和加载状态
- 无障碍访问支持
2025-07-25 15:05:22 +08:00
imeepos c6e02e0b36 feat: implement enhanced search filter system based on Python reference
- Enhanced SearchFilterBuilder with complex nested filter logic
- Added support for category-specific filtering with proper AND/OR logic
- Implemented enhanced query building with keyword integration
- Added comprehensive configuration validation and debugging
- Extended SearchConfig with debug mode, custom filters, and query enhancement
- Updated frontend components with debug options and advanced settings
- Added comprehensive unit tests for all new functionality
- Fixed compilation issues and ensured all tests pass

Follows promptx/tauri-desktop-app-expert development specifications
2025-07-25 11:26:06 +08:00
imeepos c4bb073507 feat: 实现AI穿搭方案推荐功能
- 新增穿搭方案推荐数据模型和类型定义
- 实现基于TikTok视觉趋势的Gemini AI穿搭方案生成
- 创建穿搭方案卡片和列表展示组件
- 集成Sparkles图标点击触发穿搭方案生成
- 实现穿搭方案到场景检索的无缝集成
- 添加完整的前后端API和服务层
- 遵循promptx开发规范和设计系统标准

功能特点:
- 基于用户输入关键词生成个性化穿搭推荐
- 包含色彩搭配、风格标签、场景建议等详细信息
- 提供TikTok优化建议和拍摄技巧
- 支持一键场景检索功能
- 美观的卡片式展示界面
- 完整的加载状态和错误处理
2025-07-25 10:38:11 +08:00
imeepos 0cfacd0662 feat: 实现模板匹配按顺序匹配功能
新功能:
- 添加AI分类权重字段,支持按权重顺序匹配
- 新增PriorityOrder匹配规则类型
- 实现按权重顺序的素材匹配算法
- 添加权重编辑器UI组件

数据模型扩展:
- AiClassification模型添加weight字段
- SegmentMatchingRule枚举添加PriorityOrder类型
- 扩展相关的请求和响应类型定义

数据库迁移:
- 创建019迁移脚本为ai_classifications表添加weight字段
- 为现有数据设置默认权重值
- 添加权重索引提高查询性能

后端服务实现:
- MaterialMatchingService支持按顺序匹配逻辑
- AiClassificationService添加按权重获取分类方法
- 更新所有相关的构造函数和命令处理

前端UI优化:
- SegmentMatchingRuleEditor支持按顺序匹配配置
- 新增WeightEditor组件用于权重设置
- AI分类设置页面集成权重编辑功能
- 更新TypeScript类型定义

测试验证:
- 添加完整的单元测试套件
- 6个测试用例全部通过
- 验证权重排序和匹配规则逻辑

遵循promptx/tauri-desktop-app-expert开发规范
支持用户自定义分类权重,实现智能按顺序匹配
2025-07-23 20:28:36 +08:00
imeepos de620447b4 feat: 实现批量素材导入功能
新功能:
- 支持同时处理多个素材文件的批量导入
- 添加可配置的最大并发导入数量(1-8个)
- 实现基于系统资源的动态并发调整
- 添加内存监控和熔断器保护机制

 技术改进:
- 重构material_commands.rs支持并发处理
- 优化MaterialRepository使用连接池
- 添加指数退避重试机制
- 实现智能资源管理和性能优化

 前端优化:
- 更新MaterialImportDialog添加并发配置
- 保持原有进度显示和状态管理
- 更新TypeScript类型定义

 测试:
- 添加完整的批量导入测试套件
- 7个测试用例全部通过
- 验证并发处理和资源管理功能

 依赖更新:
- 添加num_cpus和winapi依赖
- 支持Windows系统内存检测

遵循promptx/tauri-desktop-app-expert开发规范
理论性能提升2-4倍,支持高并发稳定处理
2025-07-23 19:44:07 +08:00
imeepos 4269b72c04 feat: 实现批量缩略图生成器功能
- 添加批量缩略图生成的数据模型和类型定义
- 实现ThumbnailGeneratorService核心服务
- 实现BatchThumbnailProcessor批量处理器
- 添加Tauri命令接口支持前端调用
- 创建完整的前端UI组件和页面
- 支持多种时间戳配置和尺寸预设
- 支持时间轴缩略图生成
- 支持并发处理和进度监控
- 集成到便捷工具页面

遵循promptx/tauri-desktop-app-expert开发规范
2025-07-23 13:44:19 +08:00
imeepos 29a4c32096 feat: 完善水印处理工具功能
- 修复批量处理进度条不更新问题
  - 实现任务状态管理器(task_manager.rs)
  - 添加实时进度更新和任务状态跟踪
  - 完善前端进度轮询逻辑

- 丰富水印检测结果展示
  - 添加详细检测结果信息(位置、置信度、类型等)
  - 显示处理统计和性能信息
  - 优化结果展示UI和用户体验

- 修复水印模板上传和删除功能
  - 实现内存存储系统管理模板
  - 修复参数匹配问题
  - 添加模板缩略图展示功能

- 优化文件上传体验
  - 使用Tauri Dialog API替代HTML5文件输入
  - 实现原生文件选择器
  - 添加WatermarkTemplateThumbnail组件

- 完善水印工具集成
  - 创建WatermarkTool页面
  - 添加到便捷工具列表
  - 完善路由配置和UI展示
2025-07-23 12:51:49 +08:00
imeepos 730b0f32b5 fix: 修复历史消息总是0的问题
- 添加ensure_session_exists方法确保会话在保存消息前存在
- 修复会话ID不匹配导致的历史消息丢失问题
- 在保存消息前自动创建会话,使用前端传递的session_id
- 添加详细的调试日志跟踪会话创建和消息保存过程
- 使用INSERT OR REPLACE确保会话记录的正确性

问题原因:
- 前端传递的session_id与数据库中的会话ID不匹配
- 消息保存时会话不存在,导致外键约束失败
- 历史查询时找不到对应的会话,返回空结果

现在多轮对话应该能正确保存和加载历史消息了
2025-07-22 11:32:53 +08:00
imeepos 4293fbb4c7 fix: 重构ConversationRepository使用只读连接避免锁竞争
- 修改ConversationRepository使用Database而不是直接的连接
- 为读操作使用专用只读连接,避免与写操作的锁竞争
- 实现非阻塞连接获取,避免查询卡住问题
- 添加连接获取失败时的降级处理
- 优化数据库访问性能,提高并发能力

核心改进:
 只读连接 - 查询操作使用专用只读连接
 非阻塞获取 - 使用try_get_read_connection避免阻塞
 降级处理 - 连接不可用时返回默认值而不是阻塞
 性能优化 - 减少锁竞争,提高并发性能
 错误恢复 - 连接问题时的优雅降级

这应该解决多轮RAG查询卡在get_conversation_history的问题
2025-07-22 11:26:48 +08:00
imeepos dca2c15bb9 fix: 修复多轮RAG查询卡住问题 2025-07-22 11:16:30 +08:00
imeepos 8b92cc130c feat: 完善多轮对话功能实现
- 修复编译错误和类型问题
- 添加完整的单元测试套件
- 创建多轮对话测试组件和页面
- 添加详细的功能文档和使用说明
- 优化错误处理和类型安全
- 遵循promptx开发规范的完整实现

功能特性:
 多轮对话支持 - 历史消息传递和上下文保持
 会话管理 - session_id管理和生命周期控制
 数据持久化 - 完整的会话历史存储
 类型安全 - 完整的TypeScript类型定义
 测试覆盖 - 单元测试和集成测试
 文档完善 - 详细的实现文档和使用指南
2025-07-22 10:43:36 +08:00
imeepos 5296039785 feat: 实现多轮对话功能
- 添加会话管理数据模型和仓库层
- 扩展Gemini服务支持多轮对话的contents数组构建
- 实现会话历史存储和检索功能
- 添加多轮对话业务服务层
- 创建前端TypeScript类型定义和服务层
- 实现Tauri命令处理多轮对话请求
- 添加会话管理功能(创建、删除、更新标题等)
- 创建多轮对话测试组件和页面
- 遵循promptx/tauri-desktop-app-expert开发规范
- 支持session_id管理和历史消息传递
- 实现完整的四层架构设计
2025-07-22 10:39:26 +08:00
imeepos c3c72ce8bd feat: 实现一键匹配实时进度通讯
修复问题:
- 一键匹配进度条没有逐步递增,只在开始和结束时更新

实现内容:
1. 后端进度事件发送:
   - 在事件总线中添加BatchMatchingProgress事件类型
   - 在批量匹配服务中集成Tauri事件发送
   - 在每个模板匹配开始时发送实时进度事件

2. 前端进度事件监听:
   - 修改BatchMatchingService支持事件监听
   - 添加batch_matching_progress事件监听器
   - 实时更新进度条状态

3. 事件通讯机制:
   - 使用Tauri的emit系统发送事件到前端
   - 前端通过listen监听实时进度更新
   - 确保进度条能够逐步递增显示

技术细节:
- 后端:使用app_handle.emit()发送进度事件
- 前端:使用listen()监听batch_matching_progress事件
- 进度计算:基于当前轮数、绑定索引和总绑定数

现在一键匹配过程中进度条会实时更新,用户可以看到匹配的实际进展。
2025-07-21 20:07:27 +08:00
imeepos 856d0b1055 fix: 修复匹配记录批量删除功能
- 修复 DeleteConfirmDialog 组件中确认按钮缺少 onClick 事件处理
- 修复 props 解构中缺少 onConfirm 参数的问题
- 修复文件名序号001匹配限制逻辑,确保单个模板匹配过程中只能使用一个序号001的视频

问题原因:
1. DeleteConfirmDialog 确认按钮没有绑定 onConfirm 回调函数
2. 组件 props 解构时遗漏了 onConfirm 参数
3. 序号001限制逻辑在模板匹配过程中的检查时机不正确
2025-07-21 19:18:18 +08:00
imeepos 5091493a8c feat: 添加文件名序号匹配规则功能
- 新增 FilenameUtils 工具类,支持从文件名中提取3位数字序号
- 扩展 SegmentMatchingRule 枚举,添加 FilenameSequence 匹配规则
- 在 MaterialMatchingService 中实现基于文件名序号的匹配逻辑
- 确保每个模板只能使用一个序号为001的视频文件
- 添加全面的单元测试和集成测试
- 支持多种文件名格式:name_001.ext, 001_name.ext, name001.ext 等

遵循 promptx/tauri-desktop-app-expert 开发规范
2025-07-21 19:01:01 +08:00
imeepos 6bd12a4a63 feat: 实现项目素材批量删除功能
- 后端实现:
  * 在MaterialRepository中添加batch_delete方法,支持事务处理
  * 在MaterialService中添加batch_delete_materials业务逻辑
  * 添加BatchDeleteResult和BatchDeleteFailedItem数据结构
  * 新增batch_delete_materials Tauri命令接口
  * 实现参数验证和错误处理机制

- 前端实现:
  * 创建useBatchSelection Hook管理批量选择状态
  * 实现BatchDeleteConfirmDialog批量删除确认对话框
  * 在MaterialCard组件中添加批量选择支持
  * 在ProjectDetails页面集成批量选择和删除功能
  * 添加批量操作UI控件(全选/取消全选/批量删除按钮)

- 功能特性:
  * 支持最多50个素材的批量选择
  * 单次最多删除100个素材的限制
  * 详细的删除结果反馈(成功/失败统计)
  * 失败项目的具体错误信息显示
  * 批量选择模式的视觉反馈
  * 完善的用户确认和通知机制

- 测试:
  * 添加批量删除功能的单元测试
  * 测试数据结构创建和验证逻辑

遵循Tauri开发规范和前端UI/UX设计标准,提供安全可靠的批量删除体验。
2025-07-21 14:28:06 +08:00
imeepos 6c795a5ddf fix: 修复Rust编译警告,优化代码质量
主要修复:
- 修复snake_case命名规范问题:projectId -> project_id, templateId -> template_id
- 移除未使用的导入:std::sync::Arc
- 修复未使用变量参数:添加下划线前缀标记
- 修复未使用的错误变量:在map_err闭包中使用_e前缀

修复的警告类型:
- unused_imports: 移除未使用的导入
- unused_variables: 标记未使用的参数
- non_snake_case: 修复命名规范
- 将警告数量从29个减少到10个

剩余的10个警告主要是为未来功能预留的死代码,属于正常情况。
2025-07-21 13:57:09 +08:00
imeepos da4aeaccb9 完成模特动态页面开发,移除标题和描述字段 2025-07-18 16:49:08 +08:00
imeepos 82b62a4b0f fix: 修复AI分类统计数值溢出问题
问题:成功分类数显示18446744073709552(接近u64最大值)
原因:错误地用分类记录总数减去失败任务数,导致负数转u64溢出

修复内容:
- 扩展ClassificationStats结构体,添加分类记录状态统计
- 改进数据库查询,正确统计各状态的分类记录数
- 修正ai_analysis_log_service中的统计计算逻辑
- 添加数值安全检查,防止负数转无符号整数
- 更新前端类型定义保持一致性

现在统计数据来源一致且逻辑正确:
- 任务统计来自video_classification_tasks表
- 分类记录统计来自video_classification_records表
2025-07-18 14:27:25 +08:00
imeepos c0ab039de9 debug: 添加时长转换和匹配的详细日志
## 添加的日志内容

### 1. 时长转换日志
在AI分类匹配和随机匹配方法中添加:
- 轨道片段ID和名称
- 原始时长(微秒)
- 转换后时长(秒)
- 目标分类信息

### 2. 时长匹配详细日志
在find_best_duration_match方法中添加:
- 目标时长和可选片段数量
- 每个片段的详细信息:
  * 片段ID和素材名称
  * 素材片段时长(秒)
  * 是否满足时长要求
  * 匹配评分
  * 分类信息
- 最终选择的片段信息

### 3. 时长要求检查日志
在MaterialSegment的方法中添加:
- meets_duration_requirement: 显示素材时长vs要求时长的比较
- duration_match_score: 显示详细的评分计算过程

## 目的
确认单位转换是否正确:
- 模板轨道片段时长:微秒
- 素材片段时长:秒
- 转换公式:微秒 / 1,000,000 = 秒

这些日志将帮助验证时长匹配逻辑的正确性。
2025-07-18 13:40:46 +08:00
imeepos 66ceaf3274 fix: 修复批量删除需要点击两次的问题
问题分析:
- 第一次点击批量删除时,onConfirm回调中使用的batchDeleteConfirm.resultIds可能因为React状态更新的异步性而被清空
- handleBatchDelete函数内部会重置batchDeleteConfirm状态,导致竞态条件

解决方案:
- 将对话框关闭逻辑从handleBatchDelete中移出
- 创建handleConfirmBatchDelete函数,在调用删除前先复制resultIds数组并立即关闭对话框
- 修复数据库查询中缺少is_exported和last_exported_at字段的问题
- 添加更好的loading状态管理和用户体验优化

修复内容:
- 修复TemplateMatchingResultRepository中SELECT语句缺少新字段的问题
- 重构批量删除的状态管理逻辑,避免竞态条件
- 添加调试日志帮助问题诊断
- 改进loading状态的视觉反馈
2025-07-18 13:03:17 +08:00
imeepos f6041c6eea feat: 完成模板匹配功能优化
- 修复重复资源使用问题:
  * 修改MaterialMatchingService中的匹配算法,确保每个素材片段在一次匹配中只能被使用一次
  * 添加get_classified_segments_with_exclusions方法支持额外排除片段
  * 重构match_materials_with_used_segments方法正确处理全局使用状态
  * 更新批量匹配逻辑使用新的匹配方法

- 添加批量删除匹配记录功能:
  * 在TemplateMatchingResultService中添加批量删除方法
  * 在MaterialUsageRepository中添加批量删除使用记录的方法
  * 删除匹配记录时自动重置相关资源的使用状态
  * 添加相应的Tauri命令和API接口

- 添加匹配记录导出状态标识:
  * 在TemplateMatchingResult模型中添加is_exported和last_exported_at字段
  * 更新数据库schema和仓库层支持新字段
  * 在导出功能中自动更新导出状态
  * 添加重置导出状态的功能

- 优化一键匹配命名逻辑:
  * 改进命名规则使用模板名称+序号格式
  * 为每个模板维护独立的序号计数器
  * 支持自定义前缀的命名方式

- 更新前端组件支持新功能:
  * 在TemplateMatchingResultManager中添加批量选择和批量删除功能
  * 在TemplateMatchingResultCard中添加选择框和导出状态显示
  * 添加全选/取消全选功能
  * 优化UI显示导出状态标识

- 数据库迁移:
  * 添加is_exported和last_exported_at字段到template_matching_results表
  * 保持向后兼容性
2025-07-18 12:50:04 +08:00
imeepos 3dbdca4ee6 feat: 实现AI生成视频前置跳过功能 v0.1.35
- 添加skip_start_ms参数到CreateMaterialRequest和MaterialProcessingConfig
- 在MaterialImportDialog中添加前置跳过毫秒数输入框
- 实现FFmpegService::create_trimmed_video方法创建跳过开头的临时视频
- 在场景检测前处理视频前置跳过,避免AI生成视频相同首帧问题
- 支持同步和异步处理模式,自动调整场景时间戳补偿跳过时间
- 自动清理临时文件,确保资源管理正确

解决问题:
- AI生成视频第一帧相同导致切片后视频首帧重复
- 通过跳过前置毫秒数避免相同首帧进入最终切片结果
2025-07-18 11:11:10 +08:00
imeepos 025237f753 feat: 实现服装搭配/高级筛选功能 - 自定义标签系统
新功能:
- 完整的自定义标签管理系统
- 支持标签分类和标签的CRUD操作
- 标签与实体(素材、模特、项目等)的关联管理
- 批量标签操作支持
- 标签使用统计功能

 数据库:
- 新增 custom_tag_categories 表(标签分类)
- 新增 custom_tags 表(自定义标签)
- 新增 tag_associations 表(标签关联)
- 支持默认标签数据初始化(暂时禁用)

 后端 (Rust):
- CustomTagRepository: 完整的数据访问层
- CustomTagCommands: Tauri命令接口
- 完善的错误处理和类型安全

 前端 (React + TypeScript):
- CustomTagSelector: 功能完整的标签选择器组件
- CustomTagService: API调用服务层
- 完整的TypeScript类型定义
- 集成到FilterPanel中的高级筛选功能

 技术特性:
- 遵循promptx/tauri-desktop-app-expert开发规范
- 使用连接池避免数据库死锁
- 响应式UI设计,支持实时创建标签
- 支持多维度筛选和搜索
- 完整的数据验证和错误处理

 注意事项:
- 默认标签初始化暂时禁用以避免启动阻塞
- 所有功能已编译通过并可正常使用
2025-07-18 10:40:26 +08:00
imeepos 24d70f4e32 fix: 移除无用代码 2025-07-17 23:29:53 +08:00
imeepos 504b1a6577 feat: 实现服装搭配智能搜索系统
新功能:
- 完整的服装搭配智能搜索系统
- AI图像分析和服装识别
- 智能搜索和过滤功能
- LLM搭配顾问聊天功能
- HSV颜色匹配算法
- 响应式UI界面

 技术实现:
- 统一的GeminiService架构
- 完整的数据模型和类型定义
- Tauri命令接口层
- React前端组件库
- Zustand状态管理
- 数据库扩展支持

 UI/UX:
- 现代化的搭配搜索界面
- 直观的颜色选择器
- 多级筛选面板
- 图像上传和分析
- 搜索结果展示
- AI聊天界面

 测试:
- 核心功能单元测试
- 颜色匹配算法测试
- API集成测试

 文档:
- 完整的系统设计文档
- API接口文档
- 开发指南
2025-07-17 22:35:36 +08:00
imeepos 0883674877 fix: 移除无用代码 2025-07-17 21:01:37 +08:00
imeepos 121f2ebc5d fix: 移除错误代码 2025-07-17 20:59:45 +08:00
imeepos 045de8850a feat: 完成CustomMultiSelect多选组件开发并集成到顶部导航栏
新功能:
- 开发CustomMultiSelect多选下拉组件
  - 支持多选功能,以标签形式显示选中项
  - 支持搜索过滤功能 (可选)
  - 支持全选/取消全选批量操作
  - 支持单个标签移除和清空所有选择
  - 智能显示:超过限制数量时显示'+N'格式
  - 完整的键盘和鼠标交互支持

 UI/UX优化:
- 保持与单选CustomSelect一致的设计风格
- 现代化的标签显示和交互效果
- 响应式设计,适配不同屏幕尺寸
- 悬停效果和状态反馈
- 点击外部自动关闭下拉框

 技术实现:
- 重构OutfitMatchingRecommendation使用OutfitSearchPanel
- 统一筛选逻辑,避免重复代码
- 类型安全的多选数据处理
- 完善的错误处理和边界情况处理

 导航栏集成:
- 将服装搭配功能添加到顶部导航栏
- 使用SparklesIcon图标,突出AI智能特性
- 路由配置:/outfit-match
- 描述:AI智能服装搭配推荐

 组件特性对比:
- CustomSelect: 单选,简单文本显示
- CustomMultiSelect: 多选,标签+搜索+批量操作

 应用场景:
- 服装类别筛选 (多选)
- 风格标签选择 (多选)
- 场合和季节选择 (多选)
- 颜色和材质筛选 (多选)

 使用方法:
`	sx
// 单选
<CustomSelect value={single} onChange={setSingle} options={options} />

// 多选
<CustomMultiSelect
  value={multi}
  onChange={setMulti}
  options={options}
  searchable={true}
  maxDisplayItems={3}
/>
`

 调试功能:
- 项目服装单品统计调试
- 搭配推荐生成过程跟踪
- 详细的日志输出和错误信息

现在用户可以通过顶部导航栏直接访问服装搭配功能,享受完整的AI智能搭配体验!
2025-07-17 20:08:41 +08:00
imeepos 7b1bb2fb0e feat: 实现服装搭配功能的图像上传和AI分析
新功能:
- 实现完整的图像上传组件 (ImageUploader)
  - 支持拖拽上传、文件选择、预览和验证
  - 文件大小和格式限制
  - 实时预览和文件管理
- 实现AI图像分析结果展示 (OutfitAnalysisResult)
  - 实时状态更新和进度跟踪
  - 分析结果详情查看
  - 自动刷新机制
- 添加文件保存功能 (save_outfit_image 命令)
- 更新OutfitMatch页面为现代化标签页设计

 技术改进:
- 修复服装搭配相关模型的编译错误
- 添加缺失的trait实现 (Eq, Hash)
- 修复生命周期参数问题
- 完善错误处理和用户反馈

 UI/UX优化:
- 现代化的标签页设计
- 响应式布局和优雅动画
- 统一的设计语言和交互体验
- 完善的加载状态和错误处理
2025-07-17 19:05:40 +08:00
imeepos c190fdae1b feat: implement export record tracking system
- Add export_count field to template_matching_results table
- Create ExportRecord data model with comprehensive tracking
- Implement ExportRecordRepository for CRUD operations
- Create ExportRecordService for business logic
- Add export record tracking to jianying export functions
- Create ExportRecordManager component with filtering and pagination
- Add ExportRecordsPage with full management interface
- Integrate export records into navigation and routing
- Add Tauri commands for export record management
- Include statistics, validation, and cleanup functionality

Follows Tauri development specifications and frontend standards.
2025-07-17 13:03:51 +08:00
imeepos d3ab2aa284 fix: resolve list_matching_results deserialization error
- Add custom deserializer for MatchingResultStatus to handle empty strings
- Add serde(default) attributes to TemplateMatchingResultQueryOptions fields
- Update frontend to send undefined instead of empty string for status filter
- Fix 'unknown variant' and 'missing field' errors in template matching results

Resolves issue where selecting 'All Status' filter caused command failures.
2025-07-16 21:28:45 +08:00
imeepos d5ef9851cd feat: 实现模特详情页视频生成功能
- 新增模特详情页组件,支持照片上传和视频生成
- 实现视频生成数据模型和仓库层
- 集成Dify API进行视频生成
- 添加云存储上传功能,自动转换S3 URL为CDN地址
- 实现统一的删除确认弹框,替换window.confirm
- 支持照片和视频生成任务的删除功能
- 优化UI/UX设计,符合前端开发规范
- 添加完整的错误处理和状态管理

核心功能:
 模特照片上传到云端
 多选照片进行视频生成
 实时任务状态跟踪
 视频生成历史记录
 统一删除确认对话框
 响应式设计和优雅动画
2025-07-16 19:39:44 +08:00
imeepos 5d39ddea80 fix: 修复保存 匹配记录的bug 2025-07-16 16:09:55 +08:00
imeepos a325b3ccc8 feat: 实现素材使用状态管理系统
1. 数据库层面改进:
   - 新增material_usage_records表记录素材使用历史
   - 为material_segments表添加usage_count、is_used、last_used_at字段
   - 实现数据库迁移逻辑

2. 数据模型和仓库:
   - 创建MaterialUsageRecord、MaterialUsageStats等数据模型
   - 实现MaterialUsageRepository处理使用记录的CRUD操作
   - 支持批量创建使用记录和统计查询

3. 业务逻辑改进:
   - 修改MaterialMatchingService,在获取素材片段时排除已使用的片段
   - 实现素材使用状态的自动更新机制
   - 支持重置素材使用状态功能

4. 前端集成:
   - 修改handleApplyMatchingResult函数,应用匹配结果时自动创建使用记录
   - 新增多个后端命令支持素材使用状态管理
   - 实现从匹配结果自动创建使用记录的便捷方法

5. 核心功能:
   - 一个素材片段只能使用一次的限制机制
   - 模板匹配时自动排除已使用的素材片段
   - 完整的使用历史记录和统计功能
   - 支持项目级别的使用状态重置

这个实现确保了素材的合理使用,避免重复使用同一素材片段,
同时提供了完整的使用追踪和管理功能。
2025-07-16 14:38:08 +08:00
imeepos 730ac22b84 fix: 修复get_matching_result_detail接口数据类型错误
修复'Invalid column type Real at index: 9, name: match_score'错误

问题根本原因:
1. 数据库schema中match_score字段定义为REAL类型
2. 数据插入时错误地将REAL/INTEGER字段转换为字符串
3. 数据读取时错误地尝试将REAL/INTEGER字段作为String类型获取

修复内容:
1. 修正matching_segment_results表相关字段的数据插入逻辑
   - match_score: 直接使用f64类型而非转换为字符串
   - segment_duration, start_time, end_time: 直接使用u64类型

2. 修正matching_failed_segment_results表相关字段的数据插入逻辑
   - segment_duration, start_time, end_time: 直接使用u64类型

3. 修正row_to_segment_result和row_to_failed_segment_result函数
   - 直接使用原始数据类型而非字符串解析

这确保了数据库操作的类型一致性,解决了get_matching_result_detail接口的错误。
2025-07-16 14:11:14 +08:00
imeepos 3e6c05c4ac fix: 修复模板匹配结果相关的数据类型错误
1. 修复list_matching_results接口'Invalid column type Integer at index: 18, name: is_active'错误
   - 修正template_matching_result_repository.rs中row_to_matching_result函数的is_active字段处理
   - 使用rusqlite::types::Value枚举正确处理多种数据类型

2. 修复数据插入和读取的类型不一致问题
   - 修正数据插入时将INTEGER字段转换为字符串的错误
   - 统一数据类型:数字字段直接使用原始类型而非字符串

3. 实现应用匹配结果功能
   - 修复ProjectDetails.tsx中handleApplyMatchingResult函数
   - 调用save_matching_result API保存匹配结果到数据库
   - 添加成功/失败通知提示

修复的具体问题:
- template_matching_results表的is_active字段类型处理
- 数字字段(total_segments, matched_segments等)的类型转换
- quality_score字段的NULL值处理
- 前端应用匹配结果后保存到数据库的逻辑
2025-07-16 14:05:01 +08:00
imeepos a4cacf42da hotfix: 修复get_all_projects接口description字段NULL值处理问题
- 修复project_repository.rs中row_to_project函数对description字段的错误处理
- 将description字段从String类型改为Option<String>类型正确处理NULL值
- 修复material_repository.rs中类似的问题
- 解决'Invalid column type Null at index: 3, name: description'错误

问题根本原因:
数据库schema允许description为NULL,但代码尝试获取非空String类型,
当description为NULL时导致类型转换失败。

修复方案:
使用Option<String>类型和filter方法正确处理NULL和空字符串情况。
2025-07-16 13:58:04 +08:00
imeepos 1d6de409ed feat: 实现模板匹配结果保存和管理功能
- 新增模板匹配结果数据模型和数据库表结构
- 实现匹配结果Repository层,支持CRUD操作和查询
- 实现匹配结果Service层,提供业务逻辑和统计功能
- 新增Tauri命令接口,支持前端调用
- 实现前端TypeScript类型定义
- 更新MaterialMatchingService,支持自动保存匹配结果
- 新增前端管理界面组件:
  - TemplateMatchingResultManager: 主管理界面
  - TemplateMatchingResultCard: 结果卡片组件
  - TemplateMatchingResultDetailModal: 详情模态框
  - TemplateMatchingResultStatsPanel: 统计面板
- 编写完整的单元测试
- 新增API文档

功能特性:
- 保存匹配结果到数据库,包含成功和失败片段详情
- 支持匹配结果的查询、过滤、排序和分页
- 提供匹配统计信息和质量评分
- 支持软删除和批量操作
- 完整的前端管理界面,支持查看、编辑、删除操作
2025-07-16 13:34:32 +08:00
imeepos c7f9c9f4bb feat: 为MaterialCard添加缩略图功能并优化UI展示
- 为Material数据模型添加thumbnail_path字段
- 实现get_material_thumbnail_base64 API命令支持Material缩略图生成
- 创建MaterialThumbnail组件,支持懒加载和缓存机制
- 重新设计MaterialCard布局,使用缩略图替换文件类型图标
- 精简MaterialCard信息展示,将详细信息移到可折叠区域
- 优化按钮布局,使界面更加紧凑
- 简化切分片段显示方式,提升用户体验
- 修复数据库DateTime解析问题,支持SQLite和RFC3339两种格式
- 添加数据库迁移支持thumbnail_path字段
- 遵循promptx/tauri-desktop-app-expert开发规范
2025-07-16 00:25:08 +08:00
imeepos 4d61fb69f3 fix: 修复缩略图生成功能
解决编译问题:
- 修复async函数中跨await点持有MutexGuard的Send trait问题
- 添加get_segment_by_id_sync同步方法避免锁生命周期冲突
- 修复Path类型推断问题

 优化FFmpeg缩略图生成:
- 添加-pix_fmt yuvj420p参数解决色彩空间问题
- 添加-q:v 2参数提升图片质量
- 添加-f image2参数明确指定输出格式
- 解决MJPEG编码器参数错误问题

 功能特点:
- 使用视频首帧生成缩略图
- 缩略图路径保存到数据库
- 智能缓存机制避免重复生成
- 优雅的错误处理和降级

现在缩略图生成功能可以正常工作,用户可以在MaterialSegmentView中看到实际的视频预览图。
2025-07-15 22:20:46 +08:00
imeepos bc5d9d1054 fix: 修复素材查询 2025-07-15 19:00:58 +08:00
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 54630ea2ff fix: 修复数据库链接锁问题 2025-07-15 17:11:44 +08:00