P08: Planes

@startuml

scale 0.7

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

title Diagrama de Contenedores - P08: Planes (SIGRID)

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_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_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")
    }
}

Rel(SIGRIDCLIENTS, SRV_EC_API, "usa", "API")
Rel(SIGRIDCLIENTS, SRV_UM_IDENT, "usa", "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(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_GOB_DQ, DB_GOB, "consulta/guarda")
Rel(SRV_GOB_LC, DB_GOB, "consulta/guarda")
Rel(SRV_GOB_PM, DB_GOB, "consulta/guarda")

SHOW_LEGEND()
@enduml