From 31f94a51ff49a974cb5e5dc2ae65db4cdfa0beda Mon Sep 17 00:00:00 2001 From: imeepos Date: Wed, 16 Jul 2025 16:40:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E7=BB=93=E6=9E=9C=E5=BA=94=E7=94=A8=E6=97=B6?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E4=BD=BF=E7=94=A8=E8=AE=B0=E5=BD=95=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 create_usage_records_from_matching_result 命令参数命名问题 - 将前端调用参数从 snake_case 改为 camelCase 以匹配 Tauri 自动转换规则 - 确保模板匹配结果应用后能正确创建素材使用记录 - 遵循 Tauri 开发规范的参数命名约定 --- .../MaterialMatchingResultDialog.tsx | 144 ------------------ apps/desktop/src/components/TabNavigation.tsx | 2 +- .../TemplateMatchingResultDetailModal.tsx | 2 + apps/desktop/src/pages/ProjectDetails.tsx | 8 +- 4 files changed, 7 insertions(+), 149 deletions(-) diff --git a/apps/desktop/src/components/MaterialMatchingResultDialog.tsx b/apps/desktop/src/components/MaterialMatchingResultDialog.tsx index f135943..1f1273d 100644 --- a/apps/desktop/src/components/MaterialMatchingResultDialog.tsx +++ b/apps/desktop/src/components/MaterialMatchingResultDialog.tsx @@ -188,19 +188,6 @@ export const MaterialMatchingResultDialog: React.FC匹配失败 ({result.failed_segments.length}) - @@ -215,9 +202,6 @@ export const MaterialMatchingResultDialog: React.FC )} - {activeTab === 'records' && ( - - )} ) : ( @@ -547,131 +531,3 @@ const FailuresTab: React.FC<{ failures: FailedSegmentMatch[] }> = ({ failures }) ); }; - -// 匹配记录选项卡组件 -const MatchingRecordsTab: React.FC = () => { - // 模拟匹配记录数据 - const mockRecords = [ - { - id: '1', - timestamp: '2024-01-15 14:30:25', - template_name: '时尚写真模板', - project_name: '春季新品拍摄', - success_rate: 0.85, - total_segments: 24, - matched_segments: 20, - used_materials: 15, - used_models: 3 - }, - { - id: '2', - timestamp: '2024-01-14 16:45:12', - template_name: '商务风格模板', - project_name: '企业形象拍摄', - success_rate: 0.92, - total_segments: 18, - matched_segments: 17, - used_materials: 12, - used_models: 2 - }, - { - id: '3', - timestamp: '2024-01-13 10:20:08', - template_name: '休闲生活模板', - project_name: '日常生活记录', - success_rate: 0.78, - total_segments: 32, - matched_segments: 25, - used_materials: 20, - used_models: 4 - } - ]; - - const getSuccessRateColor = (rate: number): string => { - if (rate >= 0.8) return 'text-green-600'; - if (rate >= 0.6) return 'text-yellow-600'; - return 'text-red-600'; - }; - - const getSuccessRateBgColor = (rate: number): string => { - if (rate >= 0.8) return 'bg-green-100'; - if (rate >= 0.6) return 'bg-yellow-100'; - return 'bg-red-100'; - }; - - return ( -
-
-
-

历史匹配记录

-

查看之前的素材匹配结果

-
-
- 共 {mockRecords.length} 条记录 -
-
- - {mockRecords.length === 0 ? ( -
- -

暂无匹配记录

-

完成首次匹配后,记录将显示在这里

-
- ) : ( -
- {mockRecords.map((record) => ( -
-
-
-
-

{record.template_name}

- - {(record.success_rate * 100).toFixed(1)}% 成功率 - -
-

项目: {record.project_name}

-

{record.timestamp}

-
-
-
-
匹配: {record.matched_segments}/{record.total_segments}
-
素材: {record.used_materials} 个
-
模特: {record.used_models} 个
-
-
-
- - {/* 进度条 */} -
-
- 匹配进度 - {record.matched_segments}/{record.total_segments} -
-
-
= 0.8 ? 'bg-gradient-to-r from-green-500 to-green-600' : - record.success_rate >= 0.6 ? 'bg-gradient-to-r from-yellow-500 to-yellow-600' : - 'bg-gradient-to-r from-red-500 to-red-600' - }`} - style={{ width: `${record.success_rate * 100}%` }} - /> -
-
- - {/* 操作按钮 */} -
- - -
-
- ))} -
- )} -
- ); -}; diff --git a/apps/desktop/src/components/TabNavigation.tsx b/apps/desktop/src/components/TabNavigation.tsx index 0f35c04..c6e6fae 100644 --- a/apps/desktop/src/components/TabNavigation.tsx +++ b/apps/desktop/src/components/TabNavigation.tsx @@ -31,7 +31,7 @@ export const TabNavigation: React.FC = ({ className = '', }) => { const getTabClasses = (tab: TabItem, isActive: boolean) => { - const baseClasses = 'inline-flex items-center gap-2 font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2'; + const baseClasses = 'inline-flex items-center gap-2 font-medium'; // 尺寸样式 const sizeClasses = { diff --git a/apps/desktop/src/components/TemplateMatchingResultDetailModal.tsx b/apps/desktop/src/components/TemplateMatchingResultDetailModal.tsx index 6683814..a04c296 100644 --- a/apps/desktop/src/components/TemplateMatchingResultDetailModal.tsx +++ b/apps/desktop/src/components/TemplateMatchingResultDetailModal.tsx @@ -304,6 +304,8 @@ export const TemplateMatchingResultDetailModal: React.FC {/* 标签页内容 */} diff --git a/apps/desktop/src/pages/ProjectDetails.tsx b/apps/desktop/src/pages/ProjectDetails.tsx index d289502..ddab99b 100644 --- a/apps/desktop/src/pages/ProjectDetails.tsx +++ b/apps/desktop/src/pages/ProjectDetails.tsx @@ -404,10 +404,10 @@ export const ProjectDetails: React.FC = () => { if (savedResult && typeof savedResult === 'object' && 'id' in savedResult) { try { await invoke('create_usage_records_from_matching_result', { - project_id: project?.id, - template_id: currentMatchingBinding.binding.template_id, - binding_id: currentMatchingBinding.binding.id, - template_matching_result_id: (savedResult as any).id, + projectId: project?.id, + templateId: currentMatchingBinding.binding.template_id, + bindingId: currentMatchingBinding.binding.id, + templateMatchingResultId: (savedResult as any).id, matches: result.matches }); console.log('素材使用记录创建成功');