5. Incidentes¶
5.1 Descripción general¶
El servicio de Incidentes de Trak.e es una herramienta central diseñada para la gestión integral de alertas y casos. Permite a las organizaciones identificar, analizar y resolver eficientemente situaciones críticas relacionadas con personas físicas o jurídicas. + Este servicio permite centralizar y estandarizar la respuesta operativa ante distintos tipos de riesgo. Estos pueden incluir: hits en listas de sanciones o terrorismo, cálculos de riesgo alto o comportamientos transaccionales inusuales. Al proporcionar un marco robusto para la documentación, colaboración y seguimiento del ciclo de vida de cada situación, Incidentes asegura una gestión transparente y auditable, facilitando la toma de decisiones y la aplicación de las medidas necesarias por parte de los operadores de back-office.
En el ecosistema de Trak.e, el término incidente se utiliza como un concepto abarcador para referirse a dos entidades principales: las alertas y los casos. Una alerta representa una notificación singular que surge de una perspectiva de riesgo específica, ya sea por un "hit" en una lista (como sanciones o terroristas) o un cálculo de riesgo elevado, requiere un análisis y una acción por parte de los operadores de back-office. Por otro lado, un caso es un tipo particular de alerta diseñado para agrupar múltiples alertas que pertenecen a un mismo "legajo", permite una gestión conjunta y hereda estados y comentarios de cierre del caso padre. Esta distinción permite a Trak.e manejar tanto eventos individuales como consolidar investigaciones complejas de manera eficiente.
5.2 Propiedades comunes de los incidentes (casos y alertas)¶
El servicio representa un incidente mediante un conjunto de propiedades. Las más importantes se detallan a continuación:
dprofile_id
: Identificador del legajo que generó la alerta. El término legajo se refiere a la entidad central gestionada por trak.e. Un legajo representa la información consolidada de una persona física o jurídica dentro de Trak.e, incluyendo sus datos personales, información KYC (Know Your Customer) y los resultados de los procesos de monitoreo. En esencia, el legajo es el perfil centralizado sobre el cual se aplican las reglas de monitoreo y se generan las alertas. Eldprofile_id
es el identificador único de este legajo en el sistema.user_id
: Identificador del usuario de la plataforma asignado a trabajar en la alerta.title
: Título de la alerta.incident_type
: Tipo del alerta (ejemplo:pep_blacklist_hit
en el caso de tener un hit en una lista de personas expuestas políticamente). Para los casos, se utiliza el tipocase
.state
: Estado de la alerta (ejemplo: abierto, cerrado, en progreso).severity
: Severidad de la alerta (ejemplo: alto, medio, bajo). Las alertas se crean con una severidad por defecto que puede ser configurable por tipo de alerta, e incluso por regla para aquellas alertas que sean el resultado de una regla de monitoreo transaccional o de monitoreo de legajos.priority
: Prioridad de la alerta (ejemplo: alto, medio, bajo). Las alertas se crean con una prioridad por defecto que puede ser configurable por tipo de alerta, e incluso por regla para aquellas alertas que sean el resultado de una regla de monitoreo transaccional o de monitoreo de legajos.due_date
: Fecha de vencimiento de la alerta. Las alertas se crean con una fecha de vencimiento por defecto que puede ser configurable por tipo de alerta.
5.2.1 Usuario asignado.¶
Se puede asignar una alerta o caso a un usuario de la plataforma mediante el
atributo user_id
. Para asegurarse de que el usuario puede tratar la alerta, se
chequea que dicho usuario posea todos los siguientes permisos:
Permisos |
---|
incident_case:fetch |
incident_case:update |
incident_case:search |
incident_comment:add |
incident_comment:search |
incident_comment:fetch |
incident_comment:update |
incident_comment:delete |
incident_task:update |
Nota
La lista de usuarios que pueden tomar incidentes o tareas es la misma.
5.2.2 Tareas¶
Un incidente (alerta o caso) puede tener asociada una lista de tareas. Son utilizadas para asignar actividades a diferentes usuarios (o al mismo) para su resolución, y que asiste a la investigación/resolución de la alerta.
5.2.3 Etiquetas¶
Se puede marcar una alerta utilizando strings arbitrarios como etiquetas. Una etiqueta tiene una longitud mínima de 2 caracteres y máxima de 20 caracteres.
5.2.4 Gestión de casos¶
Los casos son un tipo de incidente dentro de trak.e que sirven para agrupar diferentes alertas pertenecientes al mismo legajo y tratarlas a todas de forma conjunta, heredando estas los estados y comentarios de cierre del caso al cual pertenecen.
La agrupación de alertas en un caso puede hacerse de forma manual mediante la UI o por API, o bien de forma automática cuando las alertas en cuestión caigan dentro del criterio de agrupación automático configurado.
Solo puede haber un criterio de agrupación automática activo a la vez. Dicho criterio se crea indicando el periodo y una condición de agrupamiento. El periodo se refiere al rango en el que se quiere que estén las alertas a agrupar (puede ser por hora, dia, semana o mes). La condición de agrupamiento puede ser por tipo de incidente, por nombre de regla (es decir la regla que hizo que se active una alerta) o siempre, que agrupa cualquier tipo de alerta.
Es posible agregar nuevas alertas a un caso, así como también desvincular alertas de un caso al que pertenecen.
Nota
Las alertas pueden pertenecer solo a un unico caso.
Es posible eliminar un caso, al hacerlo las alertas que el mismo contenía se desvinculan automáticamente y se borran los documentos cargados.
La fecha de vencimiento de un caso es la fecha de vencimiento de la alerta más próxima a vencer. Al crear un caso se asigna como fecha de vencimiento la fecha de vencimiento de la alerta más cercana. Al agregar una alerta a un caso, la fecha de vencimiento se actualiza para reflejar la fecha de vencimiento de la alerta más cercana, si correspondiese.
5.2.5 Tipos de alerta¶
Trak.e ofrece una amplía lista de tipos de alertas precargados y listo para usar, entre los que se incluyen:
adverse_news_blacklist_hit
: El legajo fue encontrado en una lista de monitoreo de noticias adversas.obligated_subject_blacklist_hit
: El legajo fue encontrado en una lista de monitoreo de sujetos obligados.pep_blacklist_hit
: El legajo fue encontrado en una lista de monitoreo de personas expuestas politicamente.sanctioned_blacklist_hit
: El legajo fue encontrado en una lista de sanciones (ejemplo: OFAC).terrorist_blacklist_hit
: El legajo fue encontrado en una lista de terrorismo.wanted_blacklist_hit
: El legajo ha sido encontrado en una lista de buscados, por ejemplo, en las listas publicadas por el FBI o por Interpol.other_blacklist_hit
: El legajo fue encontrado en una lista de monitoreo - cuando no aplique un tipo más específico.trx_aml_alert
: El legajo exhibe un comportamiento transaccional inusual, por su número, cantidad o características no se enmarcan dentro del sistema y prácticas normales de un negocio, una industria o de un sector determinado. Estas alertas deben ser revisadas por analistas de prevención de lavado de dinero y financiamiento del terrorismo o por analistas de riesgo para determinar si la misma es sospechosa y tomar las acciones correspondientes si fuera el caso.trx_fraud_alert
: El legajo exhibe un comportamiento transaccional que lo hace sospechoso de estar involucrado en un uso fraudulento del sistema.trx_normative_alert
: El legajo exhibe un comportamiento transaccional que, sin ser inusual o sospechoso, debe ser revisado por un analista de backoffice.doc_due
: Un documento relacionado a este legajo ha alcanzado su fecha de vencimiento.doc_missing
: Falta en este legajo un documento que fue marcado como requerido siguiendo alguna regla de negocio de monitoreo de legajo.doc_notice
: Un documento en este legajo esta por expirar.due_diligence
: Una debida diligencia continua deberia llevarse a cabo en este legajo para asegurar que los documentos, datos e información recopilada dentro del proceso KYC se mantenga actualizada y pertinente.high_risk
: El legajo tiene riesgo alto, o bien, ha experimentado un aumento en su scoring de riesgo de manera inusual.other
: Tipo generico para otros tipos de alerta no contemplados.
Además de incluir un tipo generico para alertas manuales, trak.e ofrece la posibilidad de crear nuevos tipos de alertas para cubrir las necesidades de la organización. Estos tipos de alertas pueden ser utilizados tanto en reglas de monitoreo, como bien para altas manuales de incidentes. Aplicaciones externas también pueden crear incidentes en la plataforma via APIs.
5.2.6 Información adicional¶
Cada tipo de alerta contiene una información adicional específica que depende del tipo de alerta con la que estemos tratando. Por ejemplo, para las alertas de monitoreo transaccional para fraude, se incluye la transacción que ocasionó que se dispare la alerta.
Para los tipos de alertas creados por la organización, se puede guardar en la alerta información adicional acerca de la alerta en formato clave-valor. Trak.e permite a cada cliente configurar en un json schema1 la estructura de esta información adicional. Esta especificación permitirá validar y normalizar la información adicional. A diferencia de los legajos, la información adicional de las alertas difiere una de otra debido al tipo de incidente, por eso se debe definir un json schema para cada tipo.
Por ejemplo si una alerta de tipo custom_trx_alert
contiene información
adicional acerca de la transacción podemos definir:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/product.schema.json",
"title": "Trx fraud alert",
"description": "Información adicional de alerta",
"type": "object",
"properties": {
"transaction_info": {
"description": "Información de la transacción",
"type": "object",
"properties": {
"transaction_type": {
"type": "string"
},
"ref": {
"type": "string"
},
"timestamp": {
"type": "integer"
}
}
}
}
}
Este JSON Schema se carga como parte de la configuración de tipos de incidentes. Luego, las alertas dadas de alta con ese tipo se validan automaticamente en backend para verificar que la información adicional proporcionada se adecúa al JSON Schema definido. Si las mismas no se adecuan al JSON Schema definido, se devuelve un error 400 Bad Request con el detalle "model is not compliant with schema defined.".
Nota
El campo $schema indica la versión del borrador en la que se escribe el esquema JSON, por lo tanto es importante definirlo. Trak.e soporta JSON schemas con una versión de borrador igual o superior a Draft 4.
Luego de definir el schema, podemos guardar y acceder a la información en la
alerta utilizando el atributo info.transaction_info
. Cabe aclarar que ante la
ausencia de un schema, igualmente se puede guardar la información adicional en
la alerta, pero no se realizará ninguna validación ni tendrá soporte para el
ingreso manual.
5.3 Workflows¶
Las alertas poseen un atributo que especifica en que estado se encuentran. Los estados default de trak.e son:
- Abierta (
open
): La alerta aún no ha sido tratada. - En progreso (
in_progress
): La alerta esta siendo tratada. - Cerrada (
closed
): La alerta ha sido cerrada
Adicionalmente, se pueden definir todos los estados que la entidad considere necesarios. Cada entidad puede implementar el flujo de estados que mejor se ajuste a sus necesidades.
Se puede definir para cada estado final si el mismo necesita ser autorizado o no.
5.3.1 Autorización de alertas¶
Una vez que la alerta ha llegado a cierto estado considerado "final" - si dicho estado requiere autorización, se puede llevar el estado de autorización a uno de los siguientes:
pending
(autorización pendiente): Es el estado inicial. La alerta no fue evaluada ni autorizada.authorized
(autorizada): La alerta queda autorizada. Una vez que la alerta fue autorizada, la misma pasa a modo de solo lectura.not_required
(autorización no requerida): La autorización no es requerida para esta alerta. También se bloquea la edición de alertas.
Nota
Solo aquellos usuarios con el permiso
incident_supervisorcheck:add
pueden cambiar el estado de autorización de
una alerta.
5.3.2 Workflow Default¶
Trak.e tiene un workflow de estado de alertas predeterminado que puede ser ajustado a las necesidades de cada entidad.
graph TD
open --> in_progress
in_progress --> open
open --> closed
closed --> open
closed --> in_progress
open --> in_progress
Como se explico en el Workflow de Legajos, cada
transicion tiene una fuente (source
), un destino destination
representando
el estado actual y el estado deseado respectivamente. Adicionalmente, se puede
tener una condición que debe cumplirse para poder ejecutar la transicion
(condition
). Los estados disponibles a partir de un estado dado estan dados
por las transiciones y las condiciones que son evaluadas en ese momento.
Las condiciones tienen dos argumentos, la alerta actual y el contexto de seguridad del operador actual. La condición debe ser una expresión Python válida.2
Los diccionarios de Python se pueden acceder con la notación dot syntax de Javascript, en caso de que la clave no exista, devuelve
None
.
La alerta contiene toda la información discutida más arriba.
El contexto de seguridad incluye la propiedad scope
, que es una lista de los
roles que posee el usuario/aplicación que esta utilizando trak.e. De este modo,
se puede definir, por ejemplo, que que solo usuarios con rol "Supervisor de AML"
puedan mover alertas desde in_progress
a closed
.
Nota
Las claves para los roles por defecto están documentadas en Seguridad
5.4 Comentarios¶
Cada usuario de Trak.e Web puede agregar a la alerta los comentarios que considere relevantes. Estos comentarios estan en formato HTML, lo que permite tener texto enriquecido en formato. Las opciones de formato disponibles son: negrita, itálicas, subrayado, tachado, diferentes opciones de tamaño de letra. Los comentarios se guardan junto al usuario que lo realizó. Además, también se guarda la fecha y hora del comentario. Un usuario puede editar o borrar comentarios que hizo, pero solo puede ver los comentarios de otras personas.
Además, trak.e ofrece facilidades para guardar comentarios utilizados con frecuencia. El objetivo de dichos comentarios es permitir su utilización para agilizar el análisis y gestión de una alerta o caso. Estos comentarios pueden ser de uso "privado", es decir, solo accesibles para los usuarios que los hayan definido; o bien "publicos", en cuyo caso serán accesibles para todos los usuarios de la plataforma con los permisos asociados.
5.5 Recursos¶
Recurso |
---|
incident_case |
incident_comment |
incident_document |
incident_state |
incident_summary |
incident_task |
incident_group |
5.6 Permisos asociados¶
Permiso | Descripción |
---|---|
incident_case:add | agregar una alerta |
incident_case:update | actualizar una alerta |
incident_case:fetch | obtener una alerta |
incident_case:search | listar las alertas |
incident_case:delete | borrar una alerta |
incident_comment:add | agregar un comentario a una alerta |
incident_comment:fetch | obtener un comentario |
incident_comment:search | listar los comentarios de una alerta |
incident_comment:update | actualizar un comentario |
incident_comment:delete | borrar un comentario de una alerta |
incident_document:add | agregar un documento a una alerta |
incident_document:search | listar los documentos de una alerta |
incident_configuration:add | agregar una regla de agrupamiento de alertas |
incident_configuration:update | actualizar una regla de agrupamiento de alertas |
incident_configuration:fetch | obtener una regla de agrupamiento de alertas |
incident_configuration:search | listar las reglas de agrupamiento de alertas |
incident_configuration:delete | borrar una regla de agrupamiento de alertas |
incident_state:update | actualizar el estado de una alerta |
incident_state:search | listar los estados posibles de una alerta |
incident_summary:fetch | obtener estadísticas de alertas |
incident_summary:update | actualizar estadísticas de alertas |
incident_task:add | agregar una tarea a una alerta |
incident_task:update | actualizar una tarea de una alerta |
incident_task:delete | borrar una tarea de una alerta |
incident_task:fetch | obtener una tarea de una alerta |
incident_task:search | listar las tareas de una alerta |
incident_group:add | agrupar alertas del mismo legajo en un caso |
incident_supervisorcheck:add | autorizar alertas |
5.7 API¶
Para más información técnica sobre el servicio (como por ejemplo, buscar, crear y modificar alertas) se encuentra disponible la documentación de la API.
5.7.1 Caso de uso: Alta de alerta por API¶
Para dar de alta un alerta por API, se debe invocar al servicio POST /incident/case
. Se debe enviar un header Authorization: Bearer {token}
con un token que sea válido y dentro de sus claims cuente con el permiso incident_case:add
. El body de la request se envía en formato JSON.
Por ejemplo, la siguiente consulta crea una alerta con titulo y descripción relacionada al legajo 5f8f17b47932b41efd90a8e3
.
curl --request POST \
--url https://api-dev.trake.io/incident/case \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"description": "this is a description ",
"priority": "high",
"severity": "high",
"title": "Titulo de la alerta",
"dprofile_id": "5f8f17b47932b41efd90a8e3",
"due_date": 1759995745394,
"incident_type": "other",
"info": {
}
}'
Nota
El legajo debe existir previamente para que la request tenga exito.
En caso de respuesta exitosa, se recibe un codigo de estado 201 Created y un body JSON como el siguiente, indicando que la alerta ha sido creada:
{
"dprofile_is_employee": null,
"user_id": null,
"title": "Titulo de la alerta",
"description": "this is a description ",
"state": "abierta",
"severity": "high",
"priority": "high",
"due_date": 1759995745394,
"info": {},
"closed_at": null,
"dprofile_id": "5f8f17b47932b41efd90a8e3",
"dprofile_name": "Leandra Gual-Barón",
"dprofile_risk": "low",
"dprofile_tax_payer_id": "14362595630",
"incident_type": "other",
"cabinet_id": null,
"case_hash": "0f73f547-3d03-4e65-8912-e357913f1a83",
"id": "6835d8208bec087da7436c94",
"created_at": 1748359200041,
"modified_at": 1748359200041,
"created_by": "smart_administrador2",
"modified_by": "smart_administrador2",
"version": 1,
"id_number": null,
"confirmed": null,
"tags": [],
"tasks": null,
"parent_case": null,
"related_alerts": [],
"supervisor_authorization": null
}
5.7.2 Caso de uso: Asignación de usuario a alerta por API¶
Para asignar un usuario a una alerta dada, se debe relacionar el id
del usuario al id
de la alerta. Por ejemplo, si queremos asignar el usuario con id 6000962c2971e130790dd435
a la alerta con id 6835d8208bec087da7436c94
, podemos lograrlo mediante el uso de una operación PATCH:
curl --request PATCH \
--url https://api-dev.trake.io/incident/case/6835d8208bec087da7436c94 \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '[
{"op": "add", "path": "/user_id", "value": "6000962c2971e130790dd435" }
]'
Nota
Tanto el usuario como la alerta a asignar deben existir previamente. Además, el usuario debe contar con los permisos necesarios para gestionar una alerta.
En caso de exito, se devuelve un status 204 No Content.
Utilizando un request GET se puede verificar que efectivamente el user_id
a sido
asignado en la alerta, por ejemplo:
curl --request GET \
--url https://api-dev.trake.io/incident/case/6835d8208bec087da7436c94 \
--header 'Authorization: Bearer {token}'
En caso de exito, esta solicitud responde 200 Ok con un body json como el siguiente:
{
"dprofile_is_employee": null,
"user_id": "6000962c2971e130790dd435",
"title": "Titulo de la alerta",
"description": "this is a description ",
"state": "abierta",
"severity": "high",
"priority": "high",
"due_date": 1759995745394,
"info": {},
"closed_at": null,
"dprofile_id": "5f8f17b47932b41efd90a8e3",
"dprofile_name": "Leandra Gual-Barón",
"dprofile_risk": "low",
"dprofile_tax_payer_id": "14362595630",
"incident_type": "other",
"cabinet_id": null,
"case_hash": "0f73f547-3d03-4e65-8912-e357913f1a83",
"id": "6835d8208bec087da7436c94",
"created_at": 1748359200041,
"modified_at": 1748359986037,
"created_by": "smart_administrador2",
"modified_by": "smart_administrador2",
"version": 2,
"id_number": null,
"confirmed": null,
"tags": [],
"tasks": null,
"parent_case": null,
"related_alerts": [],
"supervisor_authorization": null
}
5.7.3 Caso de uso: Cierre de un caso vía API¶
A continuación se expone un ejemplo de como lograr un cierre de caso vía API. En general, el cierre de un caso involucra dos pasos separados que se pueden realizan en cualquier orden: un comentario de cierre, y el cambio de estado del caso.
5.7.3.1 Cambio de estado del caso¶
El cambio de estado se logra a través del endpoint PUT /incident/case/{case_id}/state/{state}
. Por ejemplo con la siguiente request se cambia el estado a closed
:
curl 'https://api-dev.trake.io/incident/case/6835e8e68bec087da7436c96/state/no_aplica' \
-X 'PUT' \
-H 'authorization: Bearer {token}'
curl 'https://api-dev.trake.io/incident/case/683777df8bec087da7436c9e/state/no_aplica' \ -X 'PUT' \ -H 'authorization: Bearer ${token}'
Nota
El caso debe existir previamente. El estado no_aplica
debe
existir previamente. Además, el usuario o cliente codificado en el token
debe poseer los permisos necesarios y cumplir con la condición asociada a la
transición entre estados si correspondiese. Si no existe transición entre el
estado actual y el estado no_aplica
, se devuelve un error.
En caso de exito se devuelve un estado 204 "No Content". Se puede verificar utilizando un GET que se actualizo el estado y la fecha de cierre, por ejemplo:
curl 'https://api-dev.trake.io/incident/case/6835e8e68bec087da7436c96' \
-H 'accept: application/json, text/plain, */*' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json;charset=UTF-8'
en caso de exito, esta request devuelve un json como el siguiente:
{
"dprofile_is_employee": null,
"user_id": null,
"title": "27214497412 - HERNANDEZ, GABRIELA",
"description": "\n27214497412 - HERNANDEZ, GABRIELA\n27214497412 - HERNANDEZ, GABRIELA",
"state": "no_aplica",
"severity": "high",
"priority": "high",
"due_date": 1748363482571,
"info": {},
"closed_at": null,
"dprofile_id": "6835e8da484bff735e4216ba",
"dprofile_name": "HERNANDEZ, GABRIELA",
"dprofile_risk": "low",
"dprofile_tax_payer_id": "27214497412",
"incident_type": "case",
"cabinet_id": null,
"case_hash": "0116dd3f-41ac-483c-8221-7510233f318b",
"id": "6835e8e68bec087da7436c96",
"created_at": 1748363494920,
"modified_at": 1748363581344,
"created_by": "smart_administrador2",
"modified_by": "smart_administrador2",
"version": 2,
"id_number": null,
"confirmed": null,
"tags": [],
"tasks": null,
"parent_case": null,
"related_alerts": ["6835e8da73af83380c163476", "6835e8da73af83380c163477"],
"supervisor_authorization": null
}
Se puede verificar que las alertas relacionadas también han cambiado su estado con el mismo endpoint, por ejemplo:
curl 'https://api-dev.trake.io/incident/case/6835e8da73af83380c163477' \
-H 'accept: application/json, text/plain, */*' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json;charset=UTF-8'
Esta consulta, si tiene exito, devuelve un json como el siguiente:
{
"user_id": null,
"title": "27214497412 - HERNANDEZ, GABRIELA",
"description": "",
"state": "no_aplica",
"severity": "low",
"priority": "medium",
"due_date": 1748363482597,
"info": {},
"confirmed": false,
"tags": [],
"tasks": null,
"parent_case": "6835e8e68bec087da7436c96",
"related_alerts": [],
}
5.7.3.2 Agregar comentario de cierre¶
A continuación se muestra un ejemplo de como agregar un comentario de cierre.
curl --request POST \
--url https://api-dev.trake.io/incident/case/6835e8e68bec087da7436c96/comments \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data ' {
"comment":"esto es un comentario",
"closing_comment": true
}'
Es importante marcar closing_comment
como true
para que quede reflejado correctamente como comentario de cierre. El comentario queda a nombre del usuario o aplicación identificado por el token. El comentario de cierre se propaga a las alertas relacionadas.
5.8 Diagrama de componentes¶
El servicio de incidentes se encuentra dividido en dos componentes principales:
-
Service
: expone una API RESTful que puede ser consumida por aplicaciones externas o usuarios a través de Trak.e Web. Es responsable de gestionar operaciones sincrónicas como la creación, consulta y actualización de incidentes, comentarios y tareas. -
Processor
: procesa eventos provenientes del resto del ecosistema Trak.e (por ejemplo, nuevos hits en listas, cambios en el scoring de riesgo, etc.). Funciona de forma asíncrona, reaccionando a estos eventos para generar o actualizar incidentes, o publicar eventos derivados.
Esta separación permite desacoplar la lógica reactiva y asincrónica del consumo directo vía API, facilitando escalabilidad y resiliencia.
Componente | Descripción |
---|---|
Service |
Expone la API REST pública utilizada por sistemas externos o Trak.e Web. |
Processor |
Consume eventos asincrónicos de otros servicios y genera o actualiza incidentes. |
A continuación se presenta un diagrama de alto nivel de la arquitectura de trak.e con foco en el servicio de incidentes y su interacción con los otros componentes del sistema:
graph TB
subgraph Infrastructure
direction LR
MongoDB[(MongoDB)]
Kafka[(Kafka)]
end
subgraph Incident
direction LR
Service[Service]
Processor[Processor]
end
subgraph Other Services
direction LR
Blacklists[Blacklists]
Doc[Doc]
Dprofile[Dprofile]
Risk[Risk]
Transactions[Transactions]
Middleware[Middleware]
end
DocService
%% Comunicaciones síncronas (REST - líneas continuas)
Service <--> DocService
%% Comunicaciones offline (líneas punteadas)
Blacklists -.-> Processor
Doc -.-> Processor
Dprofile -.-> Processor
Risk -.-> Processor
Transactions -.-> Processor
Middleware -.-> Processor
%% Acceso a base de datos
Incident <--> Infrastructure
Processor -.->| publish | Kafka
Service -.->| publish | Kafka