diff --git a/server/services/openrouter.ts b/server/services/openrouter.ts index c5b5c8e..073e7d8 100644 --- a/server/services/openrouter.ts +++ b/server/services/openrouter.ts @@ -26,16 +26,23 @@ export class OpenRouterService { throw new Error('Configuration OpenRouter non trouvée. Veuillez demander à un administrateur de configurer OpenRouter dans les Paramètres.'); } + if (!config.apiKey || !config.apiKey.trim()) { + throw new Error('Clé API OpenRouter manquante ou vide en base de données. Veuillez la ressaisir dans les Paramètres.'); + } + const prompt = this.buildPrompt(productInfo, config.systemPrompt); - + // Use provided model or fall back to config model const modelToUse = modelOverride || config.model; + const keyPreview = `${config.apiKey.slice(0, 10)}...(len=${config.apiKey.length})`; + console.log(`[OpenRouter] Generating with model="${modelToUse}" key=${keyPreview} configUserId=${config.userId}`); + try { const response = await fetch(this.baseUrl, { method: "POST", headers: { - "Authorization": `Bearer ${config.apiKey}`, + "Authorization": `Bearer ${config.apiKey.trim()}`, "Content-Type": "application/json", "HTTP-Referer": process.env.APP_URL || "http://localhost:5555", "X-Title": "Social Flow" diff --git a/shared/schema.ts b/shared/schema.ts index 5797ead..e8ff5ad 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -394,7 +394,7 @@ export const insertOpenrouterConfigSchema = createInsertSchema(openrouterConfig) createdAt: true, updatedAt: true, }).extend({ - apiKey: z.string().min(1, "La clé API ne peut pas être vide"), + apiKey: z.string().trim().min(1, "La clé API ne peut pas être vide"), }); export const updateOpenrouterConfigSchema = insertOpenrouterConfigSchema.partial({