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
imeepos
590e254fe1
feat: 添加项目详情/素材管理的MaterialSegment聚合视图功能
...
- 新增MaterialSegment聚合视图,支持按AI分类和模特聚合展示
- 实现后端MaterialSegmentViewService和相关API命令
- 创建前端React组件:MaterialSegmentView、MaterialSegmentGroup、MaterialSegmentCard等
- 添加MaterialSegment详细信息模态框和批量操作对话框
- 实现搜索、筛选、排序、分页功能
- 集成虚拟滚动和性能优化
- 在ProjectDetails页面添加片段管理选项卡
- 遵循promptx开发规范和UI/UX设计标准
2025-07-15 16:49:08 +08:00
imeepos
bab1dfc5fd
feat: 实现素材匹配功能 v0.1.19
...
- 新增素材匹配服务 (MaterialMatchingService)
- 支持AI分类匹配、随机匹配等规则
- 实现模特限制逻辑(每个模特素材只能使用一次)
- 时长匹配优化(相差越小越好)
- 详细的匹配统计和失败原因分析
- 新增Tauri API命令
- execute_material_matching: 执行素材匹配
- get_project_material_stats_for_matching: 获取项目素材统计
- validate_template_binding_for_matching: 验证模板绑定
- 新增前端组件和服务
- MaterialMatchingResultDialog: 匹配结果对话框
- MaterialMatchingService: 前端服务层
- 完整的TypeScript类型定义
- UI集成
- 在模板绑定列表添加匹配素材按钮
- 集成到项目详情页面
- 支持完整的匹配流程和结果展示
- 核心匹配规则
- 只使用已AI分类的MaterialSegment
- 每个素材只能使用一次
- 模特限制:优先同一模特,失败后尝试其他模特
- 视频时长必须大于模板需求,相差越小匹配度越高
- 测试覆盖
- 后端服务单元测试
- 覆盖正常匹配、失败场景、边界情况
2025-07-15 14:56:10 +08:00
imeepos
7c40da1b83
fix: 修复素材绑定页面显示暂无素材的问题
...
- 添加get_all_materials后端命令获取所有项目的素材
- 在MaterialRepository中实现get_all方法
- 在MaterialService中添加get_all_materials方法
- 修改MaterialModelBindingService的getMaterialsByFilter方法,在没有指定项目时获取所有素材而不是返回空数组
- 确保素材绑定页面能正确显示所有素材数据,与统计信息保持一致
- 支持在全局素材列表上应用绑定状态和搜索过滤
2025-07-15 14:18:48 +08:00
imeepos
de446b6410
fix: 修复项目详情页面模板绑定和素材绑定页面的搜索功能
...
- 修复项目详情页面模板绑定搜索功能:使用过滤后的绑定详情而不是原始数据
- 修复素材绑定页面搜索功能:添加useEffect监听搜索条件变化并重新加载数据
- 修复素材绑定页面统计功能:实现全局模特绑定统计API和前端调用
- 优化MaterialModelBindingService的getMaterialsByFilter方法,正确处理多重过滤条件
- 添加后端get_global_model_binding_stats命令和相关仓库方法
- 确保搜索和统计功能在所有相关页面正常工作
2025-07-15 14:10:29 +08:00
imeepos
7e9190dd02
fix: 修复项目模板绑定priority列类型错误
...
- 修复project_template_binding_repository中priority列的类型不一致问题
- 将priority和is_active字段的存储从字符串改为整数类型
- 修复create、update和query操作中的类型转换错误
- 解决'Invalid column type Integer at index: 5, name: priority'错误
- 确保数据库schema与代码中的类型处理保持一致
2025-07-15 13:31:48 +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
8f1355ba16
fix: 修复数据库查询NULL值错误和Tauri命令参数命名问题
...
- 修复video_classification_repository中get_classification_stats函数的NULL值处理
- 将SUM()查询结果从直接获取i32改为Option<i32>并提供默认值0
- 修复get_templates_by_project等命令的参数命名,使用camelCase以匹配前端调用
- 解决'Invalid column type Null at index: 1, name: pending'错误
- 解决'invalid args projectId for command get_templates_by_project'错误
2025-07-15 13:18:04 +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
730402aba0
feat: 实现项目-模板绑定和素材-模特绑定管理功能
...
新功能:
- 项目-模板绑定管理系统
- 支持主要/次要模板绑定类型
- 绑定优先级和状态管理
- 批量绑定操作
- 绑定关系的CRUD操作
- 素材-模特绑定管理系统
- 素材与模特的关联管理
- 批量绑定/解绑操作
- 绑定统计和分析
- 素材编辑对话框
架构改进:
- 新增项目-模板绑定数据模型和仓库层
- 新增素材-模特绑定业务服务层
- 完善的API命令层实现
- 响应式前端界面设计
用户体验优化:
- 统一的通知系统
- 增强的加载状态组件
- 流畅的交互动画
- 优雅的确认对话框
测试覆盖:
- 单元测试和集成测试
- 业务逻辑验证
- API接口测试
技术栈:
- 后端: Rust + Tauri + SQLite
- 前端: React + TypeScript + TailwindCSS
- 状态管理: Zustand
- 测试: Vitest + Rust测试框架
配置更新:
- 更新数据库迁移脚本
- 完善测试配置
- 优化构建流程
2025-07-15 12:50:30 +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
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
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
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