NutriScan Auditoría
La página NutriScanAuditoria ofrece una interfaz para que usuarios con roles administrativos (ADMIN, DESARROLLADOR) gestionen y auditen los registros de análisis nutricionales realizados en la aplicación.
Permite listar, filtrar, buscar, editar y eliminar registros de análisis con detalles asociados.
🔍 Ubicación
src/pages/nutriscan/NutriScanAuditoria.tsx
Importaciones principales
axiospara comunicación HTTP con backend.useUserpara obtener información del usuario actual (contexto).urlconstante base para la API.- React hooks
useState,useEffect.
Interfaces de datos
Respuesta
mensaje: string— texto con la respuesta del análisis.generadoPor: string— indica si la respuesta fue generada por GPT u otro mecanismo.
Registro
id: number— identificador único del registro.consulta: string— texto consultado para el análisis.respuesta: Respuesta | null— resultado del análisis.fechaAnalisis: string— fecha y hora del análisis.esAlimento: boolean— indica si el registro corresponde a un alimento.tipoAnalisis: "ocr-gpt-only" | "ocr-openfoodfacts-gpt"— tipo de análisis aplicado.isTest?: boolean— indica si es un registro de prueba.usuario— objeto con:nombreCompleto: stringtipoUsuario: "INDIVIDUAL"
Estado interno (React State)
registros: lista de registros obtenidos.registroEditando: registro seleccionado para editar.modalAbierto: controla visibilidad del modal de edición.confirmEliminarId: id del registro pendiente de confirmación para eliminar.usuarioId: input para búsqueda por ID de usuario.filtroNombre: filtro de búsqueda por nombre.filtroFecha: filtro de búsqueda por fecha.error: mensajes de error en la interfaz.
Funcionalidades principales
cargarTodos()
- Obtiene todos los registros de análisis desde la API (
GET /nutriscan). - Actualiza el estado
registros.
buscarPorUsuarioId()
- Busca registros asociados a un ID de usuario (
GET /nutriscan/usuario/{usuarioId}). - Valida que el usuario sea tipo
"INDIVIDUAL". - Actualiza el estado
registroso muestra error si no tiene acceso.
limpiarFiltros()
- Limpia todos los filtros y recarga todos los registros.
manejarEditar(registro: Registro)
- Prepara el registro para edición.
- Abre el modal de edición con datos precargados.
guardarCambios()
- Envía los cambios editados a la API (
PUT /nutriscan/{id}). - Cierra el modal y recarga la lista.
confirmarEliminar(id: number)
- Abre diálogo para confirmar eliminación de un registro.
eliminarRegistro()
- Elimina registro confirmado (
DELETE /nutriscan/{id}). - Recarga lista y cierra diálogo.
Renderizado
- Muestra filtros y botones para buscar, limpiar y filtrar registros.
- Si el usuario no tiene rol adecuado, muestra mensaje de restricción.
- Tabla con columnas: ID, Consulta, Respuesta GPT, Usuario, Fecha y Acciones (Editar, Eliminar).
- Modal para edición con campos: consulta, respuesta, tipo análisis, es alimento, es test.
- Modal para confirmación de eliminación.
Validaciones y permisos
- Solo usuarios con roles
ADMINoDESARROLLADORpueden acceder. - La búsqueda por ID valida que el usuario sea tipo
INDIVIDUAL. - Manejo de errores en búsqueda muestra mensajes claros.
Ejemplo de uso en aplicación
import NutriScanAuditoria from '../pages/nutriscan/NutriScanAuditoria';
function AdminPanel() {
return (
<NutriScanAuditoria />
);
}