feat: change scene fusion to serial processing with 5s delay and add detailed logging
This commit is contained in:
parent
42ca0b0db1
commit
230e101858
@ -328,58 +328,66 @@ export async function POST(request: Request) {
|
||||
})
|
||||
);
|
||||
|
||||
// 6. 并发处理所有场景
|
||||
const results = await Promise.all(
|
||||
processedScenes.map(async (scene) => {
|
||||
// 6. 串行处理所有场景,每次间隔5秒
|
||||
const results = [];
|
||||
|
||||
for (let i = 0; i < processedScenes.length; i++) {
|
||||
const scene = processedScenes[i];
|
||||
|
||||
// 如果不是第一张图,等待5秒
|
||||
if (i > 0) {
|
||||
console.log(`[SceneFusion] Waiting 5 seconds before processing scene ${i + 1}/${processedScenes.length}...`);
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000));
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await processScene(
|
||||
productImageUrl,
|
||||
scene.imageUrl,
|
||||
scene.customPrompt,
|
||||
config.defaultPrompt,
|
||||
provider.baseUrl,
|
||||
provider.apiKey,
|
||||
model.modelId
|
||||
);
|
||||
|
||||
// 保存到数据库
|
||||
const messageId = `scene-fusion-${Date.now()}-${scene.id}`;
|
||||
const chatId = `scene-fusion-batch-${Date.now()}`;
|
||||
|
||||
try {
|
||||
const result = await processScene(
|
||||
productImageUrl,
|
||||
scene.imageUrl,
|
||||
scene.customPrompt,
|
||||
config.defaultPrompt,
|
||||
provider.baseUrl,
|
||||
provider.apiKey,
|
||||
model.modelId
|
||||
);
|
||||
|
||||
// 保存到数据库
|
||||
const messageId = `scene-fusion-${Date.now()}-${scene.id}`;
|
||||
const chatId = `scene-fusion-batch-${Date.now()}`;
|
||||
|
||||
try {
|
||||
await db.insert(generatedImage).values({
|
||||
userId: session.user.id,
|
||||
chatId,
|
||||
messageId,
|
||||
thumbnailUrl: result.thumbnail,
|
||||
originalUrl: result.original,
|
||||
imageSize: "2K",
|
||||
prompt: scene.customPrompt
|
||||
? `${config.defaultPrompt} ${scene.customPrompt}`
|
||||
: config.defaultPrompt,
|
||||
modelId: model.modelId,
|
||||
});
|
||||
console.log(`[SceneFusion] Saved image to gallery: ${result.original.substring(0, 80)}...`);
|
||||
} catch (dbError) {
|
||||
console.error("[SceneFusion] Failed to save to gallery:", dbError);
|
||||
}
|
||||
|
||||
return {
|
||||
id: scene.id,
|
||||
status: "completed" as const,
|
||||
result: result.thumbnail, // 返回缩略图用于预览
|
||||
originalUrl: result.original, // 原图用于下载
|
||||
};
|
||||
} catch (error) {
|
||||
console.error(`[SceneFusion] Failed to process scene ${scene.id}:`, error);
|
||||
return {
|
||||
id: scene.id,
|
||||
status: "failed" as const,
|
||||
error: error instanceof Error ? error.message : "处理失败",
|
||||
};
|
||||
await db.insert(generatedImage).values({
|
||||
userId: session.user.id,
|
||||
chatId,
|
||||
messageId,
|
||||
thumbnailUrl: result.thumbnail,
|
||||
originalUrl: result.original,
|
||||
imageSize: "2K",
|
||||
prompt: scene.customPrompt
|
||||
? `${config.defaultPrompt} ${scene.customPrompt}`
|
||||
: config.defaultPrompt,
|
||||
modelId: model.modelId,
|
||||
});
|
||||
console.log(`[SceneFusion] Saved image to gallery: ${result.original.substring(0, 80)}...`);
|
||||
} catch (dbError) {
|
||||
console.error("[SceneFusion] Failed to save to gallery:", dbError);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
results.push({
|
||||
id: scene.id,
|
||||
status: "completed" as const,
|
||||
result: result.thumbnail, // 返回缩略图用于预览
|
||||
originalUrl: result.original, // 原图用于下载
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(`[SceneFusion] Failed to process scene ${scene.id}:`, error);
|
||||
results.push({
|
||||
id: scene.id,
|
||||
status: "failed" as const,
|
||||
error: error instanceof Error ? error.message : "处理失败",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 6. 返回结果
|
||||
const successCount = results.filter((r) => r.status === "completed").length;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user