diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/api_providers/seedance2pro/insert_generic_inference_job_for_seedance2pro_queue_with_apriori_job_token.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/api_providers/seedance2pro/insert_generic_inference_job_for_seedance2pro_queue_with_apriori_job_token.rs index 021b3d883c..9139375556 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/api_providers/seedance2pro/insert_generic_inference_job_for_seedance2pro_queue_with_apriori_job_token.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/api_providers/seedance2pro/insert_generic_inference_job_for_seedance2pro_queue_with_apriori_job_token.rs @@ -70,28 +70,46 @@ pub async fn insert_generic_inference_job_for_seedance2pro_queue_with_apriori_jo ) -> Result where E: 'e + Executor<'c, Database = MySql> { + let is_image_model = match args.maybe_model_type { + Some(CommonModelType::Midjourney7) | + Some(CommonModelType::Midjourney7Niji) | + Some(CommonModelType::Midjourney8) => true, + _ => false, + }; + let ( job_type, external_third_party, product_category - ) = match args.kinovi_version { - KinoviVersion::Volcengine => ( + ) = match (args.kinovi_version, is_image_model) { + (KinoviVersion::Volcengine, true) => ( InferenceJobType::Seedance2ProQueue, InferenceJobExternalThirdParty::Seedance2Pro, InferenceJobProductCategory::Seedance2ProVideo, ), - KinoviVersion::BytePlus => ( + (KinoviVersion::Volcengine, false) => ( + InferenceJobType::Seedance2ProQueue, + InferenceJobExternalThirdParty::Seedance2Pro, + InferenceJobProductCategory::Seedance2ProImage, + ), + (KinoviVersion::BytePlus, _) => ( InferenceJobType::Seedance2ProAltQueue, InferenceJobExternalThirdParty::Seedance2ProAlt, InferenceJobProductCategory::Seedance2ProVideoAlt, ), - KinoviVersion::BytePlusUltra => ( + (KinoviVersion::BytePlusUltra, _) => ( InferenceJobType::Seedance2ProBytePlusUltraQueue, InferenceJobExternalThirdParty::Seedance2ProBytePlusUltra, InferenceJobProductCategory::Seedance2ProVideoBytePlusUltra, ), }; + let inference_category = if is_image_model { + InferenceCategory::ImageGeneration + } else { + InferenceCategory::VideoGeneration + }; + let record_id = insert_generic_inference_job_for_provider(InsertGenericInferenceJobForProviderArgs { apriori_job_token: args.apriori_job_token, uuid_idempotency_token: args.uuid_idempotency_token, @@ -99,7 +117,7 @@ pub async fn insert_generic_inference_job_for_seedance2pro_queue_with_apriori_jo external_third_party, external_third_party_id: args.maybe_external_third_party_id, product_category, - inference_category: InferenceCategory::VideoGeneration, + inference_category, maybe_model_type: args.maybe_model_type, maybe_prompt_token: args.maybe_prompt_token, maybe_wallet_ledger_entry_token: args.maybe_wallet_ledger_entry_token, diff --git a/crates/schema/public/enums/src/by_table/generic_inference_jobs/inference_job_product_category.rs b/crates/schema/public/enums/src/by_table/generic_inference_jobs/inference_job_product_category.rs index fb447351de..1ce6fc6eaf 100644 --- a/crates/schema/public/enums/src/by_table/generic_inference_jobs/inference_job_product_category.rs +++ b/crates/schema/public/enums/src/by_table/generic_inference_jobs/inference_job_product_category.rs @@ -53,6 +53,10 @@ pub enum InferenceJobProductCategory { #[serde(rename = "seedance2pro_character")] Seedance2ProCharacter, + /// Seedance 2 Pro / Kinovi: Midjourney image generation. + #[serde(rename = "seedance2pro_image")] + Seedance2ProImage, + // =============== SEEDANCE 2 PRO ALT =============== #[serde(rename = "seedance2pro_video_alt")] @@ -169,6 +173,7 @@ impl InferenceJobProductCategory { Self::BeebleVideo => "beeble_video", Self::Seedance2ProVideo => "seedance2pro_video", Self::Seedance2ProCharacter => "seedance2pro_character", + Self::Seedance2ProImage => "seedance2pro_image", Self::Seedance2ProVideoAlt => "seedance2pro_video_alt", Self::Seedance2ProVideoBytePlusUltra => "seedance2pro_video_bpu", Self::WorldlabsSplat => "worldlabs_splat", @@ -209,6 +214,7 @@ impl InferenceJobProductCategory { "beeble_video" => Ok(Self::BeebleVideo), "seedance2pro_video" => Ok(Self::Seedance2ProVideo), "seedance2pro_character" => Ok(Self::Seedance2ProCharacter), + "seedance2pro_image" => Ok(Self::Seedance2ProImage), "seedance2pro_video_alt" => Ok(Self::Seedance2ProVideoAlt), "seedance2pro_video_bpu" => Ok(Self::Seedance2ProVideoBytePlusUltra), "worldlabs_splat" => Ok(Self::WorldlabsSplat), @@ -252,6 +258,7 @@ impl InferenceJobProductCategory { Self::BeebleVideo, Self::Seedance2ProVideo, Self::Seedance2ProCharacter, + Self::Seedance2ProImage, Self::Seedance2ProVideoAlt, Self::Seedance2ProVideoBytePlusUltra, Self::WorldlabsSplat, @@ -301,6 +308,7 @@ mod tests { assert_serialization(InferenceJobProductCategory::BeebleVideo, "beeble_video"); assert_serialization(InferenceJobProductCategory::Seedance2ProVideo, "seedance2pro_video"); assert_serialization(InferenceJobProductCategory::Seedance2ProCharacter, "seedance2pro_character"); + assert_serialization(InferenceJobProductCategory::Seedance2ProImage, "seedance2pro_image"); assert_serialization(InferenceJobProductCategory::Seedance2ProVideoAlt, "seedance2pro_video_alt"); assert_serialization(InferenceJobProductCategory::Seedance2ProVideoBytePlusUltra, "seedance2pro_video_bpu"); assert_serialization(InferenceJobProductCategory::WorldlabsSplat, "worldlabs_splat"); @@ -340,6 +348,7 @@ mod tests { assert_eq!(InferenceJobProductCategory::BeebleVideo.to_str(), "beeble_video"); assert_eq!(InferenceJobProductCategory::Seedance2ProVideo.to_str(), "seedance2pro_video"); assert_eq!(InferenceJobProductCategory::Seedance2ProCharacter.to_str(), "seedance2pro_character"); + assert_eq!(InferenceJobProductCategory::Seedance2ProImage.to_str(), "seedance2pro_image"); assert_eq!(InferenceJobProductCategory::Seedance2ProVideoAlt.to_str(), "seedance2pro_video_alt"); assert_eq!(InferenceJobProductCategory::Seedance2ProVideoBytePlusUltra.to_str(), "seedance2pro_video_bpu"); assert_eq!(InferenceJobProductCategory::WorldlabsSplat.to_str(), "worldlabs_splat"); @@ -378,6 +387,7 @@ mod tests { assert_eq!(InferenceJobProductCategory::from_str("beeble_video").unwrap(), InferenceJobProductCategory::BeebleVideo); assert_eq!(InferenceJobProductCategory::from_str("seedance2pro_video").unwrap(), InferenceJobProductCategory::Seedance2ProVideo); assert_eq!(InferenceJobProductCategory::from_str("seedance2pro_character").unwrap(), InferenceJobProductCategory::Seedance2ProCharacter); + assert_eq!(InferenceJobProductCategory::from_str("seedance2pro_image").unwrap(), InferenceJobProductCategory::Seedance2ProImage); assert_eq!(InferenceJobProductCategory::from_str("seedance2pro_video_alt").unwrap(), InferenceJobProductCategory::Seedance2ProVideoAlt); assert_eq!(InferenceJobProductCategory::from_str("seedance2pro_video_bpu").unwrap(), InferenceJobProductCategory::Seedance2ProVideoBytePlusUltra); assert_eq!(InferenceJobProductCategory::from_str("worldlabs_splat").unwrap(), InferenceJobProductCategory::WorldlabsSplat); @@ -407,7 +417,7 @@ mod tests { #[test] fn all_variants() { // Static check - const EXPECTED_COUNT : usize = 35; + const EXPECTED_COUNT : usize = 36; assert_eq!(InferenceJobProductCategory::all_variants().len(), EXPECTED_COUNT); assert_eq!(InferenceJobProductCategory::iter().len(), EXPECTED_COUNT);