feat: Phase 1 handover - schema migration, correction mechanism, API fixes
Schema changes: dev.chunks->dev.chunk, remove old_chunk_id/chunk_index Correction: asr-1.json format, generate/apply scripts API: 37/37 endpoints fixed and tested Docs: HANDOVER_V2.0.md for M4
This commit is contained in:
@@ -327,7 +327,7 @@ async fn search_chunks(
|
||||
};
|
||||
|
||||
let mut sql = format!(
|
||||
"SELECT chunk_id, chunk_type, start_time, end_time, start_frame, end_frame, text_content, content FROM chunks WHERE file_uuid = '{}'",
|
||||
"SELECT chunk_id, chunk_type, start_time, end_time, start_frame, end_frame, text_content, content FROM dev.chunk WHERE file_uuid = '{}'",
|
||||
uuid
|
||||
);
|
||||
if let Some(tr) = &req.time_range {
|
||||
@@ -483,7 +483,7 @@ async fn search_frames_internal(
|
||||
let video_table = "videos";
|
||||
|
||||
let mut sql = format!(
|
||||
"SELECT f.frame_number, f.timestamp, f.yolo_objects, f.ocr_results, f.face_results, f.pose_results, v.file_uuid
|
||||
"SELECT f.frame_number, f.timestamp, f.yolo_objects, f.ocr_results, f.face_results, v.file_uuid
|
||||
FROM {} f JOIN {} v ON f.file_id = v.id WHERE 1=1",
|
||||
table, video_table
|
||||
);
|
||||
@@ -532,13 +532,12 @@ async fn search_frames_internal(
|
||||
Option<serde_json::Value>,
|
||||
Option<serde_json::Value>,
|
||||
Option<serde_json::Value>,
|
||||
Option<serde_json::Value>,
|
||||
String,
|
||||
)> = sqlx::query_as(&sql).fetch_all(db.pool()).await?;
|
||||
|
||||
let results: Vec<SearchResult> = rows
|
||||
.into_iter()
|
||||
.map(|(frame_number, timestamp, yolo, ocr, face, pose, _uuid)| {
|
||||
.map(|(frame_number, timestamp, yolo, ocr, face, _uuid)| {
|
||||
let objects = yolo.as_ref().and_then(|v| {
|
||||
v.get("objects")
|
||||
.map(|o| o.as_array().cloned().unwrap_or_default())
|
||||
@@ -558,10 +557,6 @@ async fn search_frames_internal(
|
||||
v.get("faces")
|
||||
.map(|f| f.as_array().cloned().unwrap_or_default())
|
||||
});
|
||||
let pose_persons = pose.as_ref().and_then(|v| {
|
||||
v.get("persons")
|
||||
.map(|p| p.as_array().cloned().unwrap_or_default())
|
||||
});
|
||||
|
||||
SearchResult::Frame {
|
||||
frame_number,
|
||||
@@ -570,7 +565,7 @@ async fn search_frames_internal(
|
||||
objects: objects.map(|arr| arr.iter().map(|v| v.clone()).collect()),
|
||||
ocr_texts,
|
||||
faces,
|
||||
pose_persons,
|
||||
pose_persons: None,
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
@@ -652,7 +647,7 @@ async fn search_frames_internal_v2(
|
||||
let video_table = "videos";
|
||||
|
||||
let mut sql = format!(
|
||||
"SELECT f.frame_number, f.timestamp, f.yolo_objects, f.ocr_results, f.face_results, f.pose_results, v.file_uuid
|
||||
"SELECT f.frame_number, f.timestamp, f.yolo_objects, f.ocr_results, f.face_results, v.file_uuid
|
||||
FROM {} f JOIN {} v ON f.file_id = v.id WHERE 1=1",
|
||||
table, video_table
|
||||
);
|
||||
@@ -685,13 +680,12 @@ async fn search_frames_internal_v2(
|
||||
Option<serde_json::Value>,
|
||||
Option<serde_json::Value>,
|
||||
Option<serde_json::Value>,
|
||||
Option<serde_json::Value>,
|
||||
String,
|
||||
)> = sqlx::query_as(&sql).fetch_all(db.pool()).await?;
|
||||
|
||||
let results: Vec<FrameResult> = rows
|
||||
.into_iter()
|
||||
.map(|(frame_number, timestamp, yolo, ocr, face, pose, uuid)| {
|
||||
.map(|(frame_number, timestamp, yolo, ocr, face, uuid)| {
|
||||
let objects = yolo.as_ref().and_then(|v| {
|
||||
v.get("objects")
|
||||
.map(|o| o.as_array().cloned().unwrap_or_default())
|
||||
@@ -711,11 +705,6 @@ async fn search_frames_internal_v2(
|
||||
v.get("faces")
|
||||
.map(|f| f.as_array().cloned().unwrap_or_default())
|
||||
});
|
||||
let pose_persons = pose.as_ref().and_then(|v| {
|
||||
v.get("persons")
|
||||
.map(|p| p.as_array().cloned().unwrap_or_default())
|
||||
});
|
||||
|
||||
FrameResult {
|
||||
frame_number,
|
||||
timestamp,
|
||||
@@ -723,7 +712,7 @@ async fn search_frames_internal_v2(
|
||||
objects: objects.map(|arr| arr.iter().map(|v| v.clone()).collect()),
|
||||
ocr_texts,
|
||||
faces,
|
||||
pose_persons,
|
||||
pose_persons: None,
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
|
||||
Reference in New Issue
Block a user