fix(functions): clasificar y estandarizar errores en ai-generate-plan
- Corregido el problema donde la función devolvía siempre 400; ahora se lanzan HttpError con status adecuados (405, 401, 415, 422, 404, 409, 502, 500) según el caso. - Refactor: usar sendError/sendSuccess y HttpError desde _shared/utils.ts para respuestas consistentes y logging seguro. - Validación: agrupar errores de parse/validación en un único mensaje numerado (cada error en nueva línea). - OpenAI: manejo explícito de fallos (MissingEnv, JSON inválido, salida estructurada ausente) y mapeo a status apropiados. - Supabase: distinguir errores 404/409/500 en consultas e inserts; incluir detalles en internalDetails para diagnóstico server-side. - Eliminada dependencia de invocación HTTP a ai-structured; usar servicio compartido directo. - Ajustes menores en mensajes y configuración (deno imports/deno.json) y tests marcados como ignorados donde corresponde.
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import { corsHeaders } from "./cors.ts";
|
||||
|
||||
// --- CLASE DE ERROR ---
|
||||
export class HttpError extends Error {
|
||||
public readonly status: number;
|
||||
public readonly code: string;
|
||||
public readonly internalDetails: unknown;
|
||||
|
||||
constructor(
|
||||
status: number,
|
||||
message: string,
|
||||
code = "API_ERROR",
|
||||
internalDetails?: unknown,
|
||||
) {
|
||||
super(message);
|
||||
this.name = "HttpError";
|
||||
this.status = status;
|
||||
this.code = code;
|
||||
this.internalDetails = internalDetails;
|
||||
}
|
||||
}
|
||||
|
||||
// --- HELPER DE ÉXITO ---
|
||||
export function sendSuccess<T>(data: T, status = 200): Response {
|
||||
return new Response(
|
||||
JSON.stringify(data),
|
||||
{
|
||||
status,
|
||||
headers: { ...corsHeaders, "Content-Type": "application/json" },
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// --- HELPER DE ERROR ---
|
||||
export function sendError(
|
||||
status: number,
|
||||
message: string,
|
||||
code: string,
|
||||
): Response {
|
||||
return new Response(
|
||||
JSON.stringify({
|
||||
error: { message, code },
|
||||
}),
|
||||
{
|
||||
status,
|
||||
headers: { ...corsHeaders, "Content-Type": "application/json" },
|
||||
},
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user