diff --git a/supabase/functions/_shared/database.types.ts b/supabase/functions/_shared/database.types.ts index b553874..b4ae330 100644 --- a/supabase/functions/_shared/database.types.ts +++ b/supabase/functions/_shared/database.types.ts @@ -1,4 +1,4 @@ -export type Json = +export type Json = | string | number | boolean diff --git a/supabase/functions/ai-generate-subject/index.ts b/supabase/functions/ai-generate-subject/index.ts index d51c88a..b63d66b 100644 --- a/supabase/functions/ai-generate-subject/index.ts +++ b/supabase/functions/ai-generate-subject/index.ts @@ -3,6 +3,7 @@ import { corsHeaders } from "../_shared/cors.ts"; import { HttpError, sendError, sendSuccess } from "../_shared/utils.ts"; import { createClient } from "@supabase/supabase-js"; import type { Database, Json } from "../_shared/database.types.ts"; +import { definicionesDeEstructurasDeColumnas } from "../_shared/estructuras.ts"; import { z } from "zod"; import { OpenAIService, @@ -599,98 +600,3 @@ Deno.serve(async (req: Request): Promise => { ); } }); - -const definicionesDeEstructurasDeColumnas = { - contenido_tematico: { - "type": "object", - "properties": { - "x-column": { - "type": "string", - "enum": [ - "contenido_tematico", - ], - }, - "x-definicion": { - "type": "array", - "items": { - "type": "object", - "properties": { - "unidad": { - "type": "integer", - }, - "titulo": { - "type": "string", - }, - "temas": { - "type": "array", - "items": { - "type": "object", - "properties": { - "nombre": { - "type": "string", - }, - "horasEstimadas": { - "type": "integer", - "description": - "Horas del tema. La suma de todas las horasEstimadas debe ser igual a las horas académicas del prompt.", - }, - }, - "required": [ - "nombre", - "horasEstimadas", - ], - "additionalProperties": false, - }, - }, - }, - "required": [ - "unidad", - "titulo", - "temas", - ], - "additionalProperties": false, - }, - }, - }, - "required": [ - "x-column", - "x-definicion", - ], - "additionalProperties": false, - }, - criterios_de_evaluacion: { - "type": "object", - "properties": { - "x-column": { - "type": "string", - "enum": [ - "criterios_de_evaluacion", - ], - }, - "x-definicion": { - "type": "array", - "items": { - "type": "object", - "properties": { - "criterio": { - "type": "string", - }, - "porcentaje": { - "type": "integer", - }, - }, - "required": [ - "criterio", - "porcentaje", - ], - "additionalProperties": false, - }, - }, - }, - "required": [ - "x-column", - "x-definicion", - ], - "additionalProperties": false, - }, -};