Buscar en la documentación

incident_reopen_requests

Solicitudes para reabrir un incidente cerrado o cancelado, con su decisión.

Módulo incidents2 min de lecturaVer en el diagramaVer en GitHub

Cuando alguien pide reabrir un incidente cerrado o cancelado, la solicitud queda aquí hasta que quien supervisa la aprueba o la rechaza. Las filas no se borran: son parte del rastro del incidente. Reglas y alternativas en el ADR-0071.

ColumnaTipoRestriccionesDescripción
idBIGINT UNSIGNEDPK
incident_idBIGINT UNSIGNEDFK → incidents, RESTRICT
requested_byBIGINT UNSIGNEDFK → users, RESTRICTQuién la pidió
reasonVARCHAR(1000)NOT NULLPor qué hay que reabrirlo
statusVARCHAR(10)NOT NULL, CHECK IN ('pending', 'approved', 'rejected')Pendiente por defecto
decided_byBIGINT UNSIGNEDNULL, FK → users, RESTRICTQuién la decidió
decision_noteVARCHAR(1000)NULLMotivo del rechazo
decided_atTIMESTAMPNULLCuándo se decidió
created_at, updated_atTIMESTAMP
pending_incident_idBIGINT UNSIGNEDColumna calculada (STORED), UNIQUEIgual a incident_id mientras está pendiente; NULL después
  • Una sola pendiente por incidente: el índice único sobre pending_incident_id lo garantiza en la base, aunque dos personas la pidan a la vez. MySQL admite varios NULL en un índice único, así que las decididas no chocan entre sí.
  • CHECK de la decisión: una pendiente no tiene decided_by ni decided_at, y una decidida tiene los dos.
  • RESTRICT en las FK: ni el incidente (que usa borrado lógico) ni las personas (que se desactivan) se borran mientras tengan solicitudes.
  • El motivo de cada paso también queda como nota en incident_activities (reopen_requested, reopen_rejected, reopened), que es lo que muestran el historial y la auditoría.

Índices

ÍndiceConsulta que atiende
UNIQUE (pending_incident_id)La solicitud pendiente de un incidente (detalle) y el filtro “Con reapertura pendiente” del listado
(incident_id, created_at)Solicitudes de un incidente, en orden (y su FK)
(requested_by), (decided_by)Sus FK

Dónde está en el código