48 lines
1.7 KiB
Markdown
48 lines
1.7 KiB
Markdown
# Arquitectura general
|
|
|
|
```mermaid
|
|
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`
|