feat: add inline external generation mode
This commit is contained in:
@@ -648,6 +648,53 @@ pub async fn execute_puzzle_agent_action(
|
||||
image_model: payload.image_model.clone(),
|
||||
requested_at_micros: now,
|
||||
};
|
||||
if state
|
||||
.root_state()
|
||||
.config
|
||||
.external_generation_mode
|
||||
.is_inline()
|
||||
{
|
||||
tracing::info!(
|
||||
provider = PUZZLE_AGENT_API_BASE_PROVIDER,
|
||||
session_id = %compile_session_id,
|
||||
owner_user_id = %owner_user_id,
|
||||
external_generation_mode = state.root_state().config.external_generation_mode.as_str(),
|
||||
"拼图首关草稿生成使用 inline 模式同步执行"
|
||||
);
|
||||
let session = execute_puzzle_compile_draft_worker_job(
|
||||
&state,
|
||||
&request_context,
|
||||
worker_payload,
|
||||
ExternalGenerationWriteLeaseGuard::inline(),
|
||||
)
|
||||
.await
|
||||
.map_err(|error| {
|
||||
puzzle_error_response(
|
||||
&request_context,
|
||||
PUZZLE_AGENT_API_BASE_PROVIDER,
|
||||
error.into_app_error(),
|
||||
)
|
||||
})?;
|
||||
return Ok(json_success_body(
|
||||
Some(&request_context),
|
||||
PuzzleAgentActionResponse {
|
||||
operation: PuzzleAgentOperationResponse {
|
||||
operation_id: build_prefixed_uuid_id("extgen-inline-"),
|
||||
operation_type: "compile_puzzle_draft".to_string(),
|
||||
status: "completed".to_string(),
|
||||
phase_label: "首关拼图草稿".to_string(),
|
||||
phase_detail: if ai_redraw {
|
||||
"首关草稿生成已完成。".to_string()
|
||||
} else {
|
||||
"首关草稿编译已完成。".to_string()
|
||||
},
|
||||
progress: 100,
|
||||
error: None,
|
||||
},
|
||||
session: map_puzzle_agent_session_response(session),
|
||||
},
|
||||
));
|
||||
}
|
||||
let request_payload_json = serde_json::to_string(&worker_payload).map_err(|error| {
|
||||
puzzle_error_response(
|
||||
&request_context,
|
||||
@@ -811,6 +858,49 @@ pub async fn execute_puzzle_agent_action(
|
||||
levels_json,
|
||||
requested_at_micros: now,
|
||||
};
|
||||
if state
|
||||
.root_state()
|
||||
.config
|
||||
.external_generation_mode
|
||||
.is_inline()
|
||||
{
|
||||
tracing::info!(
|
||||
provider = PUZZLE_AGENT_API_BASE_PROVIDER,
|
||||
session_id = %session_id,
|
||||
owner_user_id = %owner_user_id,
|
||||
external_generation_mode = state.root_state().config.external_generation_mode.as_str(),
|
||||
"拼图关卡图片生成使用 inline 模式同步执行"
|
||||
);
|
||||
let session = execute_puzzle_generate_images_worker_job(
|
||||
&state,
|
||||
&request_context,
|
||||
worker_payload,
|
||||
ExternalGenerationWriteLeaseGuard::inline(),
|
||||
)
|
||||
.await
|
||||
.map_err(|error| {
|
||||
puzzle_error_response(
|
||||
&request_context,
|
||||
PUZZLE_AGENT_API_BASE_PROVIDER,
|
||||
error.into_app_error(),
|
||||
)
|
||||
})?;
|
||||
return Ok(json_success_body(
|
||||
Some(&request_context),
|
||||
PuzzleAgentActionResponse {
|
||||
operation: PuzzleAgentOperationResponse {
|
||||
operation_id: build_prefixed_uuid_id("extgen-inline-"),
|
||||
operation_type: "generate_puzzle_images".to_string(),
|
||||
status: "completed".to_string(),
|
||||
phase_label: "拼图图片生成".to_string(),
|
||||
phase_detail: "关卡图片生成已完成。".to_string(),
|
||||
progress: 100,
|
||||
error: None,
|
||||
},
|
||||
session: map_puzzle_agent_session_response(session),
|
||||
},
|
||||
));
|
||||
}
|
||||
let request_payload_json = serde_json::to_string(&worker_payload).map_err(|error| {
|
||||
puzzle_error_response(
|
||||
&request_context,
|
||||
@@ -908,6 +998,49 @@ pub async fn execute_puzzle_agent_action(
|
||||
levels_json,
|
||||
requested_at_micros: now,
|
||||
};
|
||||
if state
|
||||
.root_state()
|
||||
.config
|
||||
.external_generation_mode
|
||||
.is_inline()
|
||||
{
|
||||
tracing::info!(
|
||||
provider = PUZZLE_AGENT_API_BASE_PROVIDER,
|
||||
session_id = %session_id,
|
||||
owner_user_id = %owner_user_id,
|
||||
external_generation_mode = state.root_state().config.external_generation_mode.as_str(),
|
||||
"拼图 UI 背景图生成使用 inline 模式同步执行"
|
||||
);
|
||||
let session = execute_puzzle_generate_ui_background_worker_job(
|
||||
&state,
|
||||
&request_context,
|
||||
worker_payload,
|
||||
ExternalGenerationWriteLeaseGuard::inline(),
|
||||
)
|
||||
.await
|
||||
.map_err(|error| {
|
||||
puzzle_error_response(
|
||||
&request_context,
|
||||
PUZZLE_AGENT_API_BASE_PROVIDER,
|
||||
error.into_app_error(),
|
||||
)
|
||||
})?;
|
||||
return Ok(json_success_body(
|
||||
Some(&request_context),
|
||||
PuzzleAgentActionResponse {
|
||||
operation: PuzzleAgentOperationResponse {
|
||||
operation_id: build_prefixed_uuid_id("extgen-inline-"),
|
||||
operation_type: "generate_puzzle_ui_background".to_string(),
|
||||
status: "completed".to_string(),
|
||||
phase_label: "UI 背景图生成".to_string(),
|
||||
phase_detail: "拼图 UI 背景图生成已完成。".to_string(),
|
||||
progress: 100,
|
||||
error: None,
|
||||
},
|
||||
session: map_puzzle_agent_session_response(session),
|
||||
},
|
||||
));
|
||||
}
|
||||
let request_payload_json = serde_json::to_string(&worker_payload).map_err(|error| {
|
||||
puzzle_error_response(
|
||||
&request_context,
|
||||
|
||||
Reference in New Issue
Block a user