68 lines
2.1 KiB
Markdown
68 lines
2.1 KiB
Markdown
# api_gateway
|
|
|
|
Puerta de enlace HTTP (FastAPI) que actúa como punto de entrada único para el sistema IPSExtractor.
|
|
Enruta las peticiones del cliente hacia los microservicios internos sin lógica de negocio propia.
|
|
|
|
---
|
|
|
|
## Puerto
|
|
|
|
**8189** en el host (mapeado al **8000** interno del contenedor). Es el único puerto publicado por `docker-compose`.
|
|
|
|
---
|
|
|
|
## Enrutamiento
|
|
|
|
| Ruta cliente | Servicio destino | Descripción |
|
|
|--------------|------------------|-------------|
|
|
| `GET /health/live` | *(local)* | Liveness sin consultar upstreams |
|
|
| `GET /health` | Agrega `/health` de los tres servicios | Estado del sistema |
|
|
| `GET /models` | `extraction:8001/models` | Modelos LLM disponibles |
|
|
| `GET /config` | `extraction:8001/config` + `cleaning:8002/rules` | Configuración |
|
|
| `/extraction/{path}` | `extraction:8001/{path}` | Extracción (quita prefijo) |
|
|
| `/tasks/{path}` | `extraction:8001/tasks/{path}` | Tareas de extracción |
|
|
| `/jobs/{path}` | `extraction:8001/jobs/{path}` | Jobs |
|
|
| `/count-jobs/{path}` | `extraction:8001/count-jobs/{path}` | Jobs de conteo |
|
|
| `/cleaning/{path}` | `cleaning:8002/{path}` | Limpieza |
|
|
| `/count/{path}` | `count-api:8080/{path}` | Conteo OCR+ML (quita prefijo) |
|
|
|
|
El proxy reenvía método, query string, headers y body sin modificaciones.
|
|
Timeouts: JSON 30s lectura; uploads `/count/*` e ingest 600s.
|
|
|
|
---
|
|
|
|
## Variables de entorno
|
|
|
|
| Variable | Default | Descripción |
|
|
|----------|---------|-------------|
|
|
| `EXTRACTION_URL` | `http://extraction:8001` | URL interna del servicio extraction |
|
|
| `CLEANING_URL` | `http://cleaning:8002` | URL interna del servicio cleaning |
|
|
| `COUNT_URL` | `http://count-api:8080` | URL interna del servicio count-api |
|
|
|
|
---
|
|
|
|
## CORS
|
|
|
|
Solo permite orígenes `localhost` y `127.0.0.1`. Sin autenticación.
|
|
|
|
---
|
|
|
|
## Estructura del código
|
|
|
|
```
|
|
api/
|
|
main.py — FastAPI app con proxy HTTP (httpx)
|
|
Dockerfile
|
|
requirements.txt — fastapi, httpx, uvicorn
|
|
```
|
|
|
|
---
|
|
|
|
## Arrancar localmente
|
|
|
|
```bash
|
|
docker compose up --build api_gateway
|
|
```
|
|
|
|
API disponible en `http://127.0.0.1:8189` (único puerto expuesto por docker-compose).
|