Barra de busqueda para filtrar referencias para la IA, cambios a FileDropZone

This commit is contained in:
2026-01-08 13:41:37 -06:00
parent edae79c255
commit cddc676f7d
10 changed files with 417 additions and 148 deletions

View File

@@ -115,20 +115,6 @@ export const REPOSITORIOS = [
},
];
export const ESTRUCTURAS_PLAN_ESTUDIO = [
{
id: "estruc-1",
nombre: "Estructura RVOE 2017.docx",
versiones: ["v1.0", "v1.1", "v2.0"],
},
{
id: "estruc-2",
nombre: "Estructura RVOE 2026.docx",
versiones: ["v1.0", "v1.1"],
},
{ id: "estruc-3", nombre: "Estructura ULSA 2022.docx", versiones: ["v1.0"] },
];
export const PLANTILLAS_ANEXO_1 = [
{
id: "sep-2025",

View File

@@ -8,6 +8,18 @@ export function useNuevoPlanWizard() {
const [wizard, setWizard] = useState<NewPlanWizardState>({
step: 1,
modoCreacion: null,
// datosBasicos: {
// nombrePlan: "",
// carreraId: "",
// facultadId: "",
// nivel: "",
// tipoCiclo: "",
// numCiclos: undefined,
// plantillaPlanId: "",
// plantillaPlanVersion: "",
// plantillaMapaId: "",
// plantillaMapaVersion: "",
// },
datosBasicos: {
nombrePlan: "Medicina",
carreraId: "medico",
@@ -15,6 +27,10 @@ export function useNuevoPlanWizard() {
nivel: "Licenciatura",
tipoCiclo: "SEMESTRE",
numCiclos: 8,
plantillaPlanId: "sep-2025",
plantillaPlanVersion: "v2025.2 (Vigente)",
plantillaMapaId: "sep-2017-xlsx",
plantillaMapaVersion: "v2017.0",
},
clonInterno: { planOrigenId: null },
clonTradicional: {
@@ -27,6 +43,8 @@ export function useNuevoPlanWizard() {
poblacionObjetivo: "",
notasAdicionales: "",
archivosReferencia: [],
repositoriosReferencia: [],
archivosAdjuntos: [],
},
resumen: {},
isLoading: false,
@@ -47,12 +65,19 @@ export function useNuevoPlanWizard() {
!!wizard.datosBasicos.facultadId &&
!!wizard.datosBasicos.nivel &&
(wizard.datosBasicos.numCiclos !== undefined &&
wizard.datosBasicos.numCiclos > 0);
wizard.datosBasicos.numCiclos > 0) &&
// Requerir ambas plantillas (plan y mapa) con versión
!!wizard.datosBasicos.plantillaPlanId &&
!!wizard.datosBasicos.plantillaPlanVersion &&
!!wizard.datosBasicos.plantillaMapaId &&
!!wizard.datosBasicos.plantillaMapaVersion;
const canContinueDesdeDetalles = (() => {
if (wizard.modoCreacion === "MANUAL") return true;
if (wizard.modoCreacion === "IA") {
return !!wizard.iaConfig?.descripcionEnfoque;
// Requerimos descripción del enfoque y notas adicionales
return !!wizard.iaConfig?.descripcionEnfoque &&
!!wizard.iaConfig?.notasAdicionales;
}
if (wizard.modoCreacion === "CLONADO") {
if (wizard.subModoClonado === "INTERNO") {

View File

@@ -22,11 +22,20 @@ export type NewPlanWizardState = {
nivel: string;
tipoCiclo: TipoCiclo | "";
numCiclos: number | undefined;
// Selección de plantillas (obligatorias)
plantillaPlanId?: string;
plantillaPlanVersion?: string;
plantillaMapaId?: string;
plantillaMapaVersion?: string;
};
clonInterno?: { planOrigenId: string | null };
clonTradicional?: {
archivoWordPlanId: string | null;
archivoMapaExcelId: string | null;
archivoWordPlanId:
| { id: string; name: string; size: string; type: string }
| null;
archivoMapaExcelId:
| string
| null;
archivoAsignaturasExcelId: string | null;
};
iaConfig?: {
@@ -34,6 +43,10 @@ export type NewPlanWizardState = {
poblacionObjetivo: string;
notasAdicionales: string;
archivosReferencia: Array<string>;
repositoriosReferencia?: Array<string>;
archivosAdjuntos?: Array<
{ id: string; name: string; size: string; type: string }
>;
};
resumen: { previewPlan?: PlanPreview };
isLoading: boolean;