fix: poll SnapGen history for final images
This commit is contained in:
parent
9b94aae898
commit
ed2c64d2a6
@ -332,7 +332,38 @@ function collectImageUrls(payload: any): string[] {
|
||||
}
|
||||
};
|
||||
|
||||
walk(payload);
|
||||
const outputRoots = [
|
||||
payload?.generate_result,
|
||||
payload?.generated_image,
|
||||
payload?.generated_images,
|
||||
payload?.image_urls,
|
||||
payload?.images,
|
||||
payload?.output,
|
||||
payload?.outputs,
|
||||
payload?.result,
|
||||
payload?.results,
|
||||
payload?.data?.generate_result,
|
||||
payload?.data?.generated_image,
|
||||
payload?.data?.generated_images,
|
||||
payload?.data?.image_urls,
|
||||
payload?.data?.images,
|
||||
payload?.data?.output,
|
||||
payload?.data?.outputs,
|
||||
payload?.data?.result,
|
||||
payload?.data?.results,
|
||||
payload?.detail?.generate_result,
|
||||
payload?.detail?.generated_image,
|
||||
payload?.detail?.generated_images,
|
||||
].filter((value) => value !== undefined && value !== null);
|
||||
|
||||
if (outputRoots.length > 0) {
|
||||
for (const root of outputRoots) {
|
||||
walk(root);
|
||||
}
|
||||
} else if (typeof payload === "string" || Array.isArray(payload)) {
|
||||
walk(payload);
|
||||
}
|
||||
|
||||
return Array.from(urls);
|
||||
}
|
||||
|
||||
@ -711,15 +742,20 @@ export function createSnapgenImage({ apiKey, baseURL }: SnapgenImageConfig) {
|
||||
formData,
|
||||
});
|
||||
|
||||
let outputUrls = filterSourceImages(collectImageUrls(createPayload), imageUrls);
|
||||
let base64Images = collectBase64Images(createPayload);
|
||||
let outputUrls: string[] = [];
|
||||
let base64Images: Array<{ buffer: Buffer; mimeType: string }> = [];
|
||||
const statusCode = extractStatusCode(createPayload);
|
||||
const uuid = extractUuid(createPayload);
|
||||
if (statusCode === 3) {
|
||||
throw new Error(extractErrorMessage(createPayload));
|
||||
}
|
||||
|
||||
if (outputUrls.length === 0 && base64Images.length === 0) {
|
||||
const uuid = extractUuid(createPayload);
|
||||
if (statusCode === 2 || !uuid) {
|
||||
outputUrls = filterSourceImages(collectImageUrls(createPayload), imageUrls);
|
||||
base64Images = collectBase64Images(createPayload);
|
||||
}
|
||||
|
||||
if ((uuid && statusCode !== 2) || (outputUrls.length === 0 && base64Images.length === 0)) {
|
||||
if (!uuid) {
|
||||
throw new Error(
|
||||
`SnapGen 创建任务成功,但未返回 uuid 或图片结果,响应片段: ${compactPayloadSnippet(createPayload)}`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user