53 lines
2.0 KiB
Markdown
53 lines
2.0 KiB
Markdown
# Secuencia consulta INVIMA
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
actor Usuario
|
|
participant Catalog as CatalogPageComponent
|
|
participant InvimaFE as InvimaService Angular
|
|
participant Interceptor as authInterceptor
|
|
participant Route as GET /api/invima/catalogo
|
|
participant AuthMW as requireAuth
|
|
participant Service as invima/service.js
|
|
participant DB as PostgreSQL
|
|
|
|
Usuario->>Catalog: Aplica filtros
|
|
Catalog->>Catalog: applyFilters() reinicia offset
|
|
Catalog->>Catalog: buildQuery()
|
|
Catalog->>InvimaFE: searchCatalog(query)
|
|
InvimaFE->>Interceptor: GET /api/invima/catalogo con HttpParams
|
|
Interceptor->>Route: Authorization Bearer token
|
|
Route->>AuthMW: router.use(requireAuth)
|
|
AuthMW->>DB: SELECT app_sessions JOIN app_users
|
|
DB-->>AuthMW: usuario valido
|
|
AuthMW-->>Route: continua
|
|
Route->>Service: getInvimaCatalog(pool, req.query)
|
|
Service->>Service: parseCatalogFilters()
|
|
Service->>Service: buildCatalogWhere()
|
|
Service->>DB: SELECT COUNT(*) FROM invima_api_catalog WHERE filtros
|
|
DB-->>Service: total
|
|
Service->>DB: SELECT columnas catalogo FROM invima_api_catalog WHERE filtros ORDER BY fecha_vencimiento, producto LIMIT OFFSET
|
|
DB-->>Service: rows
|
|
alt busqueda textual sin resultados y varios tokens
|
|
Service->>Service: fallback_like
|
|
Service->>DB: SELECT COUNT y SELECT con ILIKE por tokens
|
|
DB-->>Service: rows fallback
|
|
end
|
|
Service-->>Route: { items, total, limit, offset }
|
|
Route-->>InvimaFE: respuesta JSON
|
|
InvimaFE-->>Catalog: InvimaCatalogResponse
|
|
Catalog->>Catalog: items.set(), total.set(), loading false
|
|
Catalog-->>Usuario: Presenta registros y paginacion
|
|
```
|
|
|
|
## Archivos analizados
|
|
|
|
- `semillero/src/app/features/invima/catalog-page.component.ts`
|
|
- `semillero/src/app/core/services/invima.service.ts`
|
|
- `semillero/src/app/core/interceptors/auth.interceptor.ts`
|
|
- `backend/src/routes/invima.routes.js`
|
|
- `backend/src/middlewares/auth.middleware.js`
|
|
- `backend/src/auth/auth.service.js`
|
|
- `backend/invima/service.js`
|
|
- `backend/src/db/pool.js`
|