Chats de la IA en segundo plano se agregan funciones para asignatura
fix #42
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user