fix cover generation

This commit is contained in:
Thomas Demirdjian
2025-09-04 15:33:04 +02:00
parent ce786d4750
commit dd19172804
4 changed files with 128 additions and 50 deletions
+48 -11
View File
@@ -14,14 +14,20 @@ async function performCoverGeneration(project) {
const t0 = Date.now();
const prompt = generatePicturePrompt(project);
// Utiliser generateImageV2 qui renvoie directement l'URL publique
logger.info("🎨 [Cover] Calling model V2", { projectId: project.id });
logger.info("🎨 [Cover] Calling model V2", {
projectId: project.id,
promptPreview: String(prompt).slice(0, 160),
});
let coverUrl = "";
try {
// Utiliser une taille fixe de 1024 pixels
coverUrl = await generateImageV2(prompt, 1024);
console.log("coverUrl", coverUrl);
} catch (e) {
logger.error("❌ [Cover] generateImageV2 failed", e);
logger.error("❌ [Cover] generateImageV2 failed", {
projectId: project.id,
error: e?.message || String(e),
});
throw e;
}
if (!coverUrl) {
@@ -62,17 +68,28 @@ async function performCombineGeneration(project) {
);
}
logger.info("🧩 [Combine] Inputs detected", {
bgPreview: String(background).slice(0, 80),
fgPreview: String(foreground).slice(0, 80),
});
const combinedUrl = await CombineCoverAndPicture(background, foreground);
// Sauvegarder le résultat et marquer comme généré
await db.collection("projects").doc(project.id).set(
{
"cover.result": combinedUrl,
coverStatus: "GENERATED",
updatedAt: admin.firestore.FieldValue.serverTimestamp(),
},
{ merge: true },
);
await db
.collection("projects")
.doc(project.id)
.set(
{
cover: {
...project.cover,
result: combinedUrl,
},
coverStatus: "GENERATED",
updatedAt: admin.firestore.FieldValue.serverTimestamp(),
},
{ merge: true },
);
logger.info("✅ [Cover] Combined image saved", {
projectId: project.id,
@@ -102,6 +119,11 @@ exports.onTaskCreateGenerateCover = onDocumentCreated(
if (!["cover", "combine"]?.includes(type)) {
throw new Error(`Type de tâche non supporté: ${type}`);
}
logger.info("🧵 [Task] Received", {
taskId: event?.params?.taskId,
type,
projectId,
});
await db.collection("projects").doc(projectId).update({
coverStatus: "GENERATING",
updatedAt: admin.firestore.FieldValue.serverTimestamp(),
@@ -114,6 +136,12 @@ exports.onTaskCreateGenerateCover = onDocumentCreated(
}
project.id = projectId;
logger.info("🔎 [Task] Project loaded", {
projectId,
hasGeneratedBackground: !!project?.cover?.generatedBackground,
hasUserForeground: !!project?.cover?.userForeground,
});
if (type === "cover") {
logger.info("🎨 [Task] Start cover generation", { projectId });
coverUrl = await performCoverGeneration(project);
@@ -129,9 +157,18 @@ exports.onTaskCreateGenerateCover = onDocumentCreated(
coverUrl,
updatedAt: admin.firestore.FieldValue.serverTimestamp(),
});
logger.info("📦 [Task] Marked DONE", {
taskId: event?.params?.taskId,
projectId,
});
return;
} catch (error) {
logger.error("❌ [Task] Cover generation error", error);
logger.error("❌ [Task] Cover generation error", {
taskId: event?.params?.taskId,
projectId,
type,
error: error?.message || String(error),
});
await event.data.ref.set(
{ status: "ERROR", error: error?.message || "Erreur" },
{ merge: true },