Chats de la IA en segundo plano se agregan funciones para asignatura

fix #42
This commit is contained in:
2026-03-06 08:44:41 -06:00
parent 189225f369
commit d844698ffc
2 changed files with 167 additions and 243 deletions
@@ -46,6 +46,37 @@ export function pickSchemaFields(
return out;
}
export function pickSchemaAsignaturaFields(
definicion: any,
campos: string[],
) {
// Si no hay definición válida, devolvemos un objeto vacío seguro
if (!definicion || definicion.type !== "object" || !definicion.properties) {
return { type: "object", properties: {}, required: [], additionalProperties: false };
}
// Clonamos para no mutar el original
const out = structuredClone(definicion);
// 1. Filtrar las propiedades: solo las que el usuario pidió en 'campos'
const entries = Object.entries(out.properties).filter(([k]) =>
campos.includes(k)
);
out.properties = Object.fromEntries(entries);
// 2. Filtrar los requeridos: solo si están en el nuevo set de propiedades
if (Array.isArray(out.required)) {
out.required = out.required.filter((k: string) => campos.includes(k));
} else {
out.required = [];
}
// 3. Limpieza de OpenAI: Forzar additionalProperties a false
out.additionalProperties = false;
return out;
}
export function safePlanForPrompt(plan: any) {
const copy = structuredClone(plan);
if (copy?.estructuras_plan) delete copy.estructuras_plan;