# Arquitectura GeneaCase

## Decisión principal

Monolito modular multiempresa en PHP 8.4+, MariaDB 11.8 LTS y frontend web responsive. Los procesos pesados se desacoplan mediante cola. No se usarán microservicios hasta que métricas reales lo justifiquen.

```mermaid
flowchart LR
  WEB[Web pública] --> APP[Aplicación PHP modular]
  PORTAL[Portal familiar] --> APP
  PRO[Panel profesional] --> APP
  API[API v1] --> APP
  APP --> DB[(MariaDB)]
  APP --> FILES[(Local / S3)]
  APP --> QUEUE[Cola]
  QUEUE --> OCR[OCR]
  QUEUE --> AI[IA]
  QUEUE --> MAIL[Correo]
  QUEUE --> REPORTS[Informes]
  APP --> SOURCES[Fuentes externas permitidas]
```

## Capas

1. Presentación: web pública, portal familiar, panel profesional y API.
2. Aplicación: controladores, casos de uso y coordinación.
3. Dominio: identidad, evidencia, contradicción, privacidad y búsqueda reproducible.
4. Infraestructura: MariaDB, almacenamiento, colas, correo, OCR, IA y logs.
5. Integración: APIs, datasets, importaciones, webhooks y Research Assistant autorizado.

## Multiempresa

Toda entidad privada incorpora `id_empresa`. La empresa activa se resuelve desde una membresía válida y se conserva en `TenantContext`. Ningún ID recibido del navegador puede reemplazar el contexto de empresa.
