imeepos
d58499b564
fix: 修复火山云 API 响应格式解析问题
...
问题修复:
- 修复响应结构不匹配导致的解析失败
- 更新数据结构以匹配火山云 API 的实际响应格式
- 添加调试日志以便排查 API 响应问题
技术改进:
- 重构响应数据结构,支持火山云嵌套格式 (ResponseMetadata + Result)
- 更新前端类型定义和数据访问路径
- 添加详细的响应解析错误信息
- 保持向后兼容性
响应格式变更:
- 原格式: { code, message, data, ... }
- 新格式: { ResponseMetadata: {...}, Result: { code, message, data, ... } }
现在 OmniHuman 主体识别功能应该可以正确解析火山云 API 响应了!
2025-08-05 18:36:46 +08:00
imeepos
c196659869
feat: 添加 OmniHuman 主体识别功能
...
新增功能:
- ✅ 在 VolcanoVideoService 中添加 RealmanAvatarPictureCreateRoleOmniSubmitTask API
- 支持识别图片中是否包含人、类人、拟人等主体
- 完整的前后端集成,包括 Rust 后端服务和 TypeScript 前端接口
- 新增 OmniHumanDetectionTool 工具页面,提供直观的用户界面
- 支持图片上传、预览、识别结果展示等完整流程
技术实现:
- 后端: 在 VolcanoVideoService 中实现火山云 API 调用
- 前端: 新增专用工具页面,集成到工具列表和路由系统
- 类型定义: 完整的 TypeScript 类型支持
- 错误处理: 完善的错误处理和用户反馈机制
API 规格:
- Action: RealmanAvatarPictureCreateRoleOmniSubmitTask
- Version: 2024-06-06
- 请求参数: req_key, image_url
- 响应数据: 包含识别结果、处理后图片、算法返回数据等
2025-08-05 18:20:00 +08:00
imeepos
46c3ea6501
feat: 实现 Hedra 口型合成异步化改造
...
- 将 Hedra 口型合成任务改为异步处理模式
- 添加完整的数据模型和仓储层支持
- 实现后台任务轮询和实时进度通知
- 创建 HedraLipSyncRecords 页面显示任务列表
- 将原有功能封装为 Modal 组件
- 支持多任务并发处理和状态跟踪
- 添加事件驱动的前端状态更新机制
主要变更:
- 新增 HedraLipSyncRecord 数据模型
- 新增 HedraLipSyncRepository 仓储层
- 新增 HedraLipSyncModal 组件
- 新增 HedraLipSyncRecords 页面
- 修改 bowong_text_video_agent_commands 支持异步处理
- 添加事件总线支持 Hedra 任务进度通知
- 更新路由配置和工具列表
2025-08-01 18:40:54 +08:00
imeepos
548148e56a
重构ComfyUI集成架构:明确区分云端Modal和本地ComfyUI两种生成模式
...
- 函数重命名以提高可读性:
- execute_comfyui_generation execute_modal_cloud_generation
- perform_outfit_image_generation perform_local_comfyui_generation
- 更新生成类型标识:
- 云端Modal模式:generation_type = 'modal_cloud'
- 本地ComfyUI模式:generation_type = 'local_comfyui'
- 前端UI优化:
- 将切换开关改为单选按钮组样式
- 更新描述文本,明确两种模式的区别
- Gallery中显示单选按钮样式的生成类型标签
- 架构清晰化:
- 云端Modal模式:使用云端MidJourney API
- 本地ComfyUI模式:使用用户配置的本地ComfyUI服务
- 完全分离两种生成逻辑,避免混淆
- 修复类型推断错误,确保编译通过
2025-07-31 19:54:34 +08:00
imeepos
676effdab4
fix: 修复数据库迁移问题
...
- 将表创建和索引创建逻辑从仓储初始化方法移到迁移系统
- 移除 outfit_image_repository.rs 中的 init_tables 表创建逻辑
- 确保所有数据库结构变更通过迁移系统统一管理
- 修复 comfyui_prompt_id 索引创建时机问题
这样可以避免在旧数据库上创建索引时找不到字段的错误。
2025-07-31 15:31:17 +08:00
imeepos
4b20f69560
fix: 修复批量任务状态更新错乱问题
...
- 添加 comfyui_prompt_id 字段到 OutfitImageRecord 和 OutfitPhotoGeneration 模型
- 创建数据库迁移添加 prompt_id 字段和索引
- 修改 ComfyUI 服务添加基于 prompt_id 的工作流执行方法
- 更新仓储层添加根据 prompt_id 查找记录的方法
- 修改任务执行逻辑保存 ComfyUI prompt_id 到数据库
- 创建基于 prompt_id 的进度回调函数替代基于索引的回调
- 修改批量处理逻辑使用精确的 ID 匹配而非数组索引
- 标记旧的基于索引的批量方法为已弃用
解决了当选择2个商品1个模特时,任务完成后更新错误任务状态的问题。
现在通过 ComfyUI 的 prompt_id 建立精确的任务映射关系。
2025-07-31 15:24:48 +08:00
imeepos
b158546738
refactor: 移除ComfyUI JSON替换中的image字段处理
...
优化内容:
- 移除模特图片和商品图片节点中image字段的替换逻辑
- 移除不必要的filename提取逻辑
- 简化替换流程,只处理image_url字段
技术改进:
- 减少不必要的字段替换操作
- 避免image和image_url字段的潜在冲突
- 简化工作流节点替换逻辑
影响范围:
- ComfyUI工作流JSON替换更加精准
- 调试文件生成更加简洁
- 减少潜在的字段冲突问题
2025-07-31 14:22:50 +08:00
imeepos
7b4a9fb7c9
fix: 修复ComfyUI JSON替换中image字段的值类型问题
...
问题修复:
- image字段的值从字符串字面量改为Value::String类型
- 确保image和image_url字段二选一的逻辑正确
技术细节:
- 模特图片替换: image字段设置为空字符串,使用image_url
- 商品图片替换: image字段设置为空字符串,使用image_url
- 修复了Value类型不匹配的编译错误
影响范围:
- ComfyUI工作流JSON替换逻辑
- 调试文件生成的正确性
- 图片节点参数的正确传递
2025-07-31 14:21:13 +08:00
imeepos
6c43e6f08b
feat: 实现视频生成完成后自动下载并上传到云端服务
...
新增功能:
1. 视频生成完成后自动下载到本地临时文件
2. 自动上传到云端S3服务
3. 将S3 URL转换为CDN HTTPS地址
4. 支持防盗链绕过的视频下载
5. 完善的错误处理和fallback机制
技术实现:
- download_and_upload_video(): 主要流程控制
- download_video_to_file(): 下载视频到本地临时文件
- 使用CloudUploadService上传到S3
- convert_s3_to_cdn_url(): S3到CDN URL转换
- 临时文件自动清理机制
用户体验:
- 视频生成完成后自动获得可访问的CDN链接
- 无需手动下载和上传操作
- 支持原始URL作为fallback保证可用性
- 详细的日志记录便于问题排查
安全特性:
- 防盗链绕过HTTP头设置
- 临时文件安全清理
- 错误情况下的资源释放
- 超时控制防止长时间阻塞
2025-07-31 14:03:51 +08:00
imeepos
1a504fa4b0
fix: 修复任务状态同步问题 - 连续失败时标记任务为失败
...
问题修复:
- API查询失败时只打印警告,没有更新数据库状态
- 前端显示运行中,但后端日志显示连续失败
- 任务会一直轮询直到超时,用户体验差
技术实现:
- 添加连续失败计数器 (consecutive_failures)
- 连续失败3次后自动标记任务为失败状态
- 立即更新数据库记录,前端能及时看到失败状态
- 避免无意义的长时间轮询
修复逻辑:
- 成功时重置失败计数器
- 失败时增加计数器
- 达到上限时标记为失败并退出轮询
- 错误类型: API_CONSECUTIVE_FAILURES
用户体验改进:
- 快速反馈任务失败状态(30秒内)
- 避免长时间显示运行中的假象
- 明确的失败原因和错误代码
2025-07-31 13:17:55 +08:00
imeepos
65412e80b7
fix: 修复S3 URL转换问题 - 添加CDN URL转换功能
...
问题修复:
- 火山云API不支持S3协议URL (s3://...),需要HTTPS URL
- 云上传服务返回S3 URI格式,需要转换为可访问的CDN URL
技术实现:
- 添加convert_s3_to_cdn_url方法,将S3 URL转换为CDN URL
- 支持s3://ap-northeast-2/modal-media-cache/格式转换为https://cdn.roasmax.cn/
- 支持通用s3://格式和amazonaws.com格式的URL转换
- 在文件上传后立即转换URL格式,确保API调用使用正确的HTTPS URL
修复的错误:
- 400 Bad Request: unsupported protocol scheme 's3'
- 错误原因: 使用了S3协议URL而非HTTPS URL
- 解决方案: 自动转换S3 URL为可访问的CDN HTTPS URL
URL转换示例:
- s3://ap-northeast-2/modal-media-cache/upload/... -> https://cdn.roasmax.cn/upload/ ...
- 确保火山云API能够正确访问图片和视频文件
2025-07-31 13:11:08 +08:00
imeepos
2d9e6f067d
fix: 修复火山云API调用问题 - 添加文件上传到云端功能
...
问题修复:
- 火山云API需要HTTPS URL,不能使用本地文件路径
- 添加CloudUploadService集成,在调用API前先上传文件到云端
- 修复image_url和driving_video_url使用本地路径的问题
技术实现:
- 集成现有的CloudUploadService到VolcanoVideoService
- 在call_volcano_api方法中添加文件上传逻辑
- 先上传图片和驱动视频到云端,获取HTTPS URL
- 使用云端URL调用火山云API,确保API调用成功
- 添加详细的上传进度日志和错误处理
修复的错误:
- 400 Bad Request: image format unsupported: invalid image url
- 错误原因: 使用了本地文件路径 'c:\\Users\\...' 而非HTTPS URL
- 解决方案: 自动上传文件到云端并获取可访问的URL
2025-07-31 13:06:08 +08:00
imeepos
09b79d55df
feat: 完善火山云API签名算法实现
...
- 添加完整的HMAC-SHA256签名算法
- 实现规范请求(CanonicalRequest)构建
- 实现待签名字符串(StringToSign)创建
- 实现签名密钥派生(kSigning)算法
- 实现最终签名计算和Authorization头构建
- 添加必要的依赖: hmac, sha2, hex, chrono, url
- 严格按照火山云API文档规范实现签名流程
技术细节:
- 支持POST请求的JSON body哈希计算
- 规范化查询字符串和请求头处理
- 多层HMAC密钥派生: kDate -> kRegion -> kService -> kSigning
- 使用cn-north-1地区和cv服务标识符
- 生成标准格式的Authorization请求头
2025-07-31 12:49:40 +08:00
imeepos
73149f4101
feat: 实现火山云视频生成功能
...
- 添加火山云视频生成服务,支持单图+驱动视频生成
- 实现VideoGenerationRecord数据模型和仓储层
- 创建数据库迁移文件支持视频生成记录
- 添加Tauri命令用于前后端通信
- 实现VideoGenerationTool前端界面
- 根据火山云API文档移除不支持的参数
- 支持图片和驱动视频文件上传
- 实现任务状态跟踪和进度显示
- 集成到工具页面路由和配置中
技术要点:
- 使用火山云realman_avatar_imitator_v2v_gen_video服务
- 支持API参数: req_key, image_url, driving_video_info
- 实现异步任务处理和状态轮询
- 遵循项目前端标准(lucide-react, TailwindCSS)
- 数据库索引优化查询性能
2025-07-31 12:43:30 +08:00
imeepos
fcc0b64488
feat: 添加系统音色管理功能和修复穿搭生成问题
...
- 新增系统音色管理模块
- 创建 SystemVoice 数据模型,支持多种音色类型和性别分类
- 添加系统音色数据库表和迁移文件,内置46个预设音色
- 实现 SystemVoiceRepository 仓库层,支持分页、搜索、分类查询
- 添加系统音色 Tauri 命令,提供完整的 API 接口
- 修复穿搭图片生成问题
- 修复 prompt 替换逻辑,避免错误覆盖模特描述节点
- 实现商品编号调试文件命名,支持 debug_replaced_1.json 等格式
- 添加 product_index 字段支持,便于多商品生成调试
- 修复编译错误,确保所有结构体字段完整
- 完善穿搭生成功能
- 添加分页加载功能,支持下拉加载更多记录
- 实现失败重试机制,提供用户友好的错误处理
- 支持多商品并发生成,每个商品独立任务处理
- 添加详细的测试验证文档
内置音色包括:
- 基础系统音色:青涩青年、精英青年、霸道青年等
- 精品音色:所有基础音色的 beta 版本
- 童声音色:聪明男童、可爱男童、萌萌女童等
- 角色音色:病娇弟弟、俊朗男友、甜心小玲等
- 节日音色:Santa Claus、Grinch、Rudolph
- 英文音色:Arnold、Charming Lady、Sweet Girl等
2025-07-31 10:54:19 +08:00
imeepos
dd289a8685
fix: 修复穿搭图片生成结果重复问题 - 添加随机种子支持
...
问题分析:
- 每次生成的穿搭图片都完全相同
- 原因是ComfyUI工作流中的seed(随机种子)值固定不变
解决方案:
- 在ComfyUI工作流节点替换逻辑中添加seed随机化处理
- 支持BOWONG-INPUT-SEED/RANDOM节点的自动随机化
- 为所有KSampler和KSamplerAdvanced节点自动生成随机seed
- 添加rand依赖用于生成随机数
技术改进:
- 每次生成时自动生成0到2^32-1范围内的随机种子
- 支持多种seed节点命名方式
- 保持向后兼容,不影响现有工作流结构
- 添加详细日志记录随机种子值
现在每次生成都会产生不同的结果,提升用户体验。
2025-07-30 23:25:47 +08:00
imeepos
8499fa1927
fix: 修复ComfyUI图片下载404错误
...
- 增强history API日志,显示详细的图片信息(文件名、子文件夹、类型)
- 智能解析ComfyUI返回的文件路径,支持subfolder信息
- 实现多路径尝试下载机制,优先使用API提供的确切路径
- 改进WebSocket进度跟踪,使用动态节点计数和智能完成检测
- 修复空节点错误判断逻辑,正确处理ComfyUI的成功响应
这些修改解决了ComfyUI生成图片后无法下载的问题,确保图片能够
成功从ComfyUI服务器下载并上传到云端存储。
2025-07-30 22:17:24 +08:00
imeepos
e880687004
fix: 修复ComfyUI工作流提示词替换和错误判断逻辑
...
- 优化节点识别逻辑,正确识别模特描述节点为提示词类型
- 根据节点class_type智能选择替换字段(String类型用value,其他用text)
- 修复ComfyUI错误判断逻辑,空node_errors对象不再误判为失败
- 确保ComfyUI任务成功创建时不会被错误标记为失败状态
- 提升工作流执行成功率和用户体验
2025-07-30 21:51:35 +08:00
imeepos
d5d9202e86
fix: 完善ComfyUI工作流集成 - 修复图片URL替换和文件名提取
...
- 修复ComfyUI工作流节点识别逻辑,支持通过_meta.title识别节点
- 添加URL格式转换功能,自动将S3/bowongai格式转换为CDN格式
- 实现文件名提取功能,同时替换image和image_url字段
- 添加调试工作流保存功能,便于排查问题
- 增强日志输出,显示详细的节点替换信息
- 确保ComfyUI接收到正确格式的图片链接和文件名
2025-07-30 21:27:18 +08:00
imeepos
192292b31e
fix: 修复 cargo check 编译错误
...
修复内容:
- 添加缺失的 OutfitImageGenerationResponse 导入
- 为 ErrorCategory 和 ErrorSeverity 添加 Eq 和 Hash trait
- 为 SimpleError 添加 Debug trait
- 修复 ModelRepository::new 返回类型问题
- 移除未使用的变量 mut 修饰符
- 移除未使用的导入
编译状态:
- cargo check 现在成功通过
- 只剩下一些无害的警告信息
- 所有核心功能编译正常
2025-07-30 20:05:32 +08:00
imeepos
441d3f6cff
feat: 完成核心功能开发
...
新增功能:
- 修复模特图片获取逻辑 - 从数据库查询真实模特照片
- 完善前端服务对接 - 替换模拟数据为真实API调用
- ComfyUI工作流配置 - 实现工作流文件管理功能
- 错误处理优化 - 完善异常情况的用户反馈机制
技术改进:
- 新增 WorkflowManagementService 用于工作流文件管理
- 新增 ErrorHandlingService 用于统一错误处理
- 优化模特图片URL获取逻辑,支持头像和照片优先级
- 新增工作流验证、保存、删除、复制等完整功能
- 新增用户友好的错误信息和处理建议
遵循开发规范:
- 按照 promptx/tauri-desktop-app-expert 规定的开发规范
- 实现模块化、组件化的架构设计
- 完善的错误处理和用户反馈机制
- 类型安全的API设计
2025-07-30 19:59:44 +08:00
imeepos
08cd544cfe
fix: 修复数据库连接池的关键bug和配置优化
...
- 修复连接池try_acquire_from_pool方法的严重bug:之前即使找到可用连接也返回None
- 正确实现连接的获取、移除和返回逻辑
- 优化连接池配置:减少最大连接数从10到5,最小连接数从3到2
- 减少获取超时从30秒到10秒,实现快速失败
- 改进日志记录:添加连接获取和归还的详细状态日志
- 修复AppState测试构造函数中缺失的outfit_photo_generation_repository字段
这个修复解决了应用启动时连接池连接超时导致卡死的问题。
2025-07-30 19:46:36 +08:00
imeepos
852d4c7fa2
feat: implement material usage tracking and project statistics
...
- Add material usage repository with CRUD operations
- Implement material usage commands for tracking usage statistics
- Update project repository to include material usage counts
- Remove obsolete template foreign key test file
- Support tracking material usage across different contexts (template matching, manual selection, etc.)
2025-07-30 19:39:09 +08:00
imeepos
8605d8d82b
修复数据库连接池编译错误
...
修复的问题:
- 添加缺失的 anyhow 宏导入到多个 repository 文件
- 修复 template_service.rs 中的变量名错误 (conn -> pooled_conn)
- 修复 material_usage_commands.rs 中的返回类型不匹配
修复的文件:
- project_repository.rs: 添加 anyhow 导入
- material_usage_repository.rs: 添加 anyhow 导入
- model_repository.rs: 添加 anyhow 导入
- model_dynamic_repository.rs: 添加 anyhow 导入
- project_template_binding_repository.rs: 添加 anyhow 导入
- export_record_repository.rs: 添加 anyhow 导入
- image_generation_repository.rs: 添加 anyhow 导入
- template_matching_result_repository.rs: 添加 anyhow 导入
- template_segment_weight_repository.rs: 添加 anyhow 导入
关键修复:
- template_service.rs: 修复连接变量名不匹配
- material_usage_commands.rs: 修复返回类型 (anyhow::Error -> String)
编译错误从181个减少到预计更少,连接池优化接近完成!
2025-07-30 19:17:17 +08:00
imeepos
8871038917
继续优化核心业务逻辑连接池
...
已完成优化:
- conversation_repository.rs: 完整优化所有方法
- material_repository.rs: 添加 anyhow 宏导入,部分方法已优化
- ai_classification_repository.rs: 添加 anyhow 宏导入
发现状况:
- 很多 repository 文件的方法已经被之前的优化覆盖
- 主要问题是缺少 anyhow 宏导入导致编译失败
下一步计划:
- 继续修复其他文件的 anyhow 导入问题
- 完成剩余核心业务逻辑文件的连接池优化
- 重点关注 template_service.rs 等核心服务
这是数据库连接池优化计划的第3步,逐步解决编译问题。
2025-07-30 19:04:58 +08:00
imeepos
eaae092c72
修复数据库死锁问题:强制启用连接池并优化异步操作
...
主要修复:
- 强制启用数据库连接池,避免单连接竞争死锁
- 修复 OutfitImageRepository 所有方法使用连接池
- 优化 AsyncMaterialService 异步任务,使用 spawn_blocking
- 修复 video_classification_repository 和 video_generation_repository
- 添加连接池监控和诊断命令
连接池配置:
- 最大连接数:10,最小连接数:3
- 获取超时:30秒,空闲超时:5分钟
- 带重试机制和超时处理
新增监控功能:
- get_detailed_connection_pool_stats:获取连接池统计
- force_cleanup_database_connections:强制清理连接
修复的方法:
- create_record_with_products:强制使用连接池
- get_records_by_model_id:避免死锁的查询
- init_tables, update_record:连接池优化
- recover_stuck_tasks:视频分类任务恢复
这个修复从根本上解决了数据库死锁问题,提高了并发性能和稳定性。
2025-07-30 18:32:35 +08:00
imeepos
1e03afdecb
feat: 实现穿搭照片生成功能
...
- 添加基于 ComfyUI 工作流的 AI 穿搭照片生成功能
- 实现完整的前端界面和后端服务集成
- 支持模特形象选择、商品图片上传、智能提示词生成
- 提供实时进度监控和历史记录管理
- 集成 ComfyUI 设置面板和连接状态检测
- 添加响应式设计和现代化 UI/UX
- 完善的 TypeScript 类型系统和错误处理
- 包含完整的功能文档和实现说明
主要组件:
- OutfitPhotoGenerator: 主生成器组件
- OutfitPhotoGenerationHistory: 历史记录管理
- ComfyUISettingsPanel: ComfyUI 设置面板
- OutfitPhotoGenerationPage: 主页面集成
技术特性:
- React 18 + TypeScript + Tailwind CSS
- Tauri 事件系统集成
- 实时进度监控和状态管理
- 拖拽上传和图片预览
- 批量处理和错误重试机制
2025-07-30 17:28:31 +08:00
imeepos
2f6a4dc1be
feat: Implement image generation record management
...
- Added ImageGenerationRecordStatus enum to represent various states of image generation records.
- Created ImageGenerationRecord interface to define the structure of image generation records.
- Developed ImageGenerationStatistics interface for returning statistics related to image generation.
- Implemented ImageGenerationService in Rust to handle creation, updating, and retrieval of image generation records.
- Added methods for starting, completing, failing, and cancelling image generation tasks.
- Introduced ImageGenerationRepository for database interactions related to image generation records.
- Created SQL migration scripts for setting up the image_generation_records table and its indices.
- Implemented cleanup and statistics retrieval functionalities for image generation records.
2025-07-29 17:11:18 +08:00
imeepos
9b2c5004f3
feat: 实现完整的AI图片生成工具
...
- 新增图片生成工具页面和路由配置
- 实现提示词预审功能,支持API响应格式解析
- 实现异步图片生成任务提交和状态轮询
- 支持参考图片上传功能
- 实现多张图片结果展示(4张图片网格布局)
- 添加Bearer token认证支持
- 优化API响应解析,支持不同阶段的响应格式
- 实现错误处理和重试机制
- 遵循Tauri开发规范和UI/UX设计标准
- 使用TailwindCSS进行响应式设计
技术特性:
- 后端Rust命令:check_image_prompt, submit_image_generation_task, query_image_generation_status, upload_file_to_cloud
- 前端React组件:完整的生成流程UI,实时状态监控,多图片展示
- 类型安全:完整的TypeScript类型定义
- 用户体验:实时进度反馈,批量操作,悬停交互效果
2025-07-29 15:56:31 +08:00
imeepos
7c43f7a7ed
feat: 实现全局目录设置功能
...
- 扩展AppConfig结构体,添加DirectorySettings字段
- 创建DirectorySettingsService服务,提供CRUD操作
- 添加Tauri命令接口,支持前端调用
- 修改现有文件选择逻辑,优先使用保存的目录设置
- 创建DirectorySettingsModal等UI组件
- 集成到素材导入、模板导入、剪影导出等界面
- 实现自动记忆功能,可选择是否记住路径
- 编写完整的单元测试,确保功能可靠性
功能特点:
- 支持素材导入、模板导入、剪影导出、项目导出、缩略图导出等目录设置
- 自动记忆用户选择的目录,下次使用时作为默认路径
- 提供友好的UI界面管理目录设置
- 支持批量更新、清除、重置等操作
- 完整的错误处理和验证机制
2025-07-25 18:38:50 +08:00
imeepos
05903e22fc
feat: 模板详情弹框优化和单个删除功能修复
...
- 修改模板详情弹框默认选中标签从'概览'改为'轨道'
- 修复单个模板匹配记录删除时片段使用状态未正确更新的bug
- 新增soft_delete_matching_result_with_usage_reset命令支持单个删除时重置使用状态
- 前端界面优化,提供更好的用户反馈
Changes:
- apps/desktop/src/components/template/TemplateDetailModal.tsx: 默认标签页改为tracks
- apps/desktop/src-tauri/src/business/services/template_matching_result_service.rs: 新增单个删除重置方法
- apps/desktop/src-tauri/src/presentation/commands/template_matching_result_commands.rs: 新增Tauri命令
- apps/desktop/src-tauri/src/lib.rs: 注册新命令
- apps/desktop/src/components/TemplateMatchingResultManager.tsx: 更新前端删除逻辑
2025-07-25 18:13:40 +08:00
imeepos
bce0c30cab
feat: 从根本上解决权重配置问题
...
- 添加 get_segment_weights_for_categories 方法,只获取选中分类的权重
- 修改权重指示器和预览组件,使用新方法只显示实际选中的分类
- 修改权重编辑器,只加载和编辑选中分类的权重
- 确保权重配置与匹配规则完全同步
- 解决显示所有分类权重但实际只选择部分分类的根本问题
2025-07-25 17:47:45 +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
ef2a561fe2
feat: 实现相似度检索工具
...
- 基于现有search_similar_outfits功能开发独立的相似度检索小工具
- 遵循promptx/tauri-desktop-app-expert开发规范
- 实现完整的前后端架构:
* Rust后端命令接口 (similarity_search_commands.rs)
* TypeScript类型定义 (similaritySearch.ts)
* Zustand状态管理 (similaritySearchStore.ts)
* React组件 (SimilaritySearchTool, SimilaritySearchPanel, SimilaritySearchResults, SimilaritySearchCard)
* 服务层 (similaritySearchService.ts)
功能特性:
- 智能搜索建议和自动完成
- 可调节的相关性阈值 (LOWEST/LOW/MEDIUM/HIGH)
- 快速搜索标签
- 响应式网格布局结果展示
- 优雅的加载状态和错误处理
- 遵循UI/UX设计标准的美观界面
技术实现:
- 复用现有outfit search API和数据模型
- 简化的搜索配置,专注核心功能
- 完整的TypeScript类型安全
- 现代化的React Hooks和状态管理
- TailwindCSS响应式设计
- 平滑的动画和交互效果
集成:
- 添加到快捷工具列表 (/tools/similarity-search)
- 配置React Router路由
- 注册Tauri命令处理器
2025-07-24 14:21:47 +08:00
imeepos
d935dca4e7
实现真实的服装搜索逻辑,直接调用 Google Vertex AI Search API
...
- 实现 execute_vertex_ai_search 函数,直接调用 Vertex AI Search API
- 添加 get_google_access_token 函数获取访问令牌
- 实现 convert_vertex_response_to_search_results 转换响应格式
- 添加 parse_vertex_result_to_search_result 解析单个搜索结果
- 添加 parse_vertex_product_info 解析产品信息
- 支持搜索过滤器和相关性阈值
- 添加搜索功能的单元测试
- 修复多个编译警告,移除未使用的导入和变量
2025-07-24 13:52:00 +08:00
imeepos
5a60fb8c04
feat: 优化对话服务和RAG功能
...
更新内容:
- 优化conversation_service.rs对话服务逻辑
- 改进gemini_service.rs API集成
- 更新ChatInterface组件用户体验
- 优化MultiTurnChatTest多轮对话测试
- 改进MultiTurnRagChatTest RAG对话测试
- 更新conversationService前端服务
功能改进:
- 支持maxHistoryMessages历史消息数量控制
- 优化对话上下文管理
- 改进RAG检索和对话集成
- 提升多轮对话的稳定性和准确性
这些更新提升了AI对话功能的整体性能和用户体验
2025-07-23 21:14:17 +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
4291230acb
fix: 修复React渲染错误和数据库迁移问题
...
- 修复ModelDetail.tsx中直接渲染Gender枚举导致的React错误
- 修复TemplateDetailModal.tsx中直接渲染TemplateMaterialType和TrackType枚举的问题
- 添加枚举到中文文本的转换函数(getGenderText, getMaterialTypeText, getTrackTypeText)
- 实现完整的数据库迁移系统,支持版本化迁移
- 添加迁移v9修复template_materials表file_size字段允许NULL
- 改进数据库迁移执行逻辑,使用execute_batch方法
- 添加数据库集成测试和迁移测试
- 修复template_materials表约束问题,解决模板导入失败
主要变更:
- 新增数据库迁移系统(migrations.rs)
- 新增9个数据库迁移文件(v1-v9)
- 修复前端枚举渲染问题
- 完善数据库测试覆盖
2025-07-23 18:30:52 +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
3a67bbf52a
fix: 优化markdown解析器
2025-07-22 18:40:03 +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
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
70e8669ace
refactor: 移除模板匹配中的日志并增强死循环防护
...
优化内容:
1. 移除所有println!和eprintln!日志输出,提升性能
2. 增强批量匹配的死循环防护机制:
- 添加实质性进展检测(检查是否新增已使用片段)
- 如果本轮虽有成功匹配但无实质性进展,则终止循环
- 防止部分匹配成功但不消耗新素材的无效循环
死循环防护机制:
- 原有:本轮无成功匹配时终止
- 原有:最大轮数限制(100轮)
- 原有:预检查机制(每5轮检查模板可匹配性)
- 新增:实质性进展检测,防止无效循环
这确保了批量匹配在各种边界情况下都能正确终止,避免无限循环。
2025-07-21 19:52:05 +08:00
imeepos
5ae7874792
fix: 修正文件名序号001全局限制逻辑
...
修复问题:
- 将序号001限制从仅针对FilenameSequence规则改为全局限制
- 现在所有匹配规则(AiClassification、RandomMatch、FilenameSequence)都会遵守序号001限制
- 在单个模板匹配过程中,最多只能使用一个文件名以001结尾的视频文件
实现细节:
1. 在match_single_segment方法开始时检查模板是否已使用序号001视频
2. 将此状态传递给所有匹配方法
3. 在每个匹配方法的过滤逻辑中应用序号001限制
4. 统一的过滤逻辑确保一致性
这确保了无论使用哪种匹配规则,都不会在同一个模板中使用多个序号001的视频文件。
2025-07-21 19:24:58 +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
e9e5837a1f
feat: 升级Gemini服务使用TolerantJsonParser进行JSON解析
...
- 集成tolerant_json_parser.rs到GeminiService中
- 替换原有的正则匹配JSON提取逻辑
- 使用Arc<Mutex<TolerantJsonParser>>支持Clone trait
- 改进错误处理和日志输出,包含解析统计信息
- 添加回退机制,当TolerantJsonParser失败时使用传统方法
- 更新所有GeminiService::new()调用点处理Result返回类型
- 添加全面的测试用例验证新的JSON解析逻辑
- 保持API向后兼容性,方法签名不变
遵循promptx/tauri-desktop-app-expert开发规范
2025-07-21 15:02:37 +08:00