semillero-INVIMA/diagramas/arquitectura-general.md

1.7 KiB

Arquitectura general

flowchart LR
  usuario["Usuario"] --> navegador["Navegador web"]
  navegador --> angular["Frontend Angular<br/>semillero"]

  angular -- "HTTP /api/auth/*<br/>HTTP /api/invima/*" --> proxy["Proxy Angular dev<br/>/api -> http://localhost:3000"]
  proxy --> express["API REST Express<br/>backend/src/app.js"]

  express --> auth["Rutas /api/auth<br/>login, me, logout"]
  express --> invima["Rutas /api/invima<br/>datasets, categorias, filtros,<br/>sync, catalogo, export"]

  auth --> authService["auth.service.js<br/>usuarios, sesiones, tokens"]
  invima --> invimaService["invima/service.js<br/>catalogo, filtros, sincronizacion"]
  invima --> syncJob["sync-job-manager.js<br/>estado de sincronizacion"]

  authService --> postgres[("PostgreSQL<br/>app_users, app_sessions")]
  invimaService --> postgres
  invimaService -- "sincroniza datasets" --> socrata["datos.gov.co Socrata API<br/>https://www.datos.gov.co/resource/*.json"]
  socrata --> invimaService

  invimaService --> adapters["adapters.js<br/>normalizacion por dataset"]
  adapters --> postgresInvima[("PostgreSQL<br/>invima_api_raw, invima_api_catalog")]
  postgresInvima --- postgres

Archivos analizados

  • diagramas/frontend-clases.mmd
  • diagramas/frontend-clases.svg
  • semillero/src/app/app.routes.ts
  • semillero/src/app/app.config.ts
  • semillero/proxy.conf.json
  • backend/src/app.js
  • backend/src/server.js
  • backend/src/routes/index.js
  • backend/src/routes/auth.routes.js
  • backend/src/routes/invima.routes.js
  • backend/src/auth/auth.service.js
  • backend/src/db/pool.js
  • backend/src/config/env.js
  • backend/invima/service.js
  • backend/invima/adapters.js
  • backend/invima/sync-job-manager.js
  • backend/APIinvima.js
  • backend/APIinvima.json