Skip to content

Feature: Comentarios asociados a estudiantes, tanto confidenciales como no confidenciales

Qué cambia

Nueva tab "Comentarios" en la ficha del estudiante, con dos secciones independientes que consumen los endpoints ya existentes en el backend:

  • Comentarios — /comentarios-normales-estudiante
  • Observaciones confidenciales — /comentarios-confidenciales-estudiante

Cada sección permite publicar, editar (inline) y eliminar (con confirmación), gateada por sus propios cuatro permisos, igual que los exige el backend: VER / CREAR / EDITAR / ELIMINAR_COMENTARIO_{NORMAL,CONFIDENCIAL}_ESTUDIANTE.

Si al usuario le falta el permiso de ver, la sección muestra "No tenés permiso para ver esta información" en vez de ocultarse (mismo criterio que ya usa la tab de Salud confidencial).

Cómo está armado

  • src/lib/comments.ts: cliente de API para los 8 endpoints (list/create/update/delete × normal/confidencial), con un solo tipo StudentComment porque ambos recursos comparten contrato.
  • src/components/students/CommentsSection.tsx: un único componente parametrizado por los 4 permisos y las 4 funciones de API, reutilizado para las dos secciones — evita duplicar la UI (lista, form de alta, edición inline, diálogo de eliminar).
  • src/lib/format.ts: se agrega formatFechaHora para mostrar fecha y hora del comentario (createdAt venía sin usar en ningún lado del frontend hasta ahora).

Bug encontrado y corregido en el camino

El indicador "(editado)" aparecía en todo comentario recién creado, no solo en los editados. Causa: @CreationTimestamp/@UpdateTimestamp de Hibernate capturan el reloj en dos llamadas separadas al insertar, así que createdAt y updatedAt casi nunca coinciden exactamente ni al crear. Se cambió la comparación de igualdad exacta por un margen de 2 segundos.

Merge request reports

Loading