Files

58 lines
2.3 KiB
Markdown

---
type: Entity
layer: wiki
tags: [stack, dashdescomplicar, backend, mysql, database, core]
title: "MySQL-Pool"
---
# MySQL-Pool
Pool de ligações MySQL2 (promise) ao Desk CRM Perfex. Fonte de verdade para dados de tarefas, projectos, tickets, facturação, despesas, leads e monitorização.
## Responsabilidades
- **Connection Pool**: 10 ligações máx, timeout 10s connect / 15s acquire / 30s query
- **Validação**: Credenciais obrigatórias (`DB_USER`, `DB_PASS`, `DB_NAME`) — crash ao iniciar se ausentes
- **Charset**: `utf8mb4` para suporte completo a caracteres PT-PT
- **Health Check**: Teste automático ao iniciar (`pool.getConnection()`)
## Stack
- **Driver**: `mysql2` 3.11 (modo promise)
- **Host**: `176.9.3.158` (servidor CWP)
- **Base de Dados**: `ealmeida_desk24` (Perfex CRM)
- **Prefixo**: `DB_*` (NÃO `MYSQL_*`)
## Tabelas Consumidas
| Tabela | Consumidor | Uso |
|---|---|---|
| `tbltasks` | dashboard.ts, operations.ts | Tarefas (urgentes, alta, vencidas) |
| `tblprojects` | dashboard.ts | Projectos (JOIN com tasks) |
| `tbltickets` | dashboard.ts, operations.ts | Tickets suporte (abertos, prioridade, departamento) |
| `tblinvoices` | financial.ts | Facturas (vendas mês/ano, evolução) |
| `tblexpenses` | financial.ts | Despesas (mês/ano, categorias) |
| `tblexpenses_categories` | financial.ts | Categorias despesas (JOIN) |
| `tblleads` | dashboard.ts | Leads (contactar, followup, proposta) |
| `tbltaskstimers` | dashboard.ts | Timesheet (horas registadas) |
| `tbldepartments` | operations.ts | Departamentos tickets |
| `tbl_eal_monitoring` | monitoring.ts | Monitorização (items, categorias, status) |
| `tbl_eal_hetzner_servers` | hetzner.ts | Servidores Hetzner (sync, métricas) |
| `tbl_eal_hetzner_metrics` | hetzner.ts | Histórico métricas Hetzner |
## Localizações
- **Código**: `Dev/DashDescomplicar/api/db.ts` (42 linhas)
- **Config**: `.env` (`DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`)
- **Host**: CWP Server (VM 100, IP `5.9.90.105`)
## Dependências
- `.env` com `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`
- Servidor MySQL no CWP (porta 3306, reachable do EasyPanel)
## Fornece a
- **Express-API**: Todas as rotas que consomem Desk CRM
- **Serviços**: dashboard, financial, operations, monitoring, hetzner, server-metrics