# INVIMA API (Version Modular)

Backend modular con:
- autenticacion por usuario/contrasena (`/api/auth/*`)
- sincronizacion INVIMA por Socrata
- catalogo optimizado con filtros y categorias canonicas

## Requisitos
- Node.js 18+
- PostgreSQL

## Instalacion
```bash
npm install
```

## Configuracion
1. Copia `.env.example` a `.env`.
2. Ajusta credenciales de BD y variables de auth.

## Ejecutar
```bash
npm run dev
```

## Endpoints
### Salud
- `GET /api/health`

### Auth
- `POST /api/auth/login` body: `{ "identifier": "admin", "password": "Admin123*" }`
- `GET /api/auth/me` (Bearer token)
- `POST /api/auth/logout` (Bearer token)

### INVIMA (requieren Bearer token)
- `GET /api/invima/datasets`
- `GET /api/invima/categorias`
- `GET /api/invima/filtros`
- `POST /api/invima/sync`
- `GET /api/invima/catalogo`
- `GET /api/invima/catalogo/export?format=csv|xlsx`

## Mejoras aplicadas
- Eliminado flujo legacy de `productos` y `registros`.
- Catalogo unico con categoria canonica (`categoria_canonica`) y slug (`categoria_slug`).
- Indices para busqueda:
  - `GIN to_tsvector` sobre `search_text`
  - indices por categoria, dataset, estado, modalidad, grupo y fechas
  - trigram opcional si `pg_trgm` esta disponible
- Filtros adicionales: `grupos`, `fechas`, `onlyVigentes`, `datasets`, `categorias`.
