From ee872c644f9d2639d3bf20ced58be8d21f418c61 Mon Sep 17 00:00:00 2001 From: Asep Haryana Saputra <90584806+MythEclipse@users.noreply.github.com> Date: Sat, 23 May 2026 09:36:20 +0000 Subject: [PATCH] fix: align ML service response schemas --- apps/ml-service/src/error.rs | 9 +++++++-- apps/ml-service/src/routes.rs | 31 ------------------------------- 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/apps/ml-service/src/error.rs b/apps/ml-service/src/error.rs index 97226a7..5686001 100644 --- a/apps/ml-service/src/error.rs +++ b/apps/ml-service/src/error.rs @@ -3,7 +3,12 @@ use axum::{ response::{IntoResponse, Response}, Json, }; -use serde_json::json; +use serde::Serialize; + +#[derive(Debug, Serialize)] +pub struct ErrorResponse { + pub detail: String, +} #[derive(Debug)] pub enum ServiceError { @@ -20,7 +25,7 @@ impl IntoResponse for ServiceError { ServiceError::PredictionFailed(msg) => (StatusCode::INTERNAL_SERVER_ERROR, msg), }; - let body = Json(json!({ "detail": detail })); + let body = Json(ErrorResponse { detail }); (status, body).into_response() } } diff --git a/apps/ml-service/src/routes.rs b/apps/ml-service/src/routes.rs index ec0ba5e..892745f 100644 --- a/apps/ml-service/src/routes.rs +++ b/apps/ml-service/src/routes.rs @@ -17,17 +17,6 @@ pub struct MetadataResponse { pub labels: Vec, } -#[derive(Debug, Serialize, Deserialize)] -pub struct PredictionResponse { - pub predictions: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct PredictionResult { - pub label: String, - pub confidence: f32, -} - pub fn health_response(model_loaded: bool) -> HealthResponse { HealthResponse { status: "ok".to_string(), @@ -85,24 +74,4 @@ mod tests { vec!["Bercak Daun", "Daun Sehat", "Karat Daun", "Hawar Daun"] ); } - - #[test] - fn prediction_response_serializes() { - let response = PredictionResponse { - predictions: vec![ - PredictionResult { - label: "Bercak Daun".to_string(), - confidence: 0.95, - }, - PredictionResult { - label: "Daun Sehat".to_string(), - confidence: 0.05, - }, - ], - }; - - let json = serde_json::to_string(&response).expect("failed to serialize"); - assert!(json.contains("Bercak Daun")); - assert!(json.contains("0.95")); - } }