Files

57 lines
2.0 KiB
Markdown

---
type: Entity
layer: wiki
tags: [stack, dashdescomplicar, backend, integracao, wordpress, monitorizacao]
title: "Integracao-WordPress"
---
# Integracao-WordPress
Ingestão de dados de monitorização de sites WordPress. Recebe dados do plugin "Descomplicar Monitor" instalado em cada site cliente e armazena na base de dados para o painel Monitor.
## Responsabilidades
- **Ingestão**: Endpoint POST para receber dados dos plugins WP (versão WP, plugins, temas, health status)
- **API Key Auth**: Validação obrigatória via header `x-api-key` ou query param `key`
- **Determinação de Status**: Algoritmo que classifica o site como `ok`, `warning` ou `critical` baseado em:
- Core/plugins/themes desactualizados
- Erros de saúde (health check)
- Versão PHP
- **Listagem**: GET para listar todos os sites monitorizados
- **Connection Test**: `GET ?test` para verificar conectividade
## Stack
- **Validação**: Zod (`wpMonitorSchema`) com `.passthrough()` para campos extra de plugins
- **Auth**: `WP_MONITOR_API_KEY` obrigatória (crash ao iniciar se ausente)
- **DB**: MySQL via `db.ts`
## Schema de Dados (Plugin WP → API)
Recebe: `site_url`, `wp_version`, `php_version`, `plugins[]`, `themes[]`, `health_status`, `server_info`
## Rotas
| Método | Rota | Auth | Função |
|---|---|---|---|
| `GET` | `/api/wp-monitor` | API Key | Listar sites monitorizados |
| `GET` | `/api/wp-monitor?test` | API Key | Teste de conectividade |
| `POST` | `/api/wp-monitor` | API Key + Zod | Receber dados do plugin WP |
## Localizações
- **Código**: `api/routes/wp-monitor.ts` (148 linhas)
- **DB**: `tbl_eal_monitoring` (category=wordpress)
- **Plugin**: "Descomplicar Monitor" (instalado nos sites cliente)
## Dependências
- **MySQL-Pool**: Armazenamento de dados
- **WP_MONITOR_API_KEY**: Chave de API em `.env`
- **Plugins WP nos sites cliente**: Enviam dados periodicamente
## Fornece a
- **Painel-Monitor**: Secção "Sites WordPress" e "WP Updates"
- **Express-API**: Rota `/api/wp-monitor`