Fix #63: mostrar mensaje real de error de Edge Function en UI

- Mejorar invokeEdge para parsear el body JSON de errores HTTP de las Edge Functions y extraer un message humano (soporta { error: { message } }, { error: "..." } y { message: "..." }).
- EdgeFunctionError ahora incluye status y details; se manejan también FunctionsRelayError y FunctionsFetchError con mensajes más descriptivos.
- Ajustes en el front: WizardControls muestra el mensaje real del error (no el genérico "Edge Function returned a non-2xx status code"), y se corrige navegación/logging tras crear plan IA (uso de `plan` en vez de `data` y `navigate` a `/planes/{plan.id}`).
- Actualización de types/API: renombrados campos en AIGeneratePlanInput para alinear nombres (descripcionEnfoqueAcademico, instruccionesAdicionalesIA).
This commit is contained in:
2026-02-05 12:04:20 -06:00
parent f3414f23f6
commit 6d53e43a34
4 changed files with 78 additions and 25 deletions

View File

@@ -77,11 +77,11 @@ export function WizardControls({
console.log(`${new Date().toISOString()} - Enviando a generar plan IA`)
const data = await generatePlanAI.mutateAsync(aiInput as any)
console.log(`${new Date().toISOString()} - Plan IA generado`, data)
const plan = await generatePlanAI.mutateAsync(aiInput as any)
console.log(`${new Date().toISOString()} - Plan IA generado`, plan)
navigate({
to: `/planes/${data.plan.id}`,
to: `/planes/${plan.id}`,
state: { showConfetti: true },
})
return
@@ -122,7 +122,7 @@ export function WizardControls({
<Button variant="secondary" onClick={onPrev} disabled={disablePrev}>
Anterior
</Button>
<div className="flex-1">
<div className="mx-2 flex-1">
{errorMessage && (
<span className="text-destructive text-sm font-medium">
{errorMessage}