import { useState } from 'react' import type { NewPlanWizardState } from '../types' export function useNuevoPlanWizard() { const [wizard, setWizard] = useState({ step: 1, tipoOrigen: null, datosBasicos: { nombrePlan: '', facultad: { id: '', nombre: '' }, carrera: { id: '', nombre: '' }, nivel: '', tipoCiclo: '', numCiclos: undefined, estructuraPlanId: null, }, // datosBasicos: { // nombrePlan: "Medicina", // carreraId: "medico", // facultadId: "med", // nivel: "Licenciatura", // tipoCiclo: "SEMESTRE", // numCiclos: 8, // plantillaPlanId: "sep-2025", // plantillaPlanVersion: "v2025.2 (Vigente)", // plantillaMapaId: "sep-2017-xlsx", // plantillaMapaVersion: "v2017.0", // }, clonInterno: { planOrigenId: null }, clonTradicional: { archivoWordPlanId: null, archivoMapaExcelId: null, archivoAsignaturasExcelId: null, }, iaConfig: { descripcionEnfoqueAcademico: '', instruccionesAdicionalesIA: '', archivosReferencia: [], repositoriosReferencia: [], archivosAdjuntos: [], }, resumen: {}, isLoading: false, errorMessage: null, }) const canContinueDesdeModo = wizard.tipoOrigen === 'MANUAL' || wizard.tipoOrigen === 'IA' || wizard.tipoOrigen === 'CLONADO_INTERNO' || wizard.tipoOrigen === 'CLONADO_TRADICIONAL' const canContinueDesdeBasicos = !!wizard.datosBasicos.nombrePlan && !!wizard.datosBasicos.carrera.id && !!wizard.datosBasicos.facultad.id && !!wizard.datosBasicos.nivel && wizard.datosBasicos.numCiclos !== undefined && wizard.datosBasicos.numCiclos > 0 && // Requerir ambas plantillas (plan y mapa) con versión !!wizard.datosBasicos.estructuraPlanId const canContinueDesdeDetalles = (() => { if (wizard.tipoOrigen === 'MANUAL') return true if (wizard.tipoOrigen === 'IA') { // Requerimos descripción del enfoque y notas adicionales return !!wizard.iaConfig?.descripcionEnfoqueAcademico } if (wizard.tipoOrigen === 'CLONADO_INTERNO') { return !!wizard.clonInterno?.planOrigenId } if (wizard.tipoOrigen === 'CLONADO_TRADICIONAL') { const t = wizard.clonTradicional if (!t) return false const tieneWord = !!t.archivoWordPlanId const tieneAlMenosUnExcel = !!t.archivoMapaExcelId || !!t.archivoAsignaturasExcelId return tieneWord && tieneAlMenosUnExcel } return false })() return { wizard, setWizard, canContinueDesdeModo, canContinueDesdeBasicos, canContinueDesdeDetalles, } }