P13: Retroalimentación y Gestión de la Información de Emergencia

@startuml

scale 0.7

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

title Diagrama de Contenedores - P13: Retroalimentación y Gestión de la Información de Emergencia

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")
    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_Boundary(SIGRID, "SIGRID", $link="../systems.html#ITRENDCL-SIGRID-SYS-SIGRID") {

    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(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_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")
            ContainerDb(DB_GOB, "BD Gobernanza", "Base de datos de información de gobernanza.", $link="../containers.html#ITRENDCL-SIGRID-DB-GOB")
            }

    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")
            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")
            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_PLANS, "Dominio de Planes", $link="../containers.html#ITRENDCL-SIGRID-DOM-PLANS") {
            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_FS, "Sistema de archivos", "Sistema de archivos.", $link="../containers.html#ITRENDCL-SIGRID-DB-PLANS-FS")
            ContainerDb(DB_PLANS, "Base de datos de planes", "Base de datos de planes de emergencia.", $link="../containers.html#ITRENDCL-SIGRID-DB-PLANS")
            }

    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_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_EMG, "Dominio de Emergencia", $link="../containers.html#ITRENDCL-SIGRID-DOM-EMG") {
        Container(SRV_EMG_DOCFMT, "Transformador de formatos", "Sistema de conversión de formatos.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-DOCFMT")
        Container(SRV_EMG_ORCH, "Gestor documental", "Orquestador del almacenamiento de información.", $link="../containers.html#ITRENDCL-SIGRID-SRV-EMG-ORCH")
            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_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")
            }


}

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

    Rel(DB_ANALYSIS,SRV_ANALYSIS_RESOURCES, "gatilla", "API")

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



    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,SRV_PLANS_ORCH, "expone", "API")
    Rel(SRV_GOB_DQ,DB_GOB, "consulta/guarda")


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(SRV_EMG_ORCH, SRV_EMG_DOCFMT, "usa", "API")
Rel(SRV_EMG_ORCH, DB_EMG, "consulta/guarda")
Rel(SRV_EMG_ORCH, DB_EMG_FS, "consulta/guarda")






    Rel(SRV_AUDIT_PROC,DB_AUDIT_TRACE, "guarda")




    Rel(SRV_ANALYSIS_INGEST,SRV_ANALYSIS_ETL, "gatilla", "API")
    Rel(SRV_ANALYSIS_INGEST,DB_COM_BROKER, "consume")
    Rel(SRV_GIS_BOUNDS,DB_GIS, "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(SIGRIDCLIENTS,SRV_EC_API, "usa", "API")
    Rel(SIGRIDCLIENTS,SRV_UM_IDENT, "usa", "API")
    Rel(SRV_ANALYSIS_ETL,DB_ANALYSIS, "guarda")

    Rel(SRV_UM_IDENT,SRV_UM_PERM, "usa", "API")


SHOW_LEGEND()
@enduml