fix(image): record reference source metadata in request.json

This commit is contained in:
zhangheng
2026-05-18 16:34:58 +08:00
parent 45b6ce2063
commit 1a3d60fcf2

View File

@@ -214,6 +214,32 @@ def resolve_image_source(prefix: str) -> str | None:
return provided[0][1]
def describe_image_source(source: str | None, fallback_name: str) -> dict[str, str] | None:
if source is None:
return None
value = source.strip()
if not value:
return None
lowered = value.lower()
if lowered.startswith("data:image/"):
source_kind = "data_url"
filename = fallback_name
elif lowered.startswith(("http://", "https://")):
source_kind = "url"
filename = Path(urlparse(value).path).name or fallback_name
else:
source_kind = "file"
filename = Path(value).expanduser().name or fallback_name
return {
"source": value,
"kind": source_kind,
"filename": filename,
}
def safe_filename(filename: str, fallback: str, mime_type: str) -> str:
candidate = Path(filename).name.strip()
if not candidate:
@@ -476,6 +502,8 @@ def main() -> None:
poll_interval = env_int("IMAGE_POLL_INTERVAL", DEFAULT_POLL_INTERVAL)
endpoint_path = "/v1/images/edits" if request_mode == "edit" else "/v1/images/generations"
min_output_edge = resolve_min_output_edge(size, resolution, request_style)
reference_image_info = describe_image_source(reference_source, "reference-image")
mask_image_info = describe_image_source(mask_source, "mask-image")
print(
"开始生成图片:",
@@ -508,7 +536,13 @@ def main() -> None:
"request_style": request_style,
"min_output_edge": min_output_edge,
"reference_image_present": bool(reference_source),
"reference_image_source": reference_image_info["source"] if reference_image_info else None,
"reference_image_source_kind": reference_image_info["kind"] if reference_image_info else None,
"reference_image_filename": reference_image_info["filename"] if reference_image_info else None,
"mask_image_present": bool(mask_source),
"mask_image_source": mask_image_info["source"] if mask_image_info else None,
"mask_image_source_kind": mask_image_info["kind"] if mask_image_info else None,
"mask_image_filename": mask_image_info["filename"] if mask_image_info else None,
"payload": payload,
})