Buscar en la documentación

Crear un incidente

Del formulario que guía al incidente guardado con su código del año, su vencimiento y su historial, protegido contra el doble envío.

Módulo incidents1 min de lecturaVer en GitHub

Un mismo formulario sirve para crear y para editar. Al crear, ayuda a la persona: elige la prioridad en tarjetas con su plazo, sugiere el vencimiento, muestra incidentes parecidos ya reportados y una vista previa. La API valida todo de nuevo y es quien decide el código, el estado inicial y el vencimiento si no se indicó uno.

Diagrama5 carriles · 12 pasos · 3 salidas de error
SíNoSíNoSíNoSíNoLlena título,descripción yprioridad1¿Los campos seven bien?2Marca los camposEnvía POST/incidents conIdempotency-Key3¿Ya llegó esaclave conéxito?4Devuelve la mismarespuesta, sincrear otro5¿Datos válidosy permiso paracrear?6Responde 422 o403Si traeasignado, ¿lopuede asignar?7Responde 403 o422Fija el vencimiento8Toma el siguientecódigo del año9Guarda el incidentey su historial10Avisa del cambiotras confirmar11Abre el detalle con"IncidenteTZ-26-0142 creado"12
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. PersonaLlena título, descripción y prioridad

    En /incidentes/nuevo. Si escribe un título, "¿Ya lo reportaron?" busca parecidos tras 400 ms. Puede elegir el vencimiento (Sugerido, Hoy, Mañana u Otra fecha) y, si tiene permiso, a quién asignarlo o "Asignármelo".

  2. Navegador¿Los campos se ven bien?

    Validación solo de experiencia (título de 5 a 80 caracteres con contador, campos obligatorios). La regla de verdad está en la API.

  3. NavegadorEnvía POST /incidents con Idempotency-Key

    La clave se genera por contenido: reintentar el mismo envío (doble clic, red lenta) reutiliza la clave; cambiar algo genera otra.

  4. API¿Ya llegó esa clave con éxito?

    La clave es por persona y por ruta y se recuerda 24 h. Si llega con otro contenido, responde 409 IDEMPOTENCY_KEY_REUSED; si el primer envío sigue en curso, 409 IDEMPOTENCY_IN_PROGRESS.

  5. APIDevuelve la misma respuesta, sin crear otro

    Con la cabecera Idempotent-Replayed.

  6. API¿Datos válidos y permiso para crear?

    Título de 5 a 80, descripción hasta 5.000, prioridad activa del catálogo, vencimiento en el futuro (si viene) y permiso incidents.create.

  7. APISi trae asignado, ¿lo puede asignar?

    A cualquiera con incidents.assign; solo a sí mismo con incidents.take. Quien no puede asignar a otros recibe siempre 403, para no revelar a quién se podría asignar.

  8. APIFija el vencimiento

    Si la persona lo indicó, se respeta. Si no, ahora + el tiempo de la prioridad (Baja 5 días, Media 3 días, Alta 1 día, Crítica 4 h; datos editables del catálogo).

  9. Base de datosToma el siguiente código del año

    Ejemplo TZ-26-0142: prefijo, año del negocio (America/Bogota) y consecutivo de incident_code_sequences, tomado en la misma transacción con una sola sentencia atómica.

  10. Base de datosGuarda el incidente y su historial

    En la misma transacción: el incidente en el estado inicial (Abierto), created_by obligatorio, y la entrada created del historial (con el asignado si lo hubo), con IP y navegador.

  11. Cola y avisosAvisa del cambio tras confirmar

    Solo después del commit: sube la generación de la caché del dashboard, emite incident.changed a los canales que pueden verlo y crea las notificaciones (al asignado; a coordinación si es crítico o queda sin asignar).

  12. NavegadorAbre el detalle con "Incidente TZ-26-0142 creado"

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
VALIDATION_FAILED422Algún campo no cumple; cada campo trae su código (TOO_SHORT, TOO_LONG…)Hay datos por corregir. Revisa los campos marcados. (y el mensaje de cada campo debajo de él)
FORBIDDEN_ACTION403Sin permiso para crear, o para asignar a esa personaNo tienes permiso para hacer esta acción. Si crees que deberías tenerlo, habla con un administrador.
INVALID_ASSIGNEE422Quien asigna eligió a alguien que no puede recibir incidentesEsta persona no puede recibir incidentes. Elige a alguien de la lista.
IDEMPOTENCY_IN_PROGRESS409El mismo envío todavía se está procesandoTu incidente se está creando. Espera unos segundos antes de intentarlo de nuevo.
IDEMPOTENCY_KEY_REUSED409La misma clave llegó con otro contenidoNo pudimos confirmar el envío. Recarga la página e inténtalo de nuevo.

Dónde está en el código