Estado: Aceptada. Primer bloque de la conversación y el centro de notificaciones. El panel de la conversación se reemplazó por la actividad del detalle (ADR-0083); las reglas siguen igual.
Fecha: 2026-10-31
Contexto
Cuando quien atiende un incidente necesitaba un dato (“¿desde qué equipo pasa?”) o quien lo reportó quería saber cómo iba, la única salida era otro canal: un chat, un correo o una llamada. Esa conversación quedaba fuera de Trazo, sin relación con el incidente y sin rastro para quien lo tomara después. La nota al cambiar de estado no sirve para eso: es una sola línea ligada a un cambio, no un ida y vuelta.
Alternativas evaluadas
Conversación tipo chat en cada incidente, en un panel, con mensajes en su propia tabla.
Mensajes dentro del historial (incident_activities), como un tipo más.
Comentarios largos tipo foro, con edición y respuestas anidadas.
Seguir con canales externos y enlazar el incidente desde ahí.
Y para borrar o editar mensajes:
Borrar el propio durante 5 minutos, sin editar.
Ni editar ni borrar.
Editar y borrar el propio sin límite.
Decisión
Cada incidente tiene una conversación en un panel: desde la derecha en portátil y monitor y desde abajo en celular y tablet. El botón “Conversación (N)” va al lado del botón principal del detalle.
Quién: lee quien puede ver el incidente; escribe quien además tiene incidents.comment (todos los roles base). Se puede escribir también en un incidente terminado, porque un seguimiento no cambia su estado. En uno eliminado, no.
Datos: tabla incident_comments con claves foráneas reales, ULID público y mensajes de hasta 2.000 caracteres. Los mensajes no se anotan en el historial, para que el historial siga contando solo los cambios del incidente.
Borrar: solo el propio y solo durante 5 minutos. La fila queda con el texto vacío y la conversación muestra “Mensaje eliminado”. No se editan mensajes.
Tiempo real: escribir y borrar emiten IncidentCommented, que sale como incident.commented ({id, change}, sin el texto) por los mismos canales que un cambio del incidente. Quien lo recibe vuelve a pedir la conversación a la API, que aplica sus permisos.
Límite: 20 mensajes por minuto por persona.
Lectura: de a 50 mensajes, del más nuevo al más viejo, con before (el ULID del último recibido) para pedir los anteriores.
Alternativas descartadas
Mensajes en el historial: mezclaría conversación con cambios. El historial se volvería ruidoso y perdería su valor de rastro de lo que le pasó al incidente.
Comentarios tipo foro: más pesado de leer y de usar para lo que se necesita, que son preguntas y respuestas cortas.
Canales externos: es justo lo que se quería evitar: la información queda fuera del incidente.
Ni editar ni borrar: deja sin salida un error evidente, como escribir en el incidente equivocado o pegar algo que no debía.
Editar y borrar sin límite: cualquiera podría cambiar lo que otros ya leyeron o respondieron, y la conversación dejaría de ser confiable.
Consecuencias
Las preguntas y respuestas de un caso quedan en el caso, para quien lo atienda después.
El centro de notificaciones (siguiente bloque) se apoya en este mismo evento para avisar a quien participa.
Quedan como mejoras: adjuntos, menciones con @ y aviso por correo de cada mensaje.