Commit Graph

42 Commits

Author SHA1 Message Date
Guillermo.Arrieta ed318fa67b Funcional pero falta arreglar diseño y responsividad 2026-03-23 13:11:24 -06:00
Guillermo.Arrieta 32f0c4c4d4 fix #189: Se arregló un bug en el que no se podía poner espacios al editar la editorial de una referencia 2026-03-18 14:48:55 -06:00
Guillermo.Arrieta 8bdaf935ca fix #181: al darle a siguiente desde estructura, se fuerza la regeneración de citas 2026-03-13 12:38:02 -06:00
Guillermo.Arrieta 3acea813b6 close #169: Se actualizó el modal de nueva bibliografía y se añadió el paso "Biblioteca"
- Se unificó el stepper en cinco pasos y se configuró para omitir el paso "Biblioteca" cuando el método sea MANUAL.
- Se añadió el paso "Biblioteca" con un accordion múltiple para comparar cada sugerencia con alternativas de la biblioteca; se eliminaron los estados de "Buscando" y su badge.
- Se incorporaron tres conjuntos hardcodeados de coincidencias (0, 2 y 5) que se asignan al azar si la sugerencia no trae datos de biblioteca; si no hay coincidencias la sugerencia se marca automáticamente como mantenida.
- Se implementó BookSelectionAccordion para elegir conservar la sugerencia o sustituirla por una coincidencia; se preservó el estilo visual de las opciones.
- Se añadieron validaciones y comportamientos de navegación: bloqueo de avance si quedan accordions por revisar, apertura y scroll al primer accordion sin resolver, y salto del paso "Biblioteca" en modo MANUAL.
2026-03-12 16:17:58 -06:00
Guillermo.Arrieta 88c6dc6b4d wip 2026-03-12 13:47:56 -06:00
Guillermo.Arrieta 03caa791ad hotfix: correccion de columnas de bibliografia 2026-03-12 12:08:22 -06:00
Guillermo.Arrieta ea842ee46c close #170: se añadieron validaciones y mejoras en el modal de nueva bibliografía
-Se implementaron restricciones en SugerenciasStep: el campo de búsqueda se limitó a 200 caracteres y la generación quedó bloqueada si hay 20 o más referencias seleccionadas; se añadió tooltip en el botón de generar cuando la query tiene menos de 3 caracteres.
-Se reforzaron validaciones en FormatoYCitasStep y DatosBasicosManualStep: el título se trim-eó y se forzó a no quedar vacío (max 500 caracteres); si un título queda vacío se hace scroll al input/card, se muestra mensaje de error junto al label y se resalta el input; autores se limitó a 2000 caracteres; editorial a 300 caracteres; ISBN a 20 caracteres; el año se convirtió en input numérico permitiendo vacío o un año de 4 dígitos entre 1450 y el año actual +1.
-Se añadieron checkboxes "Año aproximado" y "En prensa" (mutuamente excluyentes): "En prensa" deshabilita el input de año y se marca el estado para citeproc; "Año aproximado" se envía como circa en issued.
-Al generar CSL se incluyeron las propiedades issued.circa y status ('in press') según los flags del ref.
-En ResumenStep se añadieron advertencias por referencia cuando falte autor(es), año (si no está "en prensa"), editorial o ISBN.
-Se corrigieron detalles de UX en edición de autores para preservar saltos de línea y se añadieron handlers para evitar errores de validación al mover entre pasos.
2026-03-11 16:03:05 -06:00
Guillermo.Arrieta 11369ce792 Límite de al menos 3 caracteres y tooltip en boton de generar sugerencias 2026-03-11 13:47:54 -06:00
Guillermo.Arrieta 06bae3ba3e Se añadieron enlaces a las páginas de los libros 2026-03-10 15:18:57 -06:00
Guillermo.Arrieta 614ef3ffaf El textarea de los autores ya te permite añadir más autores 2026-03-10 14:37:07 -06:00
Guillermo.Arrieta 2c0c9e0ba4 Se colocaron subtítulos y se editan los campos de la referencia individualmente 2026-03-10 14:34:56 -06:00
Guillermo.Arrieta ab2510ba1c Integrada la búsqueda de bibliografía ahora también con Open Library y permitiendo obtener resultados de un idioma
- Se actualizó el contrato de búsqueda para enviar términos y parámetros por endpoint (Google y Open Library), y se consumió una respuesta unificada con origen por resultado.
- Se reemplazó el control de cantidad por un selector de idioma, y se mapearon los códigos a ISO 639-1 (Google) e ISO 639-2 (Open Library).
- Se forzó la obtención de resultados más recientes (orderBy="newest" y sort="new") y se ordenaron los resultados en frontend por año de publicación descendente, sin importar el endpoint.
- Se etiquetó cada sugerencia con un badge de origen (Google u Open Library).
2026-03-09 17:03:47 -06:00
Guillermo.Arrieta 2c594fb9f7 Hotfix: generación de citas en orden 2026-03-07 06:33:39 +00:00
Guillermo.Arrieta 98be1a0405 close #150: Se implementó el modal de “Agregar Bibliografía” con búsqueda en línea, generación de citas y tipado fuerte
- Se creó el modal de “Agregar Bibliografía” como ruta-modal y se enlazó desde el botón correspondiente con estilo consistente.
- Se implementó la búsqueda de sugerencias en línea mediante Edge Function y se conservó únicamente lo seleccionado al regenerar sugerencias.
- Se replicó el tooltip de “seleccionadas” con control total: se mostró solo en la primera generación y se permitió cerrarlo únicamente con el tache.
- Se integró la generación de citas con citeproc-js y se cargaron los recursos CSL/locale desde archivos locales en public/, usando BASE_URL.
- Se decodificaron entidades HTML en las citas generadas (p. ej., & → &).
- Se habilitó la regeneración forzada de citas por formato y se conservaron las citas (incluidas ediciones) al alternar formatos.
- Se mejoró la UI: se usó textarea autoajustable para citas y se estiró el select de tipo a ancho completo en sm+; se validó cantidad 1–40 o vacío (con deshabilitado del botón).
- Se tipó fuertemente la inserción a bibliografia_asignatura y se tiparon source/tipo en las referencias conforme a los tipos de Supabase.
2026-03-06 19:58:32 -06:00
Guillermo.Arrieta 2165d4a976 Generación de sugerencias y persistencia en BDD funcional. Falta afinar detalles 2026-03-06 17:58:40 -06:00
Guillermo.Arrieta 9c588cfd8f PasoResumen muestra resumen antes de crear múltiples asignaturas 2026-02-12 16:15:11 -06:00
Guillermo.Arrieta 46d8d6142e feat: integrate Radix UI Accordion component and enhance subject wizard
- Added Radix UI Accordion component for better UI organization in PasoDetallesPanel.
- Implemented structure selection and subject suggestions management in the wizard.
- Updated subject API to initialize new subjects with null values for structure and cycle.
- Modified state management in useNuevaAsignaturaWizard to include estructuraId.
- Adjusted types for suggested subjects to include line and cycle information.
2026-02-12 16:15:11 -06:00
Guillermo.Arrieta 07d08e1b57 Add AI progress loader and enhance suggestion generation logic
- Introduced AIProgressLoader component to display loading progress and messages during suggestion generation.
- Updated PasoSugerenciasForm to manage loading state and display tooltip for preserved suggestions.
- Adjusted suggestion limits and removed unused ciclo input from state.
2026-02-12 16:15:11 -06:00
Guillermo.Arrieta ded54c18dd Se mandan generar sugerencias de asignaturas junto con el id del plan, el enfoque que se le quiere dar, la cantidad de sugerencias, y las sugerencias conservadas 2026-02-12 16:15:10 -06:00
Guillermo.Arrieta 89f264bf5d Primera version funcional de sugerencias 2026-02-12 16:15:10 -06:00
Guillermo.Arrieta 675c76db74 wip 2026-02-12 16:15:10 -06:00
Guillermo.Arrieta d74807c84e wip 2026-02-12 16:15:10 -06:00
Guillermo.Arrieta b1a233fa8c Feat: generación IA de asignaturas, navegación con confetti y ajustes de API
closes #63:
- Añadido AIGenerateSubjectInput y nueva implementación ai_generate_subject que envía FormData (soporta archivosAdjuntos) al Edge Function.
- Creado hook useGenerateSubjectAI (mutation) y usado en WizardControls de asignaturas para generar la asignatura vía IA.
- WizardControls (asignaturas) construye el payload IA, invoca la mutación y navega al detalle de la asignatura creada pasando state.showConfetti para lanzar confetti.
- Ajustes en subjects.api.ts (nombres de endpoint, tipos y envío de datos) y sincronización de tipos en WizardControls (plan y campos básicos).
- Ruta de detalle de asignatura ($asignaturaId) ahora lee location.state.showConfetti y dispara lateralConfetti al entrar.
- Eliminado el prop onCreate del modal de nueva asignatura (la creación IA se gestiona internamente).
2026-02-05 13:41:10 -06:00
Guillermo.Arrieta c82fac52f7 Refactor: unifica wizards con WizardLayout/WizardResponsiveHeader y convierte asignaturas en layout con Outlet
- Se introdujo un layout genérico de wizard (WizardLayout) con headerSlot/footerSlot y se migraron los modales de Nuevo Plan y Nueva Asignatura a esta estructura usando defineStepper.
- Se creó y reutilizó WizardResponsiveHeader para un encabezado responsivo consistente (progreso en móvil y navegación en escritorio) en ambos wizards.
- Se homologó WizardControls del wizard de asignaturas para alinearlo al patrón del wizard de planes (props onPrev/onNext, flags de disable, manejo de error/loading y creación).
- Se mejoró la captura de datos en el wizard de asignatura: créditos como flotante con 2 decimales, placeholders/estilos en inputs/selects y uso de catálogo real de estructuras vía useSubjectEstructuras con qk.estructurasAsignatura.
- Se reorganizó la sección de asignaturas del detalle del plan: el contenido del antiguo index se movió a asignaturas.tsx como layout y se agregó <Outlet />; navegación a “nueva asignatura” ajustada al path correcto.
2026-02-05 13:41:09 -06:00
Guillermo.Arrieta f046bdcc04 Refactorización de wizards para consistencia, reusabilidad y mantenibilidad 2026-02-03 13:13:44 -06:00
Guillermo.Arrieta 12c572a442 Reorganización de archivos y enlace a wizard de creación de asignatura 2026-02-03 13:13:44 -06:00
Guillermo.Arrieta efab8eb2e4 Colocar el nombre de la Facultad/Carrera en el Resumen de la creación de los planes
fix #56:
Ya se muestra el nombre de la facultad y de la carrera.
2026-01-30 13:21:11 -06:00
alexrg d0b05256b0 refactor: rename Materia to Asignatura across the codebase
- Updated type definitions and interfaces to replace 'Materia' with 'Asignatura'.
- Refactored components and routes to reflect the new naming convention.
- Adjusted related types and constants for consistency.
- Removed the old Materia type definition and added Asignatura type definition.
- Ensured all references in UI components and logic are updated accordingly.

fix #50
2026-01-30 08:13:30 -06:00
Guillermo.Arrieta 9584cd0c04 Se cierran incidencias #10, #21, #24, #25; se añade generación manual de planes
close #10:
Al crear un plan de manera manual o con IA y redirigirse a planes/{$planId}/datos, sale el confetti.

close #21:
Los archivos que se adjuntan en el wizard ya no se pueden subir mas que una vez.

close #24:
El input de número de ciclos ahora solo permite enteros positivos mayores a 0.

close #25:
Se quitó el botón de generar borrador.
Al adjuntar el primer archivo al wizard, se hace scroll hasta el dropzone.
Los archivos añadidos se listan desde el más reciente al más antiguo.
Se indica claramente el número de archivos adjuntos y el número máximo de archivos que se pueden adjuntar.
2026-01-27 12:01:05 -06:00
Guillermo.Arrieta 4950f7efbf Se generan los planes con IA de manera correcta 2026-01-22 12:39:52 -06:00
Guillermo.Arrieta 254f6383d7 generación de plan con invalidación de queries 2026-01-21 12:11:12 -06:00
Guillermo.Arrieta 18f2bed3ea primera versión funcional de creación de plan con IA 2026-01-20 17:04:39 -06:00
Guillermo.Arrieta 9aad9aed00 Wizard listo para enviar información a ai-generate-plan 2026-01-15 15:54:36 -06:00
Guillermo.Arrieta b08d58e262 wip 2026-01-13 14:30:57 -06:00
Guillermo.Arrieta 55c37b83b4 listado de planes exitoso 2026-01-13 11:52:57 -06:00
Guillermo.Arrieta b9c809e648 bugs arreglados de FileDropZone 2026-01-08 17:14:29 -06:00
Guillermo.Arrieta cddc676f7d Barra de busqueda para filtrar referencias para la IA, cambios a FileDropZone 2026-01-08 13:41:37 -06:00
Guillermo.Arrieta edae79c255 wip 2026-01-07 15:01:12 -06:00
Guillermo.Arrieta 69119aeaa6 finalizada sección de Referencias para la IA 2026-01-06 17:02:55 -06:00
Guillermo.Arrieta ef177a3f92 wip 2026-01-06 13:46:57 -06:00
Guillermo.Arrieta 04b8c45987 Separación vista/lógica de wizard de creación de asignatura 2026-01-05 14:22:39 -06:00
Guillermo.Arrieta a65e34b41c Separación vista/lógica del wizard de creación de plan 2026-01-05 13:24:48 -06:00