Commit Graph

24 Commits

Author SHA1 Message Date
518b1124d8 close #182: se implementó la lista de unidades como sortable con dnd-kit y se solucionó el parpadeo al reordenar.
Se convirtió la lista de unidades en un sortable controlado usando @dnd-kit/react; al arrastrar desde el GripVertical se reordenan las unidades en la UI y persiste el orden en la base de datos.
Se colocó el botón "Nueva unidad" como un overlay que aparece debajo de cada unidad al hacer hover (posición bottom) y su clic inserta una unidad entre las existentes o al final si se pulsa después de la última, sin desplazar el layout.
Se hizo que, al cargar el componente por primera vez, la primera unidad quede desplegada automáticamente; una vez que el usuario realiza cualquier modificación y se guarda, se empieza a respetar el conjunto de unidades que el usuario tenga expandidas (la bandera de inicialización se activa durante la persistencia).
Se arregló un bug en el que al reordenar la lista de unidades sucedía una recarga de la lista.
Por qué ocurría el parpadeo y cómo fue arreglado:
- Causa: tras el reorder optimista la UI quedaba actualizada, pero cuando la lista fresca llegaba del servidor un useEffect reasignaba IDs por posición (índice), provocando que React creyera que los elementos eran nuevos, se destruyeran y se volvieran a montar — de ahí el "parpadeo" y la pérdida del estado de los acordiones.
- Solución (Escudo Optimista): se añadieron dos defensas.
  1) Escudo de aborto temprano: si el payload actual (UI optimista) y el payload entrante del servidor son idénticos (JSON), se aborta el procesamiento del useEffect para evitar re-render innecesario.
  2) Reciclaje por contenido: cuando los datos difieren, las IDs locales se reciclan buscando coincidencias por contenido (título) en lugar de por posición, de modo que cada unidad conserva su ID real aunque cambie de lugar; así React mueve las tarjetas en vez de destruirlas.

Con esto, el reorder es estable, el overlay de inserción funciona sin alterar el flow visual y el estado de expansiones se preserva tras ediciones del usuario.
2026-03-17 12:36:14 -06:00
2165d4a976 Generación de sugerencias y persistencia en BDD funcional. Falta afinar detalles 2026-03-06 17:58:40 -06:00
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
d9a6852f43 Se agrega drawer de referencias de ia y panel de historial de chats 2026-02-11 10:22:14 -06:00
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
e1751ef694 Se corrigen incidencias 8 y 13 2026-01-22 15:46:04 -06:00
b08d58e262 wip 2026-01-13 14:30:57 -06:00
55c37b83b4 listado de planes exitoso 2026-01-13 11:52:57 -06:00
5a7672677d tipado desde supabase, primer listado de planes, ajustes en src/data 2026-01-12 12:03:17 -06:00
3e7d3385ec Merge remote-tracking branch 'origin/feat/wizard-plan-vista' 2026-01-09 11:19:21 -06:00
767e3b74d1 Merge branch 'feature/query-hooks' 2026-01-09 11:04:56 -06:00
65a73ca99f feat: add subjects and tasks API, hooks, and related types
- Implemented subjects API with functions for creating, updating, and retrieving subjects, including history and bibliography.
- Added tasks API for managing user tasks, including listing and marking tasks as completed.
- Created hooks for managing AI interactions, authentication, subjects, tasks, and metadata queries.
- Established query keys for caching and managing query states.
- Introduced Supabase client and environment variable management for better configuration.
- Defined types for database and domain models to ensure type safety across the application.
2026-01-09 09:00:33 -06:00
b9c809e648 bugs arreglados de FileDropZone 2026-01-08 17:14:29 -06:00
c02d75789e Se termina vista de asignaturas 2026-01-08 12:23:26 -06:00
66bff3ac6f se quita package-lock 2026-01-07 07:44:56 -06:00
69119aeaa6 finalizada sección de Referencias para la IA 2026-01-06 17:02:55 -06:00
b61741b414 Se realiza merge con integracion de roberto y memo 2026-01-05 15:53:00 -06:00
684a3d8662 wip 2026-01-02 15:23:39 -06:00
8dc45d526f Stepper de ejemplo integrado 2025-12-29 11:32:56 -06:00
b4570f56b4 Primera versión adecuada del listado de planes 2025-12-25 19:20:12 -06:00
d0b80b77f5 Filtro funcionando primera versión 2025-12-25 18:52:37 -06:00
b38fe2d8b4 Configuraciones finales de eslint, formateo y scripts de package.json 2025-12-19 15:53:51 -06:00
ad197c9aad Dashboard v1 y configuraciones adicionales de prettier 2025-12-18 19:49:50 -06:00
c3abc377bf initial commit 2025-12-17 19:40:40 -06:00