fix(match3d): embed container reference image
This commit is contained in:
@@ -386,7 +386,7 @@ pub(super) async fn generate_match3d_background_image(
|
||||
require_match3d_oss_client(state)?;
|
||||
let settings = require_openai_image_settings(state)?;
|
||||
let http_client = build_openai_image_http_client(&settings)?;
|
||||
let reference_image = load_match3d_container_reference_image().await?;
|
||||
let reference_image = load_match3d_container_reference_image()?;
|
||||
let generated_background = create_openai_image_generation(
|
||||
&http_client,
|
||||
&settings,
|
||||
@@ -486,7 +486,7 @@ pub(super) async fn generate_match3d_container_image(
|
||||
require_match3d_oss_client(state)?;
|
||||
let settings = require_openai_image_settings(state)?;
|
||||
let http_client = build_openai_image_http_client(&settings)?;
|
||||
let reference_image = load_match3d_container_reference_image().await?;
|
||||
let reference_image = load_match3d_container_reference_image()?;
|
||||
let container_prompt = build_match3d_container_generation_prompt(config, prompt);
|
||||
let generated_container = create_openai_image_edit(
|
||||
&http_client,
|
||||
@@ -563,15 +563,10 @@ pub(super) fn merge_match3d_container_image_into_background_asset(
|
||||
}
|
||||
}
|
||||
|
||||
async fn load_match3d_container_reference_image() -> Result<OpenAiReferenceImage, AppError> {
|
||||
let bytes = tokio::fs::read(MATCH3D_CONTAINER_REFERENCE_IMAGE_PATH)
|
||||
.await
|
||||
.map_err(|error| {
|
||||
AppError::from_status(StatusCode::INTERNAL_SERVER_ERROR).with_details(json!({
|
||||
"provider": MATCH3D_AGENT_PROVIDER,
|
||||
"message": format!("读取抓大鹅容器参考图失败:{error}"),
|
||||
}))
|
||||
})?;
|
||||
pub(super) fn load_match3d_container_reference_image() -> Result<OpenAiReferenceImage, AppError> {
|
||||
// 中文注释:生产 API 单独发布二进制,Web 静态资源可能在另一轮流水线发布。
|
||||
// 容器参考图属于后端生图协议输入,必须随 api-server 编译进二进制,不能依赖运行时 cwd 下存在 public/。
|
||||
let bytes = MATCH3D_CONTAINER_REFERENCE_IMAGE_BYTES.to_vec();
|
||||
if bytes.is_empty() {
|
||||
return Err(
|
||||
AppError::from_status(StatusCode::INTERNAL_SERVER_ERROR).with_details(json!({
|
||||
@@ -992,7 +987,9 @@ pub(super) fn normalize_match3d_public_reference_image_path(source: &str) -> Opt
|
||||
) {
|
||||
return None;
|
||||
}
|
||||
Some(format!("public/{source}"))
|
||||
Some(format!(
|
||||
"{MATCH3D_PUBLIC_REFERENCE_IMAGE_PATH_PREFIX}{source}"
|
||||
))
|
||||
}
|
||||
|
||||
pub(super) fn collect_match3d_cover_reference_image_sources(
|
||||
|
||||
Reference in New Issue
Block a user