import type { UploadedFile } from './PasoDetallesPanel/FileDropZone' import type { NewPlanWizardState } from '@/features/planes/nuevo/types' import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card' import { PLANES_EXISTENTES, ARCHIVOS, REPOSITORIOS, } from '@/features/planes/nuevo/catalogs' import { formatFileSize } from '@/features/planes/utils/format-file-size' export function PasoResumenCard({ wizard }: { wizard: NewPlanWizardState }) { return ( Resumen Verifica la información antes de crear.
{(() => { // Precompute common derived values to avoid unnecessary optional chaining warnings const archivosRef = wizard.iaConfig?.archivosReferencia ?? [] const repositoriosRef = wizard.iaConfig?.repositoriosReferencia ?? [] const adjuntos = wizard.iaConfig?.archivosAdjuntos ?? [] const contenido = ( <>
Nombre: {wizard.datosBasicos.nombrePlan || '—'}
Facultad/Carrera:{' '} {wizard.datosBasicos.facultadId || '—'} /{' '} {wizard.datosBasicos.carreraId || '—'}
Nivel: {wizard.datosBasicos.nivel || '—'}
Ciclos: {wizard.datosBasicos.numCiclos} ( {wizard.datosBasicos.tipoCiclo})
Modo: {wizard.tipoOrigen === 'MANUAL' && 'Manual'} {wizard.tipoOrigen === 'IA' && 'Generado con IA'} {wizard.tipoOrigen === 'CLONADO_INTERNO' && 'Clonado desde plan del sistema'} {wizard.tipoOrigen === 'CLONADO_TRADICIONAL' && 'Importado desde documentos tradicionales'}
{wizard.tipoOrigen === 'CLONADO_INTERNO' && (
Plan origen: {(() => { const p = PLANES_EXISTENTES.find( (x) => x.id === wizard.clonInterno?.planOrigenId, ) return ( p?.nombre || wizard.clonInterno?.planOrigenId || '—' ) })()}
)} {wizard.tipoOrigen === 'CLONADO_TRADICIONAL' && (
Documentos adjuntos
  • Word del plan:{' '} {wizard.clonTradicional?.archivoWordPlanId?.name || '—'}
  • Mapa curricular: {' '} {wizard.clonTradicional?.archivoMapaExcelId?.name || '—'}
  • Asignaturas:{' '} {wizard.clonTradicional?.archivoAsignaturasExcelId ?.name || '—'}
)} {wizard.tipoOrigen === 'IA' && (
Enfoque: {wizard.iaConfig?.descripcionEnfoqueAcademico || '—'}
Notas: {wizard.iaConfig?.instruccionesAdicionalesIA || '—'}
{archivosRef.length > 0 && (
Archivos existentes
    {archivosRef.map((id) => { const a = ARCHIVOS.find((x) => x.id === id) return (
  • {a?.nombre || id} {' '} {a?.tamaño ? · {a.tamaño} : null}
  • ) })}
)} {repositoriosRef.length > 0 && (
Repositorios
    {repositoriosRef.map((id) => { const r = REPOSITORIOS.find((x) => x.id === id) return (
  • {r?.nombre || id} {' '} {r?.cantidadArchivos ? ( · {r.cantidadArchivos} archivos ) : null}
  • ) })}
)} {adjuntos.length > 0 && (
Adjuntos
    {adjuntos.map((f: UploadedFile) => (
  • {f.file.name} {' '} · {formatFileSize(f.file.size)}
  • ))}
)}
)} {wizard.resumen.previewPlan && (
Preview IA
Asignaturas aprox.:{' '} {wizard.resumen.previewPlan.numAsignaturasAprox}
)} ) return contenido })()}
) }