From 730ac22b843371e2a7592f5ef784512aab997a70 Mon Sep 17 00:00:00 2001 From: imeepos Date: Wed, 16 Jul 2025 14:11:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dget=5Fmatching=5Fresul?= =?UTF-8?q?t=5Fdetail=E6=8E=A5=E5=8F=A3=E6=95=B0=E6=8D=AE=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复'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接口的错误。 --- .../template_matching_result_repository.rs | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/apps/desktop/src-tauri/src/data/repositories/template_matching_result_repository.rs b/apps/desktop/src-tauri/src/data/repositories/template_matching_result_repository.rs index 4c4a006..40ec7e4 100644 --- a/apps/desktop/src-tauri/src/data/repositories/template_matching_result_repository.rs +++ b/apps/desktop/src-tauri/src/data/repositories/template_matching_result_repository.rs @@ -277,11 +277,11 @@ impl TemplateMatchingResultRepository { &segment_result.material_name, &segment_result.model_id, &segment_result.model_name, - &segment_result.match_score.to_string(), + &segment_result.match_score, &segment_result.match_reason, - &segment_result.segment_duration.to_string(), - &segment_result.start_time.to_string(), - &segment_result.end_time.to_string(), + &segment_result.segment_duration, + &segment_result.start_time, + &segment_result.end_time, &segment_result.properties, &segment_result.created_at.to_rfc3339(), &segment_result.updated_at.to_rfc3339(), @@ -316,11 +316,11 @@ impl TemplateMatchingResultRepository { &segment_result.material_name, &segment_result.model_id, &segment_result.model_name, - &segment_result.match_score.to_string(), + &segment_result.match_score, &segment_result.match_reason, - &segment_result.segment_duration.to_string(), - &segment_result.start_time.to_string(), - &segment_result.end_time.to_string(), + &segment_result.segment_duration, + &segment_result.start_time, + &segment_result.end_time, &segment_result.properties, &segment_result.created_at.to_rfc3339(), &segment_result.updated_at.to_rfc3339(), @@ -380,9 +380,9 @@ impl TemplateMatchingResultRepository { &failed_segment.matching_rule_data, &failed_segment.failure_reason, &failed_segment.failure_details, - &failed_segment.segment_duration.to_string(), - &failed_segment.start_time.to_string(), - &failed_segment.end_time.to_string(), + &failed_segment.segment_duration, + &failed_segment.start_time, + &failed_segment.end_time, &failed_segment.created_at.to_rfc3339(), &failed_segment.updated_at.to_rfc3339(), ], @@ -414,9 +414,9 @@ impl TemplateMatchingResultRepository { &failed_segment.matching_rule_data, &failed_segment.failure_reason, &failed_segment.failure_details, - &failed_segment.segment_duration.to_string(), - &failed_segment.start_time.to_string(), - &failed_segment.end_time.to_string(), + &failed_segment.segment_duration, + &failed_segment.start_time, + &failed_segment.end_time, &failed_segment.created_at.to_rfc3339(), &failed_segment.updated_at.to_rfc3339(), ], @@ -521,11 +521,11 @@ impl TemplateMatchingResultRepository { material_name: row.get("material_name")?, model_id: row.get("model_id")?, model_name: row.get("model_name")?, - match_score: row.get::<_, String>("match_score")?.parse().unwrap_or(0.0), + match_score: row.get("match_score")?, match_reason: row.get("match_reason")?, - segment_duration: row.get::<_, String>("segment_duration")?.parse().unwrap_or(0), - start_time: row.get::<_, String>("start_time")?.parse().unwrap_or(0), - end_time: row.get::<_, String>("end_time")?.parse().unwrap_or(0), + segment_duration: row.get("segment_duration")?, + start_time: row.get("start_time")?, + end_time: row.get("end_time")?, properties: row.get("properties")?, created_at, updated_at, @@ -552,9 +552,9 @@ impl TemplateMatchingResultRepository { matching_rule_data: row.get("matching_rule_data")?, failure_reason: row.get("failure_reason")?, failure_details: row.get("failure_details")?, - segment_duration: row.get::<_, String>("segment_duration")?.parse().unwrap_or(0), - start_time: row.get::<_, String>("start_time")?.parse().unwrap_or(0), - end_time: row.get::<_, String>("end_time")?.parse().unwrap_or(0), + segment_duration: row.get("segment_duration")?, + start_time: row.get("start_time")?, + end_time: row.get("end_time")?, created_at, updated_at, })