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接口的错误。
This commit is contained in:
imeepos 2025-07-16 14:11:14 +08:00
parent 3e6c05c4ac
commit 730ac22b84
1 changed files with 21 additions and 21 deletions

View File

@ -277,11 +277,11 @@ impl TemplateMatchingResultRepository {
&segment_result.material_name, &segment_result.material_name,
&segment_result.model_id, &segment_result.model_id,
&segment_result.model_name, &segment_result.model_name,
&segment_result.match_score.to_string(), &segment_result.match_score,
&segment_result.match_reason, &segment_result.match_reason,
&segment_result.segment_duration.to_string(), &segment_result.segment_duration,
&segment_result.start_time.to_string(), &segment_result.start_time,
&segment_result.end_time.to_string(), &segment_result.end_time,
&segment_result.properties, &segment_result.properties,
&segment_result.created_at.to_rfc3339(), &segment_result.created_at.to_rfc3339(),
&segment_result.updated_at.to_rfc3339(), &segment_result.updated_at.to_rfc3339(),
@ -316,11 +316,11 @@ impl TemplateMatchingResultRepository {
&segment_result.material_name, &segment_result.material_name,
&segment_result.model_id, &segment_result.model_id,
&segment_result.model_name, &segment_result.model_name,
&segment_result.match_score.to_string(), &segment_result.match_score,
&segment_result.match_reason, &segment_result.match_reason,
&segment_result.segment_duration.to_string(), &segment_result.segment_duration,
&segment_result.start_time.to_string(), &segment_result.start_time,
&segment_result.end_time.to_string(), &segment_result.end_time,
&segment_result.properties, &segment_result.properties,
&segment_result.created_at.to_rfc3339(), &segment_result.created_at.to_rfc3339(),
&segment_result.updated_at.to_rfc3339(), &segment_result.updated_at.to_rfc3339(),
@ -380,9 +380,9 @@ impl TemplateMatchingResultRepository {
&failed_segment.matching_rule_data, &failed_segment.matching_rule_data,
&failed_segment.failure_reason, &failed_segment.failure_reason,
&failed_segment.failure_details, &failed_segment.failure_details,
&failed_segment.segment_duration.to_string(), &failed_segment.segment_duration,
&failed_segment.start_time.to_string(), &failed_segment.start_time,
&failed_segment.end_time.to_string(), &failed_segment.end_time,
&failed_segment.created_at.to_rfc3339(), &failed_segment.created_at.to_rfc3339(),
&failed_segment.updated_at.to_rfc3339(), &failed_segment.updated_at.to_rfc3339(),
], ],
@ -414,9 +414,9 @@ impl TemplateMatchingResultRepository {
&failed_segment.matching_rule_data, &failed_segment.matching_rule_data,
&failed_segment.failure_reason, &failed_segment.failure_reason,
&failed_segment.failure_details, &failed_segment.failure_details,
&failed_segment.segment_duration.to_string(), &failed_segment.segment_duration,
&failed_segment.start_time.to_string(), &failed_segment.start_time,
&failed_segment.end_time.to_string(), &failed_segment.end_time,
&failed_segment.created_at.to_rfc3339(), &failed_segment.created_at.to_rfc3339(),
&failed_segment.updated_at.to_rfc3339(), &failed_segment.updated_at.to_rfc3339(),
], ],
@ -521,11 +521,11 @@ impl TemplateMatchingResultRepository {
material_name: row.get("material_name")?, material_name: row.get("material_name")?,
model_id: row.get("model_id")?, model_id: row.get("model_id")?,
model_name: row.get("model_name")?, 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")?, match_reason: row.get("match_reason")?,
segment_duration: row.get::<_, String>("segment_duration")?.parse().unwrap_or(0), segment_duration: row.get("segment_duration")?,
start_time: row.get::<_, String>("start_time")?.parse().unwrap_or(0), start_time: row.get("start_time")?,
end_time: row.get::<_, String>("end_time")?.parse().unwrap_or(0), end_time: row.get("end_time")?,
properties: row.get("properties")?, properties: row.get("properties")?,
created_at, created_at,
updated_at, updated_at,
@ -552,9 +552,9 @@ impl TemplateMatchingResultRepository {
matching_rule_data: row.get("matching_rule_data")?, matching_rule_data: row.get("matching_rule_data")?,
failure_reason: row.get("failure_reason")?, failure_reason: row.get("failure_reason")?,
failure_details: row.get("failure_details")?, failure_details: row.get("failure_details")?,
segment_duration: row.get::<_, String>("segment_duration")?.parse().unwrap_or(0), segment_duration: row.get("segment_duration")?,
start_time: row.get::<_, String>("start_time")?.parse().unwrap_or(0), start_time: row.get("start_time")?,
end_time: row.get::<_, String>("end_time")?.parse().unwrap_or(0), end_time: row.get("end_time")?,
created_at, created_at,
updated_at, updated_at,
}) })