From fd0b3d4366fee58c818af870c5a4ef9524ba6584 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Thu, 16 Apr 2026 01:07:21 -0400 Subject: [PATCH] fix planning "fast" --- ...e_video_cost_seedance2pro_seedance2p0_fast.rs | 4 ++-- .../execute_seedance2pro_seedance2p0_fast.rs | 4 ++-- ...nerate_video_seedance2pro_seedance2p0_fast.rs | 16 ++++++++++++++-- .../generate_video/video_generation_plan.rs | 3 ++- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs index dc19144d43..95f412f491 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs @@ -1,11 +1,11 @@ use seedance2pro_client::creds::seedance2pro_session::Seedance2ProSession; use seedance2pro_client::requests::generate_video::generate_video::{GenerateVideoArgs, ModelType, Resolution}; -use crate::generate::generate_video::plan::seedance2pro::plan_generate_video_seedance2pro_seedance2p0::PlanSeedance2proSeedance2p0; +use crate::generate::generate_video::plan::seedance2pro::plan_generate_video_seedance2pro_seedance2p0_fast::PlanSeedance2proSeedance2p0Fast; use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; pub(crate) fn estimate_video_cost_seedance2pro_seedance2p0_fast( - plan: &PlanSeedance2proSeedance2p0, + plan: &PlanSeedance2proSeedance2p0Fast, ) -> VideoGenerationCostEstimate { // A dummy session is sufficient — cost estimation does not make any network calls. let dummy_session = Seedance2ProSession::from_cookies_string(String::new()); diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/seedance2pro/execute_seedance2pro_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/seedance2pro/execute_seedance2pro_seedance2p0_fast.rs index 8ff46cca6a..46103fe143 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/seedance2pro/execute_seedance2pro_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/seedance2pro/execute_seedance2pro_seedance2p0_fast.rs @@ -4,7 +4,7 @@ use crate::errors::provider_error::ProviderError; use crate::generate::generate_video::generate_video_response::{ GenerateVideoResponse, Seedance2proVideoResponsePayload, }; -use crate::generate::generate_video::plan::seedance2pro::plan_generate_video_seedance2pro_seedance2p0::PlanSeedance2proSeedance2p0; +use crate::generate::generate_video::plan::seedance2pro::plan_generate_video_seedance2pro_seedance2p0_fast::PlanSeedance2proSeedance2p0Fast; use crate::generate::generate_video::execute::seedance2pro::execute_seedance2pro_seedance2p0::{ upload_optional_url, upload_optional_url_list, }; @@ -17,7 +17,7 @@ use seedance2pro_client::requests::generate_video::generate_video::{ /// Identical to the Seedance 2.0 Pro executor except it uses /// `ModelType::Seedance2Fast` instead of `ModelType::Seedance2Pro`. pub async fn execute_seedance2pro_seedance2p0_fast( - plan: &PlanSeedance2proSeedance2p0, + plan: &PlanSeedance2proSeedance2p0Fast, seedance2pro_client: &RouterSeedance2ProClient, ) -> Result { let session = &seedance2pro_client.session; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs index 921e2a3738..c20f7f3a23 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs @@ -7,10 +7,22 @@ use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigati use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; -use crate::generate::generate_video::plan::seedance2pro::plan_generate_video_seedance2pro_seedance2p0::PlanSeedance2proSeedance2p0; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use seedance2pro_client::requests::generate_video::generate_video::{BatchCount, Resolution}; +#[derive(Debug, Clone)] +pub struct PlanSeedance2proSeedance2p0Fast { + pub prompt: Option, + pub start_frame_url: Option, + pub end_frame_url: Option, + pub reference_image_urls: Option>, + pub reference_video_urls: Option>, + pub reference_audio_urls: Option>, + pub resolution: Resolution, + pub duration_seconds: u8, + pub batch_count: BatchCount, +} + pub fn plan_generate_video_seedance2pro_seedance2p0_fast<'a>( request: &'a GenerateVideoRequest<'a>, ) -> Result, ArtcraftRouterError> { @@ -26,7 +38,7 @@ pub fn plan_generate_video_seedance2pro_seedance2p0_fast<'a>( let batch_count = plan_batch_count(request.video_batch_count, strategy)?; let duration_seconds = plan_duration(request.duration_seconds, strategy)?; - Ok(VideoGenerationPlan::Seedance2proSeedance2p0Fast(PlanSeedance2proSeedance2p0 { + Ok(VideoGenerationPlan::Seedance2proSeedance2p0Fast(PlanSeedance2proSeedance2p0Fast { prompt: request.prompt.map(|p| p.to_string()), start_frame_url, end_frame_url, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/video_generation_plan.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/video_generation_plan.rs index adc78d798f..d008dc7b74 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/video_generation_plan.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/video_generation_plan.rs @@ -110,6 +110,7 @@ use crate::generate::generate_video::plan::fal::plan_generate_video_fal_veo_3p1: use crate::generate::generate_video::plan::fal::plan_generate_video_fal_veo_3p1_fast::PlanFalVeo3p1Fast; use crate::generate::generate_video::plan::muapi::plan_generate_video_muapi_seedance2p0::PlanMuapiSeedance2p0; use crate::generate::generate_video::plan::seedance2pro::plan_generate_video_seedance2pro_seedance2p0::PlanSeedance2proSeedance2p0; +use crate::generate::generate_video::plan::seedance2pro::plan_generate_video_seedance2pro_seedance2p0_fast::PlanSeedance2proSeedance2p0Fast; use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; #[derive(Debug)] @@ -134,7 +135,7 @@ pub enum VideoGenerationPlan<'a> { ArtcraftVeo3p1Fast(PlanArtcraftVeo3p1Fast<'a>), MuapiSeedance2p0(PlanMuapiSeedance2p0), Seedance2proSeedance2p0(PlanSeedance2proSeedance2p0), - Seedance2proSeedance2p0Fast(PlanSeedance2proSeedance2p0), + Seedance2proSeedance2p0Fast(PlanSeedance2proSeedance2p0Fast), FalVeo2(PlanFalVeo2), FalVeo3(PlanFalVeo3), FalVeo3Fast(PlanFalVeo3Fast),