exports.generatePicturePrompt = (project = {}) => {
  const { title = "", lyrics: lyricsRaw, musicConfig = {} } = project || {};

  const {
    genres = [],
    tempo = "",
    voice = "",
    instruments = [],
    mood = "",
  } = musicConfig || {};

  // Normalise les paroles en tableau de sections { type, lyrics }
  const lyricsSections = Array.isArray(lyricsRaw)
    ? lyricsRaw
    : [
        lyricsRaw?.couplet
          ? { type: "couplet", lyrics: lyricsRaw.couplet }
          : null,
        lyricsRaw?.refrain
          ? { type: "refrain", lyrics: lyricsRaw.refrain }
          : null,
      ].filter(Boolean);

  // Échantillon pour l'ambiance (courtes bribes pour inspirer la direction créative)
  const lyricsSample = (lyricsSections || [])
    .map((s) => (s?.lyrics || "").split("\n").slice(0, 2).join(" "))
    .filter(Boolean)
    .slice(0, 6)
    .join(" | ");

  // Etiquettes d'ambiance
  const tags = [];
  if (Array.isArray(genres) && genres.length)
    tags.push(`Genres: ${genres.join(", ")}`);
  if (tempo) tags.push(`Tempo: ${tempo}`);
  if (Array.isArray(instruments) && instruments.length)
    tags.push(`Instruments: ${instruments.join(", ")}`);
  if (voice) tags.push(`Vocal: ${voice}`);
  if (mood) tags.push(`Mood: ${mood}`);

  // Guidance palette selon tempo (simple heuristique)
  const paletteHint =
    tempo && /\b(rapid|fast|vite|agité|upbeat|energ)/i.test(String(tempo))
      ? "Palette vive et contrastée (magenta, cyan, jaune, bleu électrique)"
      : "Palette harmonieuse et douce (bleu nuit, violet, corail, or pâle)";

  // Prompt simplifié et optimisé pour Gemini
  const prompt = `
Crée une pochette d'album musicale abstraite et colorée au format carré 1024x1024.

Contexte:
- Titre: ${title || "Sans titre"}
- Style musical: ${tags.join(" ; ")}

Directives essentielles:
- Style: Abstrait, graphique, avec formes géométriques et dégradés de couleurs
- Couleurs: ${paletteHint}
- IMPORTANT: Image plein cadre sans AUCUN bord blanc ou espace vide
- Composition: Éléments visuels répartis sur TOUTE la surface de l'image

Contraintes:
- PAS de texte ou typographie
- PAS de personnes ou visages
- PAS de fond blanc ou bordures
- PAS de filigrane
`.trim();

  return prompt;
};
