From 67cfdf11bd0a2de09cfea369e4fe649c3d6d0b0e Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 20 Aug 2025 18:26:21 -0400 Subject: [PATCH] serve batch token in job statuses --- .../web/batch_get_inference_job_status.rs | 7 +++++++ .../generic_inference/web/get_inference_job_status.rs | 6 ++++++ .../src/queries/generic_inference/web/job_status.rs | 3 +++ .../src/queries/generic_inference/web/list_session_jobs.rs | 7 +++++++ .../api/artcraft_api_defs/src/jobs/list_session_jobs.rs | 4 ++++ .../inference_job/list/list_session_jobs_handler.rs | 1 + 6 files changed, 28 insertions(+) diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs index 04bb1751cc..9374d36ffb 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs @@ -11,6 +11,7 @@ use enums::common::job_status_plus::JobStatusPlus; use enums::traits::mysql_from_row::MySqlFromRow; use errors::AnyhowResult; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; +use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::users::UserToken; use tokens::traits::mysql_token_from_row::MySqlTokenFromRow; @@ -102,6 +103,7 @@ SELECT jobs.on_success_result_entity_type as maybe_result_entity_type, jobs.on_success_result_entity_token as maybe_result_entity_token, + jobs.on_success_result_batch_token as maybe_result_batch_token, model_weights.title as maybe_model_weights_title, tts_models.title as maybe_tts_model_title, @@ -230,6 +232,9 @@ fn raw_records_to_public_result(records: Vec) -> V ResultDetails { entity_type: entity_type.to_string(), entity_token: entity_token.to_string(), + maybe_batch_token: record.maybe_result_batch_token + .as_ref() + .map(|token| BatchGenerationToken::new_from_str(token)), public_bucket_location_or_hash: public_bucket_hash.to_string(), maybe_media_file_public_bucket_prefix: record.maybe_media_file_public_bucket_prefix.clone(), maybe_media_file_public_bucket_extension: record.maybe_media_file_public_bucket_extension.clone(), @@ -293,6 +298,7 @@ struct RawGenericInferenceJobStatus { pub maybe_result_entity_type: Option, pub maybe_result_entity_token: Option, + pub maybe_result_batch_token: Option, pub maybe_model_weights_title: Option, pub maybe_tts_model_title: Option, @@ -349,6 +355,7 @@ impl FromRow<'_, MySqlRow> for RawGenericInferenceJobStatus { maybe_inference_args: row.try_get("maybe_inference_args")?, maybe_result_entity_type: row.try_get("maybe_result_entity_type")?, maybe_result_entity_token: row.try_get("maybe_result_entity_token")?, + maybe_result_batch_token: row.try_get("maybe_result_batch_token")?, maybe_model_weights_title: row.try_get("maybe_model_weights_title")?, maybe_tts_model_title: row.try_get("maybe_tts_model_title")?, maybe_voice_conversion_model_title: row.try_get("maybe_voice_conversion_model_title")?, diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs index 7df4059661..a7d46edef1 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs @@ -11,6 +11,7 @@ use enums::common::job_status_plus::JobStatusPlus; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use errors::AnyhowResult; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; +use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::users::UserToken; @@ -61,6 +62,7 @@ SELECT jobs.on_success_result_entity_type as maybe_result_entity_type, jobs.on_success_result_entity_token as maybe_result_entity_token, + jobs.on_success_result_batch_token as maybe_result_batch_token, model_weights.title as maybe_model_weights_title, tts_models.title as maybe_tts_model_title, @@ -206,6 +208,9 @@ fn raw_record_to_public_result(record: RawGenericInferenceJobStatus) -> GenericI ResultDetails { entity_type: entity_type.to_string(), entity_token: entity_token.to_string(), + maybe_batch_token: record.maybe_result_batch_token + .as_ref() + .map(|token| BatchGenerationToken::new_from_str(token)), public_bucket_location_or_hash: public_bucket_hash.to_string(), maybe_media_file_public_bucket_prefix: record.maybe_media_file_public_bucket_prefix.clone(), maybe_media_file_public_bucket_extension: record.maybe_media_file_public_bucket_extension.clone(), @@ -267,6 +272,7 @@ struct RawGenericInferenceJobStatus { pub maybe_result_entity_type: Option, pub maybe_result_entity_token: Option, + pub maybe_result_batch_token: Option, pub maybe_model_weights_title: Option, pub maybe_tts_model_title: Option, diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs index b543a1db28..1da17b3106 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs @@ -6,6 +6,7 @@ use enums::by_table::generic_inference_jobs::inference_job_product_category::Inf use enums::common::job_status_plus::JobStatusPlus; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; +use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::users::UserToken; @@ -67,6 +68,8 @@ pub struct ResultDetails { pub entity_type: String, pub entity_token: String, + pub maybe_batch_token: Option, + /// The bucket storage hash (for vc and media_files) or full path (for tts) pub public_bucket_location_or_hash: String, pub maybe_media_file_public_bucket_prefix: Option, diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs index 08ff6720b1..6b9f220002 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs @@ -13,6 +13,7 @@ use enums::common::job_status_plus::JobStatusPlus; use enums::traits::mysql_from_row::MySqlFromRow; use errors::AnyhowResult; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; +use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::users::UserToken; use tokens::traits::mysql_token_from_row::MySqlTokenFromRow; @@ -168,6 +169,7 @@ SELECT jobs.on_success_result_entity_type as maybe_result_entity_type, jobs.on_success_result_entity_token as maybe_result_entity_token, + jobs.on_success_result_batch_token as maybe_result_batch_token, model_weights.title as maybe_model_weights_title, tts_models.title as maybe_tts_model_title, @@ -296,6 +298,9 @@ fn raw_records_to_public_result(records: Vec) -> V ResultDetails { entity_type: entity_type.to_string(), entity_token: entity_token.to_string(), + maybe_batch_token: record.maybe_result_batch_token + .as_ref() + .map(|token| BatchGenerationToken::new_from_str(token)), public_bucket_location_or_hash: public_bucket_hash.to_string(), maybe_media_file_public_bucket_prefix: record.maybe_media_file_public_bucket_prefix.clone(), maybe_media_file_public_bucket_extension: record.maybe_media_file_public_bucket_extension.clone(), @@ -359,6 +364,7 @@ struct RawGenericInferenceJobStatus { pub maybe_result_entity_type: Option, pub maybe_result_entity_token: Option, + pub maybe_result_batch_token: Option, pub maybe_model_weights_title: Option, pub maybe_tts_model_title: Option, @@ -415,6 +421,7 @@ impl FromRow<'_, MySqlRow> for RawGenericInferenceJobStatus { maybe_inference_args: row.try_get("maybe_inference_args")?, maybe_result_entity_type: row.try_get("maybe_result_entity_type")?, maybe_result_entity_token: row.try_get("maybe_result_entity_token")?, + maybe_result_batch_token: row.try_get("maybe_result_batch_token")?, maybe_model_weights_title: row.try_get("maybe_model_weights_title")?, maybe_tts_model_title: row.try_get("maybe_tts_model_title")?, maybe_voice_conversion_model_title: row.try_get("maybe_voice_conversion_model_title")?, diff --git a/crates/schema/public/api/artcraft_api_defs/src/jobs/list_session_jobs.rs b/crates/schema/public/api/artcraft_api_defs/src/jobs/list_session_jobs.rs index 281fc20a2d..344f2e807a 100644 --- a/crates/schema/public/api/artcraft_api_defs/src/jobs/list_session_jobs.rs +++ b/crates/schema/public/api/artcraft_api_defs/src/jobs/list_session_jobs.rs @@ -9,6 +9,7 @@ use serde::Deserialize; use serde::Serialize; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use utoipa::{IntoParams, ToSchema}; +use tokens::tokens::batch_generations::BatchGenerationToken; pub const LIST_SESSION_JOBS_URL_PATH: &str = "/v1/jobs/session"; @@ -111,6 +112,9 @@ pub struct ListSessionStatusDetailsResponse { pub struct ListSessionResultDetailsResponse { pub entity_type: String, pub entity_token: String, + + /// If generated as part of a batch, the batch token. + pub maybe_batch_token: Option, /// (DEPRECATED) URL path to the media file #[deprecated(note="This field doesn't point to the full URL. Use media_links instead to leverage the CDN.")] diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs index 43a1a691ba..66e332533c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs @@ -358,6 +358,7 @@ fn db_record_to_response_payload( ListSessionResultDetailsResponse { entity_type: result_details.entity_type, entity_token: result_details.entity_token, + maybe_batch_token: result_details.maybe_batch_token, media_links: MediaLinksBuilder::from_rooted_path(media_domain, &public_bucket_media_path), maybe_public_bucket_media_path: Some(public_bucket_media_path), maybe_successfully_completed_at: result_details.maybe_successfully_completed_at,