mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 01:18:34 +00:00
cleanup
This commit is contained in:
1 parent
8ee73fda19
commit
31385ea2c7
3 files changed
+32
-30
No files matched your search
+9
-3
@@ -26,6 +26,7 @@ use tokens::tokens::media_files::MediaFileToken;
|
||||
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::hydrate_router_request::hydrate_to_router_request;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::insert_fal_job::insert_fal_job;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::insert_seedance2pro_jobs::insert_seedance2pro_jobs;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::pipeline_v1::run_pipeline_v1::{run_pipeline_v1, RunPipelineV1Args};
|
||||
@@ -159,6 +160,10 @@ pub async fn omni_gen_video_generate_handler(
|
||||
&mut mysql_connection,
|
||||
).await?;
|
||||
|
||||
// ==================== HYDRATE ROUTER REQUEST ==================== //
|
||||
|
||||
let router_builder = hydrate_to_router_request(&request)?;
|
||||
|
||||
// ==================== PIPELINE DISPATCH ==================== //
|
||||
|
||||
let use_v2 = match request.model {
|
||||
@@ -169,7 +174,7 @@ pub async fn omni_gen_video_generate_handler(
|
||||
|
||||
let pipeline_result = if use_v2 {
|
||||
run_pipeline_v2(RunPipelineV2Args {
|
||||
request: &request,
|
||||
router_builder: &router_builder,
|
||||
server_state: &server_state,
|
||||
mysql_connection: &mut mysql_connection,
|
||||
user_token,
|
||||
@@ -179,6 +184,7 @@ pub async fn omni_gen_video_generate_handler(
|
||||
} else {
|
||||
run_pipeline_v1(RunPipelineV1Args {
|
||||
request: &request,
|
||||
router_builder: &router_builder,
|
||||
server_state: &server_state,
|
||||
mysql_connection: &mut mysql_connection,
|
||||
user_token,
|
||||
@@ -208,8 +214,8 @@ pub async fn omni_gen_video_generate_handler(
|
||||
maybe_negative_prompt: request.negative_prompt.as_deref(),
|
||||
maybe_other_args: None,
|
||||
maybe_generation_mode: None,
|
||||
maybe_aspect_ratio: None,
|
||||
maybe_resolution: None,
|
||||
maybe_aspect_ratio: request.aspect_ratio,
|
||||
maybe_resolution: request.resolution,
|
||||
maybe_batch_count: request.video_batch_count.map(|c| c as u8),
|
||||
maybe_generate_audio: request.generate_audio,
|
||||
maybe_duration_seconds: request.duration_seconds.map(|d| d as u32),
|
||||
|
||||
+14
-15
@@ -17,7 +17,6 @@ use tokens::tokens::users::UserToken;
|
||||
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::bill_wallet::bill_wallet;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::hydrate_router_request::hydrate_to_router_request;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::pipeline_result::PipelineResult;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::pipeline_v1::execute::execute_fal::execute_generation_fal;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::pipeline_v1::execute::execute_kinovi::execute_generation_kinovi;
|
||||
@@ -27,6 +26,7 @@ use crate::state::server_state::ServerState;
|
||||
|
||||
pub struct RunPipelineV1Args<'a> {
|
||||
pub request: &'a OmniGenVideoCostAndGenerateRequest,
|
||||
pub router_builder: &'a GenerateVideoRequestBuilder,
|
||||
pub server_state: &'a ServerState,
|
||||
pub mysql_connection: &'a mut sqlx::pool::PoolConnection<sqlx::MySql>,
|
||||
pub user_token: &'a UserToken,
|
||||
@@ -39,6 +39,7 @@ pub struct RunPipelineV1Args<'a> {
|
||||
pub async fn run_pipeline_v1(args: RunPipelineV1Args<'_>) -> Result<PipelineResult, AdvancedCommonWebError> {
|
||||
let RunPipelineV1Args {
|
||||
request,
|
||||
router_builder,
|
||||
server_state,
|
||||
mysql_connection,
|
||||
user_token,
|
||||
@@ -59,12 +60,10 @@ pub async fn run_pipeline_v1(args: RunPipelineV1Args<'_>) -> Result<PipelineResu
|
||||
|
||||
// ── Cost estimate (Artcraft provider — what we bill on) ──
|
||||
|
||||
let initial = hydrate_to_router_request(request)?;
|
||||
|
||||
let cost = {
|
||||
let cost_request = GenerateVideoRequestBuilder {
|
||||
provider: Provider::Artcraft,
|
||||
..initial.clone()
|
||||
..router_builder.clone()
|
||||
};
|
||||
let cost_plan = cost_request.build().map_err(|e| {
|
||||
warn!("Failed to build cost plan during video distillation: {}", e);
|
||||
@@ -87,23 +86,23 @@ pub async fn run_pipeline_v1(args: RunPipelineV1Args<'_>) -> Result<PipelineResu
|
||||
// ── Build the execution request ──
|
||||
|
||||
let exec_request = GenerateVideoRequestBuilder {
|
||||
model: initial.model,
|
||||
model: router_builder.model,
|
||||
provider: execution_provider,
|
||||
prompt: initial.prompt,
|
||||
negative_prompt: initial.negative_prompt,
|
||||
prompt: router_builder.prompt.clone(),
|
||||
negative_prompt: router_builder.negative_prompt.clone(),
|
||||
start_frame,
|
||||
end_frame,
|
||||
reference_images,
|
||||
reference_videos,
|
||||
reference_audio,
|
||||
reference_character_tokens: initial.reference_character_tokens.clone(),
|
||||
resolution: initial.resolution,
|
||||
aspect_ratio: initial.aspect_ratio,
|
||||
duration_seconds: initial.duration_seconds,
|
||||
video_batch_count: initial.video_batch_count,
|
||||
generate_audio: initial.generate_audio,
|
||||
request_mismatch_mitigation_strategy: initial.request_mismatch_mitigation_strategy,
|
||||
idempotency_token: initial.idempotency_token,
|
||||
reference_character_tokens: router_builder.reference_character_tokens.clone(),
|
||||
resolution: router_builder.resolution,
|
||||
aspect_ratio: router_builder.aspect_ratio,
|
||||
duration_seconds: router_builder.duration_seconds,
|
||||
video_batch_count: router_builder.video_batch_count,
|
||||
generate_audio: router_builder.generate_audio,
|
||||
request_mismatch_mitigation_strategy: router_builder.request_mismatch_mitigation_strategy,
|
||||
idempotency_token: router_builder.idempotency_token.clone(),
|
||||
};
|
||||
|
||||
let plan = exec_request.build().map_err(|e| {
|
||||
|
||||
+9
-12
@@ -2,14 +2,12 @@ use std::collections::HashMap;
|
||||
|
||||
use log::{error, info, warn};
|
||||
use sqlx::pool::PoolConnection;
|
||||
use url::Url;
|
||||
|
||||
use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost_and_generate_request::OmniGenVideoCostAndGenerateRequest;
|
||||
use artcraft_router::api::common_video_model::CommonVideoModel;
|
||||
use artcraft_router::api::provider::Provider;
|
||||
use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder;
|
||||
use artcraft_router::generate::generate_video::generate_video_response::GenerateVideoResponse;
|
||||
use artcraft_router::generate::generate_video_v2::video_generation_draft_context::VideoGenerationDraftContext;
|
||||
use artcraft_router::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
|
||||
use enums::common::generation::common_video_model::CommonVideoModel;
|
||||
use tokens::tokens::characters::CharacterToken;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
use tokens::tokens::users::UserToken;
|
||||
@@ -18,12 +16,11 @@ use crate::http_server::common_responses::advanced_common_web_error::AdvancedCom
|
||||
use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::bill_wallet::bill_wallet;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::build_router_client::build_router_client;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::hydrate_router_request::hydrate_to_router_request;
|
||||
use crate::http_server::endpoints::omni_gen::generate::video::helpers::pipeline_result::PipelineResult;
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
pub struct RunPipelineV2Args<'a> {
|
||||
pub request: &'a OmniGenVideoCostAndGenerateRequest,
|
||||
pub router_builder: &'a GenerateVideoRequestBuilder,
|
||||
pub server_state: &'a ServerState,
|
||||
pub mysql_connection: &'a mut PoolConnection<sqlx::MySql>,
|
||||
pub user_token: &'a UserToken,
|
||||
@@ -33,7 +30,7 @@ pub struct RunPipelineV2Args<'a> {
|
||||
|
||||
pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result<PipelineResult, AdvancedCommonWebError> {
|
||||
let RunPipelineV2Args {
|
||||
request,
|
||||
router_builder,
|
||||
server_state,
|
||||
mysql_connection,
|
||||
user_token,
|
||||
@@ -41,14 +38,14 @@ pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result<PipelineResu
|
||||
kinovi_character_id_map,
|
||||
} = args;
|
||||
|
||||
let provider = match request.model {
|
||||
Some(CommonVideoModel::Seedance2p0) => Provider::Seedance2Pro,
|
||||
Some(CommonVideoModel::Seedance2p0Fast) => Provider::Seedance2Pro,
|
||||
let provider = match router_builder.model {
|
||||
CommonVideoModel::Seedance2p0 => Provider::Seedance2Pro,
|
||||
CommonVideoModel::Seedance2p0Fast => Provider::Seedance2Pro,
|
||||
_ => Provider::Fal,
|
||||
};
|
||||
|
||||
// 1. Build execution request
|
||||
let mut exec_builder = hydrate_to_router_request(request)?;
|
||||
let mut exec_builder = router_builder.clone();
|
||||
exec_builder.provider = provider;
|
||||
|
||||
let draft_or_request = exec_builder.build2()
|
||||
@@ -58,7 +55,7 @@ pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result<PipelineResu
|
||||
})?;
|
||||
|
||||
// 2. Calculate cost (swap provider to Artcraft for billing)
|
||||
let mut cost_builder = hydrate_to_router_request(request)?;
|
||||
let mut cost_builder = router_builder.clone();
|
||||
cost_builder.provider = Provider::Artcraft;
|
||||
|
||||
let cost = cost_builder.build2()
|
||||
|
||||
Reference in new issue
Block a user