diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs index 926de9ed9a..9b065b2cf2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs @@ -6,6 +6,7 @@ use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost use artcraft_api_defs::omni_gen::cost_response::omni_gen_video_cost_response::OmniGenVideoCostResponse; use artcraft_router::api::provider::Provider; use artcraft_router::errors::artcraft_router_error::ArtcraftRouterError; +use artcraft_router::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; use log::warn; use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; @@ -29,27 +30,39 @@ pub async fn omni_gen_video_cost_handler( request: Json, _server_state: web::Data>, ) -> Result, AdvancedCommonWebError> { - let mut generate_request = hydrate_to_router_request(&request)?; - generate_request.provider = Provider::Artcraft; + let mut builder = hydrate_to_router_request(&request)?; + builder.provider = Provider::Artcraft; - let plan = match generate_request.build() { - Ok(plan) => plan, - Err(ArtcraftRouterError::UnsupportedModel(_)) => { - generate_request.provider = Provider::Fal; - generate_request.build() - .map_err(|e| { - warn!("Failed to build Fal cost plan: {}", e); - AdvancedCommonWebError::from_error(e) - })? - } - Err(e) => { - warn!("Failed to build cost plan: {}", e); - return Err(AdvancedCommonWebError::from_error(e)); - } + let estimate = if builder.use_new_builder() { + builder.build2() + .map_err(|e| { + warn!("Failed to build2 cost estimate: {}", e); + AdvancedCommonWebError::from_error(e) + })? + .estimate_cost() + .map_err(|e| { + warn!("Failed to estimate cost (v2): {}", e); + AdvancedCommonWebError::from_error(e) + })? + } else { + let plan = match builder.build() { + Ok(plan) => plan, + Err(ArtcraftRouterError::UnsupportedModel(_)) => { + builder.provider = Provider::Fal; + builder.build() + .map_err(|e| { + warn!("Failed to build Fal cost plan: {}", e); + AdvancedCommonWebError::from_error(e) + })? + } + Err(e) => { + warn!("Failed to build cost plan: {}", e); + return Err(AdvancedCommonWebError::from_error(e)); + } + }; + plan.estimate_costs() }; - let estimate = plan.estimate_costs(); - Ok(Json(OmniGenVideoCostResponse { success: true, cost_in_credits: estimate.cost_in_credits,