pipeline 2 cost estimates

This commit is contained in:
Brandon Thomas committed 2026-04-23 17:03:29 -04:00
1 parent a782715cc5
commit c994bfcb4c
1 file changed
+31 -18
@@ -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<OmniGenVideoCostAndGenerateRequest>,
_server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<OmniGenVideoCostResponse>, 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,