Documentación técnica
Arquitectura
Vista general
┌──────────────────────────────────────────────┐
│ CLIENTE (Navegador) │
│ Angular 20 SPA · puerto 8080 │
└──────────────────┬───────────────────────────┘
│ HTTP
┌──────────────────▼───────────────────────────┐
│ NGINX (API Gateway) │
│ puerto 8010 │
└──┬──────┬──────┬──────┬──────┬──────┬───────┘
│ │ │ │ │ │
/authentication /authorization /integrations /clients
/logs /reports /orphans /images /profile-picture
│ │ │ │ │ │
┌──────────────────┼──────┼──────┼──────┼──────┼──────┼──────────┐
│ ▼ ▼ ▼ ▼ ▼ ▼ │
│ ┌────────┐ ┌──────┐ ┌────┐ ┌──────┐ ┌────┐ ┌─────┐ ┌─────┐ │
│ │ authen │ │ auth │ │inte│ │clien │ │logs│ │repo │ │orph │ │
│ │ tication│ │ oriz │ │grat│ │ ts │ │ │ │ rts │ │ ans │ │
│ │ :8000 │ │ ation│ │ions│ │ :8000│ │:800│ │:8000│ │:800 │ │
│ └───┬────┘ └──┬───┘ └─┬──┘ └──┬───┘ └──┬─┘ └──┬──┘ └──┬──┘ │
│ └─────────┴───────┴────────┴────────┴──────┴───────┘ │
│ │ SQL / ORM │
│ ┌──────▼──────┐ ┌──────────────┐ │
│ │ PostgreSQL │ │ Redis │ │
│ │ 17.6 │ │ (cache │ │
│ │ :5432 │ │ Zabbix data) │ │
│ └─────────────┘ └──────┬───────┘ │
│ │ │
│ ┌────────▼───────┐ │
│ │ zabbix-cache- │ │
│ │ updater │ │
│ └────────────────┘ │
└──────────────────────────────────────────────────────────────┘
Backend (Docker Compose)
Repositorios
| Repositorio | Descripción |
|---|---|
b2b-cp-frontend | SPA Angular 20 |
b2b-cp-backend | Microservicios FastAPI + infraestructura Docker |
Microservicios backend
| Servicio | Directorio | Responsabilidad |
|---|---|---|
| authentication | b2b-cp-backend/authentication/ | Autenticación local y vía Okta; emisión y validación de JWT |
| authorization | b2b-cp-backend/authorization/ | Gestión de roles y permisos (RBAC) |
| clients | b2b-cp-backend/clients/ | Gestión de tenants, clientes y grupos de hosts |
| integrations | b2b-cp-backend/integrations/ | Proxy hacia Zabbix; gestión de hosts e infraestructura |
| logs | b2b-cp-backend/logs/ | Registro de auditoría de acciones del sistema |
| reports | b2b-cp-backend/reports/ | Generación automática de reportes mensuales (APScheduler) |
| orphans | b2b-cp-backend/orphans/ | Detección y vinculación de recursos huérfanos |
| images | b2b-cp-backend/images/ | Almacenamiento y entrega de imágenes y fotos de perfil |
| zabbix-cache-updater | b2b-cp-backend/zabbix-cache-updater/ | Worker que sincroniza datos de Zabbix en Redis cada 120 s |
| migrations | b2b-cp-backend/migrations/ | Migraciones de base de datos (Alembic) |
| nginx | b2b-cp-backend/nginx/ | API Gateway / reverse proxy |
Módulos frontend
La aplicación Angular sigue Screaming Architecture: los directorios de primer nivel expresan dominios de negocio, no capas técnicas.
src/app/
├── auth/ # Login, MFA, reset de contraseña
├── portal/ # Layout principal, home/dashboard
├── settings/ # Usuarios, clientes, conexiones
├── infrastructure/# Servidores, redes, dispositivos IaaS
├── alerts/ # Alertas operacionales (Zabbix)
├── azure/ # Recursos Azure (VMs, DBs, storage)
├── vmware/ # vCenters, clusters, datastores, ESXi
├── openstack/ # Datacenters OpenStack
├── reports/ # Visualización y descarga de reportes
├── logs/ # Visor de logs de auditoría
├── orphans/ # Recursos sin asignación
├── documentation/ # Visor de documentación interna
├── shared/ # Servicios y componentes transversales
└── utils/ # Funciones auxiliares compartidas
