SIGRID_CNT_001 - Sistema de Información de Gestión de Riesgos y Desastres (SIGRID)

@startuml

scale 0.7

!include <C4/C4_Container>
!include <C4/C4_Context>

title Diagrama de Contenedores - Sistema de Información de Gestión de Riesgos y Desastres (SIGRID)

System_Ext(SYSGROUP, "Sistemas de monitoreo o Sistemas de Organizaciones pertenecientes al SIGRID", "Sistemas propios de cada organización que envían información al SIGRID.", $link="../systems.html#ITRENDCL-SIGRID-SYS-SYSGROUP")
System(SIGRIDCLIENTS, "Aplicaciones Clientes de SIGRID", "Aplicaciones clientes con distinto énfasis que utilizan los nodos del SIGRID para disponibilizar información.", $link="../systems.html#ITRENDCL-SIGRID-SYS-SIGRIDCLIENTS")
Boundary(EXTERNAL_AUTH, "Sistemas de autenticación externos") {
    System_Ext(OAUTH_SENAPRED, "Proveedor de Autenticación SENAPRED", "Oauth server Microsoft Entra", $link="../systems.html#ITRENDCL-SIGRID-SYS-OAUTH_SENAPRED")
    System_Ext(OAUTH_BOMBEROS, "Proveedor de Autenticación OTMA", "Oauth server Microsoft Entra", $link="../systems.html#ITRENDCL-SIGRID-SYS-OTMA")
    System_Ext(OAUTH_SERNAGEOMIN, "Proveedor de Autenticación Organismo Público", "Oauth server Microsoft Entra", $link="../systems.html#ITRENDCL-SIGRID-SYS-OAUTH_ORG_PUBLICO")
}

System_Boundary(SIGRID, "SIGRID", $link="../systems.html#ITRENDCL-SIGRID-SYS-SIGRID") {
    Container_Boundary(DOM_GOB, "Dominio de Gobernanza de datos", $link="../containers.html#ITRENDCL-SIGRID-DOM-GOB") {
        Container(SRV_GOB_DQ, "Servicio de Calidad de datos", "Almacena y valida la calidad de los datos.", $link="../containers.html#ITRENDCL-SIGRID-SRV-GOB-DQ")
        Container(SRV_GOB_LC, "Servicio de Ciclo de vida de datos", "Define estándares de ciclo de vida y trazabilidad de los datos.", $link="../containers.html#ITRENDCL-SIGRID-SRV-GOB-LC")
        Container(SRV_GOB_PM, "Servicio de Ciclo de vida de datos", "Define estándares de ciclo de vida y trazabilidad de los datos.", $link="../containers.html#ITRENDCL-SIGRID-SRV-GOB-LC")
        ContainerDb(DB_GOB, "BD Gobernanza", "Base de datos de información de gobernanza.", $link="../containers.html#ITRENDCL-SIGRID-DB-GOB")
    }

    Container_Boundary(DOM_EC, "Dominio de Comunicación externa", $link="../containers.html#ITRENDCL-SIGRID-DOM-EC") {
        Container(SRV_EC_API, "API Management", "Punto de entrada para clientes, gestión de autenticación y autorización.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EC-API")
    }

    Container_Boundary(DOM_UM, "Dominio de Gestión de usuarios", $link="../containers.html#ITRENDCL-SIGRID-DOM-UM") {
        Container(SRV_UM_IDENT, "Servicio de identidad", "Servicio de gestión de identidades federadas.", $link="../containers.html#ITRENDCL-SIGRID-SRV-UM-IDENT")
        Container(SRV_UM_PERM, "Servicio de permisos y políticas", "Servicio de gestión de permisos de usuarios.", $link="../containers.html#ITRENDCL-SIGRID-SRV-UM-PERM")
    }

    Container_Boundary(DOM_INT, "Dominio de Integración", $link="../containers.html#ITRENDCL-SIGRID-DOM-INT") {
        ContainerQueue(SRV_INT_INGESTQUEUE, "Cola de ingesta", "Recibe la información de los sistemas de monitoreo usando el formato EDXL encriptado.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INT-INGESTQUEUE")
        Container(SRV_INT_DISPATCH, "Despachador", "Envía información a OTM.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INT-DISPATCH")
        Container(SRV_INT_PIPELINE, "Pipeline EDXL", "Transforma mensajes EDXL a mensajes del *broker* para ser distribuídos en el SIGRID.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INT-PIPELINE")
        Container(SRV_INT_CONV, "Transformador EDXL", "Transforma información del sistema a EDXL para ser comunicado.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INT-CONV")
        Container(SRV_INT_PUB, "Publicación", "Publica información al *broker* de mensajes para ser comunicada a otros servicios.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INT-PUB")
        ContainerQueue(SRV_INT_PUBQUEUE, "Cola de publicación", "Recibe información para ser enviada al OTM.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INT-PUBQUEUE")
    }

    Container_Boundary(DOM_EMG, "Dominio de Emergencia", $link="../containers.html#ITRENDCL-SIGRID-DOM-EMG") {
        Container(SRV_EMG_ORCH, "Gestor documental", "Orquestador del almacenamiento de información.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-ORCH")
        Container(SRV_EMG_DOCFMT, "Transformador de formatos", "Sistema de conversión de formatos.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-DOCFMT")

        Boundary(DOM_EMG_APPS, "") {
            Container(SRV_EMG_INFNET, "Información del estado de la emergencia", "Gestiona recursos de emergencia.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-INFNET")
            Container(SRV_EMG_INFPEOPLE, "Información para la ciudadanía", "Gestiona información para la ciudadanía.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-INFPEOPLE")
            Container(SRV_EMG_INFHISTORY, "Información histórica", "Gestión de eventos, amenazas e información histórica.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-INFHISTORY")
            Container(SRV_EMG_KNOWLEDGE, "Información de Conocimiento", "Almacena información de gestión de conocimiento.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-KNOWLEDGE")
            Container(SRV_EMG_RESOURCES, "Información de recursos de emergencia", "Gestiona recursos de emergencia.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-RESOURCES")
            Container(SRV_EMG_MONITOR, "Información de organismos de monitoreo", "Gestiona la información de los sistemas de monitoreo.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-MONITOR")
        }

        Container(SRV_EMG_SEARCH, "Servicio de búsqueda", "Ejecuta búsquedas de información.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-SEARCH")
        ContainerDb(DB_EMG, "BD emergencia", "Base de datos de información documental sobre emergencias.", $link="../containers.html#ITRENDCL-SIGRID-DB-EMG")
        ContainerDb(DB_EMG_FS, "Sistema de archivos", "Sistema de archivos.", $link="../containers.html#ITRENDCL-SIGRID-DB-EMG-FS")
    }

    Container_Boundary(DOM_GIS, "Dominio de Información territorial", $link="../containers.html#ITRENDCL-SIGRID-DOM-GIS") {
        Container(SRV_GIS_BOUNDS, "Servicio de límites geográficos", "Servicio que disponibiliza límites geográficos de Chile.", $link="../containers.html#ITRENDCL-SIGRID-SRV-GIS-BOUNDS")
        Container(SRV_GIS_WEBMAPS, "Servidores de Mapas Web", "Servicio de gestión de información geográfica como *layers* y mapas usando el protocolo WMS.", $link="../containers.html#ITRENDCL-SIGRID-SRV-GIS-WEBMAPS")
        Container(SRV_GIS_INGEST, "Ingesta de Información territorial", "Servicio que almacena nueva información territorial.", $link="../containers.html#ITRENDCL-SIGRID-SRV-GIS-INGEST")
        ContainerDb(DB_GIS, "BD Espacial", "Base de datos capaz de indexar eficientemente información georeferenciada.", $link="../containers.html#ITRENDCL-SIGRID-DB-GIS")
    }

    Container_Boundary(DOM_ANALYSIS, "Dominio de Análisis de datos", $link="../containers.html#ITRENDCL-SIGRID-DOM-ANALYSIS") {
        Container(SRV_ANALYSIS_INGEST, "Ingesta de información", "Orquestador para el análisis de información.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ANALYSIS-INGEST")
        Container(SRV_ANALYSIS_ETL, "ETL", "Sistema de transformación de los datos para ser analizados.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ANALYSIS-ETL")
        Container(SRV_ANALYSIS_RESOURCES, "Análisis de recursos de emergencia", "Análisis de recursos de emergencia.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ANALYSIS-RESOURCES")
        Container(SRV_ANALYSIS_STATS, "Generación de estadísiticas", "Análisis de estadísticas internas de SIGRID.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ANALYSIS-STATS")
        Container(SRV_ANALYSIS_OTHER, "Otros posibles análisis", "Anlálsis utilizando algoritmos de inteligencia artificial, *data lake* entre otros.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ANALYSIS-OTHER")
        ContainerDb(DB_ANALYSIS, "BD Analítica", "Base de datos que almacena los resultados de los análisis de la información del SIGRID.", $link="../containers.html#ITRENDCL-SIGRID-DB-ANALYSIS")
    }

    Container_Boundary(DOM_ALERT, "Dominio de Creación de alertas", $link="../containers.html#ITRENDCL-SIGRID-DOM-ALERT") {
        Container(SRV_ALERT_CAP, "Servicio CAP", "Sistema de publicación de mensajes CAP.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ALERT-CAP")
        Container(SRV_ALERT_SIREN, "Creación de sirenas", "Sistema de sirenas.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ALERT-SIREN")
        Container(SRV_ALERT_SAE, "Creación de SAE", "Sistema de Alertas de Emergencias", $link="../containers.html#ITRENDCL-SIGRID-SRV-ALERT-SAE")
    }

    Container_Boundary(DOM_NOTIFY, "Dominio de Notificaciones", $link="../containers.html#ITRENDCL-SIGRID-DOM-NOTIFY") {
        Container(SRV_NOTIFY_ORCH, "Gestor de notificaciones", "Orquestador de la creación de notificaciones.", $link="../containers.html#ITRENDCL-SIGRID-SRV-NOTIFY-ORCH")
        Container(SRV_NOTIFY_CHANNELS, "Gestor de canales", "Gestión de canales de comunicación.", $link="../containers.html#ITRENDCL-SIGRID-SRV-NOTIFY-CHANNELS")
        Container(SRV_NOTIFY_SUBS, "Servicio de suscripciones", "Gestión de suscriptores.", $link="../containers.html#ITRENDCL-SIGRID-SRV-NOTIFY-SUBS")
        ContainerDb(DB_NOTIFY, "BD Notificaciones", "Base de datos de información de notificaciones enviadas.", $link="../containers.html#ITRENDCL-SIGRID-DB-NOTIFY")
    }

    Container_Boundary(DOM_COM, "Dominio de Comunicación interna", $link="../containers.html#ITRENDCL-SIGRID-DOM-COM") {
        ContainerDb(DB_COM_BROKER, "Message broker", "Bus de eventos del sistema.", $link="../containers.html#ITRENDCL-SIGRID-DB-COM-BROKER")
    }

    Container_Boundary(DOM_ENCRYPT, "Dominio de Encriptación y codificación", $link="../containers.html#ITRENDCL-SIGRID-DOM-ENCRYPT") {
        Container(SRV_ENCRYPT_KMS, "KMS", "Servicio de gestión de claves.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ENCRYPT-KMS")
        Container(SRV_ENCRYPT_CHK, "Servicio de valicación de checksums", "Servicio de codificación de mensajes en formato autorreparable.", $link="../containers.html#ITRENDCL-SIGRID-SRV-ENCRYPT-CHK")
    }

    Container_Boundary(DOM_INTERNAL, "Dominio interno", $link="../containers.html#ITRENDCL-SIGRID-DOM-INTERNAL") {
        Container(SRV_INTERNAL_ORCH, "Gestión interna", "Gestión interna de oportunidades y proyectos de SENAPRED, COGRID.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INTERNAL-ORCH")
        ContainerDb(DB_INTERNAL, "Base de datos de gestión interna", "Información interna de SENAPRED.", $link="../containers.html#ITRENDCL-SIGRID-DB-INTERNAL")
        ContainerDb(DB_INTERNAL_FS, "Sistema de archivos", "Sistema de archivos.", $link="../containers.html#ITRENDCL-SIGRID-DB-INTERNAL-FS")
    }

    Container_Boundary(DOM_PLANS, "Dominio de Planes", $link="../containers.html#ITRENDCL-SIGRID-DOM-PLANS") {
        Container(SRV_PLANS_COMPLIANCE, "Cumplimiento de planes", "Servicio que gestiona el cumplimiento de planes de emergencia.", $link="../containers.html#ITRENDCL-SIGRID-SRV-PLANS-COMPLIANCE")
        Container(SRV_PLANS_ORCH, "Gestión de planes", "Almacena información de planes de emergencia.", $link="../containers.html#ITRENDCL-SIGRID-SRV-PLANS-ORCH")
        ContainerDb(DB_PLANS, "Base de datos de planes", "Base de datos de planes de emergencia.", $link="../containers.html#ITRENDCL-SIGRID-DB-PLANS")
        ContainerDb(DB_PLANS_FS, "Sistema de archivos", "Sistema de archivos.", $link="../containers.html#ITRENDCL-SIGRID-DB-PLANS-FS")
    }

    Container_Boundary(DOM_NODES, "Dominio de Gestión de nodos", $link="../containers.html#ITRENDCL-SIGRID-DOM-NODES") {
        Container(SRV_NODES_HEALTHCHECK, "Servicio de health check", "Gestión y **registro** de nodos P2P.", $link="../containers.html#ITRENDCL-SIGRID-SRV-NODES-HEALTHCHECK")
        Container(SRV_NODES_ORCH, "Gestor de nodos.", "Envío de información de *snapshots* del SIGRID.", $link="../containers.html#ITRENDCL-SIGRID-SRV-NODES-ORCH")
        Container(DB_NODES, "Lista de nodos activos", "Base de datos para almacenar los nodos activos del sistema", $link="../containers.html#ITRENDCL-SIGRID-DB-NODES")
    }

    Container_Boundary(DOM_BOOT, "Dominio de Arranque", $link="../containers.html#ITRENDCL-SIGRID-DOM-BOOT") {
        Container(SRV_BOOT_BACKUPS, "Respaldos y restauración", "Gestión de respaldos y restauración de automática del sistema.", $link="../containers.html#ITRENDCL-SIGRID-SRV-BOOT-BACKUPS")
        Container(SRV_BOOT_BOOT, "Inicialización de nodo", "Proceso de restauración del sistema a partir de un *snapshot*.", $link="../containers.html#ITRENDCL-SIGRID-SRV-BOOT-BOOT")
        Container(SRV_BOOT_SNAPSHOT, "Creación de snapshots", "Creación de representaciones del estado del sistema (*snapshots*), que pueden ser utilizados para su recuperación o para la inicialización de otros nodos SIGRID.", $link="../containers.html#ITRENDCL-SIGRID-SRV-BOOT-SNAPSHOT")
        ContainerDb(DB_BOOT, "Información de respaldos y snapshots", "Base de datos que almacena respaldos y *snapshots* del SIGRID.", $link="../containers.html#ITRENDCL-SIGRID-DB-BOOT")
    }

    Container_Boundary(DOM_AUDIT, "Dominio de Auditoría", $link="../containers.html#ITRENDCL-SIGRID-DOM-AUDIT") {
        Container(SRV_AUDIT_PROC, "Procesador de información", "Recibe acciones del sistema para almacenarlas.", $link="../containers.html#ITRENDCL-SIGRID-SRV-AUDIT-PROC")
        ContainerDb(DB_AUDIT_TRACE, "Auditoría de trazabilidad", "Almacena la información sobre acciones de los usuarios.", $link="../containers.html#ITRENDCL-SIGRID-DB-AUDIT-TRACE")
        ContainerDb(DB_AUDIT_ACCESS, "Auditoría de acceso", "Almacena la información sobre accessos al sistema.", $link="../containers.html#ITRENDCL-SIGRID-DB-AUDIT-ACCESS")
        ContainerDb(DB_AUDIT_EVENTS, "Base de datos de Eventos", "Base de datos para almacenar los eventos procesados en el sistema.", $link="../containers.html#ITRENDCL-SIGRID-DB-AUDIT-EVENTS")
    }

    Container_Boundary(DOM_INTELLIGENCE, "Dominio de inteligencia", $link="../containers.html#ITRENDCL-SIGRID-DOM-INTELLIGENCE") {
        ContainerDb(DB_INTELLIGENCE_RAG, "Base de datos de inteligencia", "Base de datos vectorial para almacenar la información de inteligencia generada.", $link="../containers.html#ITRENDCL-SIGRID-DB-INTELLIGENCE")
        Container(SRV_INTELLIGENCE_RAG, "Servicio de RAG", "Servicio de generación basado en la recuperación de la información.", $link="../containers.html#ITRENDCL-SIGRID-SRV-INTELLIGENCE-RAG")
}

System_Ext(GOOGLE_CAP, "Google Public Alerts", "Notificaciones de Alertas para la población mediante Google", $link="../systems.html#ITRENDCL-SIGRID-SYS-GOOGLE_CAP")
System_Ext(EMAIL, "Email Service", "Sistema de envío de emails.", $link="../systems.html#ITRENDCL-SIGRID-SYS-EMAIL")
System_Ext(PUSH, "Push Notification Service", "Sistema de envío de notificaciones Push.", $link="../systems.html#ITRENDCL-SIGRID-SYS-PUSH")
System_Ext(SIGRIDNODE, "Nodo SIGRID", "Nodo autónomo con capacidad de operación independiente y sincronización P2P.", $link="../systems.html#ITRENDCL-SIGRID-SYS-SIGRIDNODE")

Rel(SRV_GOB_DQ, DB_GOB, "consulta/guarda")
Rel(SRV_GOB_LC, DB_GOB, "consulta/guarda")
Rel(SRV_GOB_PM, DB_GOB, "consulta/guarda")

Rel(SIGRIDCLIENTS, SRV_EC_API, "usa", "API")
Rel(SIGRIDCLIENTS, SRV_UM_IDENT, "usa", "API")
Rel(SYSGROUP, SRV_EC_API, "usa", "API")
Rel(SRV_EC_API, DOM_GOB, "usa", "API")
Rel(SRV_EC_API, SRV_EMG_ORCH, "expone", "API")
Rel(SRV_EC_API, SRV_EMG_SEARCH, "expone", "API")
Rel(SRV_EC_API, SRV_GIS_BOUNDS, "expone", "API")
Rel(SRV_EC_API, SRV_ANALYSIS_INGEST, "expone", "API")
Rel(SRV_EC_API, DOM_ALERT, "expone", "API")
Rel(SRV_EC_API, SRV_PLANS_ORCH, "expone", "API")

Rel(SRV_UM_IDENT, EXTERNAL_AUTH, "federa identidades", "API")
Rel(SRV_UM_IDENT, SRV_UM_PERM, "usa", "API")

Rel(SYSGROUP, SRV_INT_INGESTQUEUE, "informa", "API")
Rel(SRV_INT_INGESTQUEUE, SRV_INT_PIPELINE, "gatilla", "API")
Rel(SRV_INT_PIPELINE, DOM_GOB, "usa", "API")
Rel(SRV_INT_PIPELINE, SRV_INT_PUB, "gatilla", "API")
Rel(SRV_INT_PUB, DB_COM_BROKER, "publica")
Rel(SRV_INT_PUBQUEUE, SRV_INT_CONV, "gatilla", "API")
Rel(SRV_INT_PUBQUEUE, DB_COM_BROKER, "consume")
Rel(SRV_INT_CONV, DOM_GOB, "usa", "API")
Rel(SRV_INT_CONV, SRV_INT_DISPATCH, "gatilla", "API")
Rel(SRV_INT_DISPATCH, SYSGROUP, "informa", "API")

Rel(SRV_EMG_ORCH, SRV_EMG_INFNET, "expone", "API")
Rel(SRV_EMG_ORCH, SRV_EMG_INFPEOPLE, "expone", "API")
Rel(SRV_EMG_ORCH, SRV_EMG_INFHISTORY, "expone", "API")
Rel(SRV_EMG_ORCH, SRV_EMG_KNOWLEDGE, "expone", "API")
Rel(SRV_EMG_ORCH, SRV_EMG_RESOURCES, "expone", "API")
Rel(SRV_EMG_ORCH, SRV_EMG_MONITOR, "expone", "API")
Rel(SRV_EMG_ORCH, DB_COM_BROKER, "publica")
Rel(DOM_EMG_APPS, SRV_EMG_DOCFMT, "usa", "API")
Rel(DOM_EMG_APPS, DB_EMG, "consulta/guarda")
Rel(DOM_EMG_APPS, DB_EMG_FS, "consulta/guarda")

Rel(SRV_GIS_BOUNDS, DB_GIS, "consulta/guarda")
Rel(SRV_GIS_WEBMAPS, DB_GIS, "consulta/guarda")
Rel(SRV_GIS_WEBMAPS, DB_COM_BROKER, "consume")
Rel(SRV_GIS_INGEST, DB_GIS, "consulta/guarda")
Rel(SRV_GIS_INGEST, DB_COM_BROKER, "consume")

Rel(SRV_ANALYSIS_INGEST, SRV_ANALYSIS_ETL, "gatilla", "API")
Rel(SRV_ANALYSIS_INGEST, DB_COM_BROKER, "consume")
Rel(SRV_ANALYSIS_ETL, DB_ANALYSIS, "guarda")
Rel(DB_ANALYSIS, SRV_ANALYSIS_RESOURCES, "gatilla", "API")
Rel(DB_ANALYSIS, SRV_ANALYSIS_STATS, "gatilla", "API")
Rel(DB_ANALYSIS, SRV_ANALYSIS_OTHER, "gatilla", "API")

Rel(SRV_ALERT_CAP, GOOGLE_CAP, "usa", "API")
Rel(DOM_ALERT, DB_COM_BROKER, "consume")

Rel(SRV_NOTIFY_ORCH, SRV_NOTIFY_CHANNELS, "usa", "API")
Rel(SRV_NOTIFY_ORCH, SRV_NOTIFY_SUBS, "usa", "API")
Rel(SRV_NOTIFY_ORCH, DB_NOTIFY, "guarda")
Rel(SRV_NOTIFY_ORCH, DB_COM_BROKER, "consume")
Rel(SRV_NOTIFY_ORCH, EMAIL, "usa", "API")
Rel(SRV_NOTIFY_ORCH, PUSH, "usa", "API")

Rel(SYSGROUP, SRV_ENCRYPT_KMS, "usa", "API")
Rel(SRV_INT_PUB, SRV_ENCRYPT_KMS, "usa", "API")
Rel(SRV_INT_PUB, SRV_ENCRYPT_CHK, "usa", "API")
Rel(SRV_INT_PUBQUEUE, SRV_ENCRYPT_KMS, "usa", "API")
Rel(SRV_INT_PUBQUEUE, SRV_ENCRYPT_CHK, "usa", "API")

Rel(SRV_INTERNAL_ORCH, DB_INTERNAL, "consulta/guarda")
Rel(SRV_INTERNAL_ORCH, DB_INTERNAL_FS, "consulta/guarda")
Rel(SRV_INTERNAL_ORCH, DB_COM_BROKER, "publica/consume")

Rel(SRV_PLANS_COMPLIANCE, DB_PLANS, "consulta/guarda")
Rel(SRV_PLANS_COMPLIANCE, DB_PLANS_FS, "consulta/guarda")
Rel(SRV_PLANS_ORCH, DB_PLANS, "consulta/guarda")
Rel(SRV_PLANS_ORCH, DB_PLANS_FS, "consulta/guarda")
Rel(SRV_PLANS_ORCH, DB_COM_BROKER, "publica/consume")

Rel(SRV_NODES_ORCH, SRV_NODES_HEALTHCHECK, "usa", "API")
Rel(SRV_NODES_ORCH, DB_NODES, "consulta/guarda")
Rel(SRV_NODES_ORCH, SRV_BOOT_BOOT, "gatilla")
Rel(SRV_NODES_HEALTHCHECK, SIGRIDNODE, "consulta")

Rel(SRV_BOOT_BACKUPS, DB_BOOT, "guarda")
Rel(SRV_BOOT_BOOT, DB_BOOT, "consulta")
Rel(SRV_BOOT_SNAPSHOT, DB_BOOT, "consulta/guarda")

Rel(SRV_AUDIT_PROC, DB_AUDIT_TRACE, "guarda")
Rel(SRV_AUDIT_PROC, DB_AUDIT_ACCESS, "guarda")
Rel(SRV_AUDIT_PROC, DB_AUDIT_EVENTS, "guarda")
Rel(DOM_AUDIT, SIGRID, "monitorea")

Rel(SRV_INTELLIGENCE_RAG, DB_INTELLIGENCE_RAG, "consulta/guarda")
Rel(SRV_INTELLIGENCE_RAG, DOM_GOB, "usa", "API")
Rel(SRV_INTELLIGENCE_RAG, DOM_EC, "usa", "API")
Rel(SRV_INTELLIGENCE_RAG, DOM_EMG, "usa", "API")
Rel(SRV_INTELLIGENCE_RAG, DOM_GIS, "usa", "API")
Rel(SRV_INTELLIGENCE_RAG, DOM_ANALYSIS, "usa", "API")
Rel(SRV_INTELLIGENCE_RAG, DOM_ALERT, "usa", "API")

SHOW_LEGEND()
@enduml