Buscar en la documentación

incidents

Solicitudes e incidentes, núcleo del sistema.

Cada solicitud o incidente reportado. Contiene todos los campos que exige la prueba (id, título, descripción, prioridad, estado, usuario creador, usuario asignado, fecha de vencimiento y timestamps) más las mejoras aprobadas.

ColumnaTipoRestriccionesDescripción
idBIGINT UNSIGNEDPKClave interna
ulidCHAR(26)UNIQUE, NOT NULLIdentificador público para la API
codeVARCHAR(20)UNIQUE, NOT NULLCódigo legible: prefijo, año y consecutivo del año (TZ-26-0142), tomado de incident_code_sequences
titleVARCHAR(150)NOT NULLLa API acepta de 5 a 80 caracteres (ADR-0073); la columna conserva 150 porque las migraciones son solo aditivas
descriptionTEXTNOT NULL
priority_idTINYINT UNSIGNEDFK → priorities, RESTRICT
status_idTINYINT UNSIGNEDFK → statuses, RESTRICT
created_byBIGINT UNSIGNEDFK → users, RESTRICT, NOT NULLQuién lo reportó; inmutable
assigned_toBIGINT UNSIGNEDFK → users, RESTRICT, NULLQuién lo atiende; vacío mientras está sin asignar
due_dateDATETIMENOT NULLFecha de vencimiento (sugerida según la prioridad, editable)
resolved_atTIMESTAMPNULLHabilita métricas de tiempo de resolución
lock_versionINT UNSIGNEDNOT NULL, CHECK ≥ 1Bloqueo optimista
created_at, updated_atTIMESTAMP
deleted_atTIMESTAMPNULLBorrado lógico

No hay updated_by: quién modificó qué ya queda en incident_activities, y guardarlo aquí repetiría información.

Índices

ÍndiceConsulta que atiende
(status_id, priority_id, deleted_at, created_by, assigned_to)Filtros combinados y conteo del dashboard por estado y prioridad, sin leer la tabla (también para quien solo ve lo suyo)
(status_id, due_date, deleted_at)Conteo de vencidos, resuelto solo con el índice
(priority_id)Filtro por prioridad (y su FK)
(assigned_to, status_id, due_date, deleted_at, created_by)Filtro por asignado, “asignados a mí”, “sin asignar” y carga por agente, sin leer la tabla
(created_by)“Creados por mí” (y su FK)
(due_date, deleted_at)Rango y orden por vencimiento; conteo general solo con el índice
(created_at, deleted_at)Rango y orden por creación (orden por defecto); creados por día
(resolved_at, deleted_at)Resueltos por día (tendencia del dashboard)
FULLTEXT (title, description)Búsqueda por texto (palabras de 3 o más letras)

Los índices están validados con EXPLAIN sobre 100.000 registros: ver Rendimiento.

Dónde está en el código