You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ADN-DMR-Peer-Server/docs/es/monitor/architecture.md

2.7 KiB

Arquitectura e implantación

Arquitectura limpia (monitor Python)

Bajo monitor/src/adn_monitor/:

  • Dominio — entidades, errores, Result, opcodes, UserSession.
  • Aplicación — MonitorState, casos de uso (auth, self-service, informes, dashboard), puertos (AuthRepository, HttpFetcherPort, …).
  • Infraestructura — YAML, FastAPI (REST + /ws), ingest TCP (Twisted en hilo) o MQTT, MySQL, decodificadores de informes.

El composition root está en infrastructure/fastapi/composition.py (build_monitor_api).

flowchart TD
  INF["Infraestructura<br/>YAML · FastAPI /ws · ingest TCP/MQTT<br/>MySQL · decodificadores pickle/JSON"]
  APP["Aplicación<br/>MonitorState · informes/dashboard<br/>auth · self-service · alias"]
  DOM["Dominio<br/>objetos de valor · errores · opcodes<br/>UserSession · Result"]
  INF --> APP --> DOM

Proceso unificado (monitor.py)

Un solo proceso uvicorn/FastAPI:

Ruta / rol Contenido
/api/* Config dashboard, auth, self-service, proxy alias/status
/ws Protocolo conf,<grupo> — CTABLE, Last Heard, voz
Ingest (fondo) MONITOR_APP.INGEST: tcp (cliente a ADN_CONNECTION) o mqtt (tópicos state + voice_event)
Alias (fondo) Descarga → FILES.PATH; import con staging + RENAME (commits cada 10k en staging; swap breve); merge con commits cada 2k; PK en id

Protocolo de informes (desde el peer server)

Modos de ingest según el peer: legacy (pickle), v1 HELLO, v2 slim (dashboard_state + voice_event). Ver Monitor e informes.

Frontend

  • Vite + React en frontend/; build → frontend/dist/.
  • Desarrollo: Vite hace proxy de /api y /ws a MONITOR_APP.LISTEN_PORT (p. ej. 8080).
  • Producción: Nginx sirve estáticos y proxifica /api + /ws al mismo puerto FastAPI.

Proxy hotspot

Integrado (predeterminado): adn-server.py con PROXY + SELF_SERVICE en adn-server.yaml. Ver Proxy hotspot integrado.

El proceso adn-proxy independiente se eliminó del repositorio adn-monitor; usa solo PROXY integrado.

Topología típica

flowchart TD
  HS[Hotspots] -->|UDP HBP| PROXY[adn-server PROXY]
  PROXY --> MASTER[MASTER inyectado]
  PROXY --> DB[(MySQL Clients)]

  MASTER --> REPORT[REPORTS listener]
  REPORT <-->|TCP o MQTT| ING[monitor.py ingest]
  ING --> APP[FastAPI /api /ws]
  APP --> DB

  BR[Navegador] -->|HTTPS| FE[Nginx o SERVE_STATIC]
  FE --> APP

Ver también

Powered by TurnKey Linux.