first commit

This commit is contained in:
alexandrump
2026-02-09 01:02:53 +01:00
commit 82f3464565
90 changed files with 4788 additions and 0 deletions

29
docs/ARCHITECTURE.md Normal file
View File

@@ -0,0 +1,29 @@
# Arquitectura (2 mini-PCs)
## Objetivo
Separar la ingesta/normalización del producto (API + dashboard) para reducir carga y permitir escalado gradual.
## Mini-PC 1 — Ingesta y procesamiento
- **Servicios**: workers de ingesta, normalizadores, colas ligeras.
- **Responsabilidad**: consultar datos.gob.es, normalizar y guardar en Postgres.
- **Componentes clave**:
- Scheduler de ingesta (`INGEST_CRON`)
- Bull + Redis (opcional)
- Normalizador y clasificador
## Mini-PC 2 — Producto y entrega
- **Servicios**: API Nest, Nuxt dashboard, alertas Telegram/SMTP, backups.
- **Responsabilidad**: servir datos, dashboards y notificaciones.
- **Componentes clave**:
- API `apps/api`
- Dashboard `apps/web`
- Scheduler alertas (`ALERTS_CRON`) y backups (`BACKUP_CRON`)
## Comunicación
- API HTTP/REST entre servicios.
- Redis opcional si se utiliza colas de ingestión.
## Datos
- Postgres centralizado (en MiniPC 1 o 2 según recursos).
- Backups periódicos en `BACKUP_DIR`.

46
docs/DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,46 @@
# Despliegue en miniPCs
## Requisitos
- Docker + Docker Compose
- Postgres y Redis (opcional)
## Variables de entorno recomendadas
- `DATABASE_URL`
- `API_ADMIN_KEY`
- `JWT_SECRET`
- `INGEST_CRON`
- `ALERTS_CRON`
- `BACKUP_CRON`
- `BACKUP_DIR`
- `INGEST_ENABLED`
- `ALERTS_ENABLED`
- `BACKUP_ENABLED`
- `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, `SMTP_FROM`
- `TELEGRAM_BOT_TOKEN`, `TELEGRAM_DEFAULT_CHAT`
## Arranque rápido (todoenuno)
```bash
# Desde la raíz del repo
pnpm install
pnpm build
pnpm start
```
## Arranque con Docker Compose
```bash
docker compose build
docker compose up -d
```
## Estrategia recomendada (2 miniPCs)
1. **MiniPC 1**: ejecutar Postgres + Redis + jobs de ingesta.
2. **MiniPC 2**: ejecutar API + web + backups + alertas.
3. Definir `DATABASE_URL` apuntando al Postgres del MiniPC 1.
Sugerencia de flags:
- MiniPC 1: `INGEST_ENABLED=true`, `ALERTS_ENABLED=false`, `BACKUP_ENABLED=false`.
- MiniPC 2: `INGEST_ENABLED=false`, `ALERTS_ENABLED=true`, `BACKUP_ENABLED=true`.
## Backups
- Programados por `BACKUP_CRON`.
- Manual: `POST /admin/backup/run`.

17
docs/KPIS.md Normal file
View File

@@ -0,0 +1,17 @@
# KPIs y métricas
## KPIs iniciales
- **Tiempo medio de detección**: minutos desde la publicación hasta la ingesta.
- **Cobertura del catálogo**: % de datasets detectados vs. catálogo total.
- **Tasa de alertas útiles**: % de alertas calificadas como relevantes en pilotos.
- **Conversión piloto → cliente**: ratio de pilotos que pagan al mes 2.
## Métricas operativas (hoy)
- `ingest_runs`: duración, errores, datasets nuevos/actualizados.
- `alert_runs`: perfiles procesados, alertas enviadas/fallidas.
- `/admin/monitor/status`: conteos globales.
## Recolección recomendada
- Log de timestamps de ingesta por dataset (para medir detección).
- Feedback por alerta (útil/no útil) en UI de piloto.

19
docs/OPERATIONS.md Normal file
View File

@@ -0,0 +1,19 @@
# Operaciones y monitorización
## Endpoints admin
- `POST /admin/ingest/pause` / `resume`
- `POST /admin/ingest/queue`
- `GET /admin/ingest/runs`
- `POST /admin/backup/run`
- `GET /admin/backup/list`
- `GET /admin/alerts/runs`
- `GET /admin/monitor/status`
## Checks rápidos
- `/dashboard/summary` (salud del dashboard)
- `/catalog/health` (API catálogo)
## Logs
- Logs de ingesta y alertas quedan en stdout.
- `ingest_runs` y `alert_runs` guardan historial resumido.