Saltar a contenido

Visión general

Diagrama de arquitectura

graph TB
    subgraph "Capa de presentación"
        UI["complyx-ui\n(Angular + Electron / PWA)"]
    end

    subgraph "Capa de servicio"
        API["complyx-api\n(Spring Boot / Java)"]
        SERVER["complyx-server\n(Rust)"]
        PKI["PKI Interna\n(CA raíz + emisión de certs)"]
    end

    subgraph "Capa de persistencia"
        DB[("PostgreSQL\ncomplyx-db")]
    end

    subgraph "Endpoints (n instancias)"
        AGENT["complyx-agent\n(Rust)"]
        SQLITE[("SQLite local")]
    end

    UI -->|"HTTPS + JWT"| API
    API -->|"JDBC"| DB
    SERVER -->|"JDBC"| DB
    SERVER <-->|"gestión PKI"| PKI
    AGENT -->|"mTLS (9443)"| SERVER
    AGENT --- SQLITE

Principios de diseño

Separación de responsabilidades
Cada componente tiene una única función bien definida. La UI no contiene lógica de negocio, el agente no ejecuta comandos arbitrarios y la API es la única fuente de verdad.
Seguridad por defecto
Toda comunicación entre agente y servidor usa mTLS obligatorio. Los tokens JWT tienen expiración y alcance limitado.
Resiliencia
El agente opera de forma autónoma ante desconexión del servidor, con persistencia local en SQLite y cola de eventos pendientes.
Observabilidad
Logging estructurado con rotación automática en todos los componentes. Correlación de eventos entre agente y servidor.