Files
DashDescomplicar/CHANGELOG.md
Emanuel Almeida eb4e45186b docs: add CWP Backup Tool monitoring to changelog (v2.5.0)
New backup_manager2 monitoring added to collect-backups.sh on CWP server.
Dashboard backups section now shows 5 items instead of 4.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 17:11:52 +00:00

9.5 KiB

Changelog

Todas as alterações notáveis neste projecto serão documentadas neste ficheiro.

[2.5.0] - 2026-02-10

Added

  • CWP Backup Tool - Monitorização do backup_manager2 (sistema CWP nativo)
    • Verifica directório mais recente em /usr/local/cwp/.conf/backups/new/15/
    • Status: ok (<24h), warning (24-48h), critical (>48h)
    • Adicionado ao collector collect-backups.sh no servidor CWP

Changed

  • Secção Backups no dashboard agora mostra 5 items (era 4)

Technical Notes

  • Collector: /root/scripts/monitor/collect-backups.sh (item #5)
  • Detecta o subdirectório mais recente via ls -dt e calcula idade pelo mtime
  • Frontend não requer alterações - renderiza dinamicamente todos os backups da BD

[2.4.0] - 2026-02-04

Fixed

  • Monitor.tsx - Corrigido URL da API de /api/monitor.php para /api/monitor
  • Monitor.tsx - Adaptada estrutura de dados para nova resposta da API (items agrupados por categoria)
  • Monitoring Service - Corrigido cálculo de stats (MySQL retornava strings)
  • server.ts - Adicionado serving de ficheiros estáticos em produção

Changed

  • Interface MonitorData actualizada para reflectir estrutura real da API
  • Mock data actualizado com dados realistas da BD
  • Sumário usa data.stats em vez de data.summary para totais

Added

  • Dockerfile - Configuração Docker com NODE_ENV=production
  • Static serving - Frontend servido pelo Express em produção
  • SPA fallback - Rotas não-API devolvem index.html

Technical Notes

  • API endpoint: /api/monitor retorna dados de tbl_eal_monitoring
  • Categorias disponíveis: server, service, site, container, backup, wp_update, storage
  • Stats calculados server-side com conversão explícita para números
  • Em produção: Express serve dist/ e faz fallback para SPA

[2.3.0] - 2026-02-04

Added

  • Server Metrics Unified - Métricas de todos os servidores (Hetzner + SSH)
    • Serviço /api/services/server-metrics.ts - Collector unificado
    • Rota /api/server-metrics/collect - Recolhe todas as métricas
    • Rota /api/server-metrics/ssh - Métricas CWP e EasyPanel via SSH
    • Rota /api/server-metrics/hetzner - Sync Hetzner para monitoring
    • Integração com tbl_eal_monitoring existente

Endpoints Server Metrics

  • POST /api/server-metrics/collect - Recolhe métricas de todos os servidores
  • POST /api/server-metrics/ssh - Apenas CWP Server e EasyPanel (via SSH)
  • POST /api/server-metrics/hetzner - Sync Hetzner para tabela monitoring

Technical Notes

  • Servidores SSH: CWP Server (176.9.3.158), EasyPanel (178.63.18.51)
  • Servidores Hetzner: MCP Hub, Meet, WhatsApp, WhatSMS
  • Métricas: CPU%, RAM%, Disk%, Load Average, Network I/O
  • Actualiza tbl_eal_monitoring com dados reais
  • Cron recomendado: curl -X POST localhost:3001/api/server-metrics/collect a cada 5 min

[2.2.0] - 2026-02-04

Added

  • WordPress Monitor API - Endpoint para receber dados do plugin WP

    • Rota POST /api/wp-monitor - Recebe dados de sites WordPress
    • Rota GET /api/wp-monitor - Lista sites monitorizados
    • Rota GET /api/wp-monitor?test - Testar conexão
    • Autenticação via header X-API-Key
  • Site Availability Checker - Verificação de disponibilidade HTTP

    • Função checkSiteAvailability() em /api/services/monitoring.ts
    • Função checkAllSitesAvailability() para verificar todos os sites
    • Script cron /api/scripts/check-sites.ts para verificação periódica
    • Rota POST /api/monitor/check-sites para trigger manual

Changed

  • /api/routes/monitor.ts - Adicionada rota POST para check manual

Technical Notes

  • Script de cron: npx tsx api/scripts/check-sites.ts
  • Recomendado: executar a cada 10 minutos via cron
  • Sites down são marcados com status down na BD
  • Plugin WP actualizado para usar dash.descomplicar.pt/api/wp-monitor

[2.1.0] - 2026-02-04

Added

  • Hetzner Cloud Monitoring - Monitorização de VPS Hetzner
    • Tabela tbl_eal_hetzner_servers - Inventário de servidores
    • Tabela tbl_eal_hetzner_metrics - Métricas time-series
    • View v_eal_hetzner_latest - Últimas métricas por servidor
    • Serviço /api/services/hetzner.ts - Integração API Hetzner Cloud
    • Rotas /api/hetzner/* para dashboard e collectors

Endpoints Hetzner

  • GET /api/hetzner - Dashboard (servidores + últimas métricas)
  • POST /api/hetzner/sync - Sincronizar lista de servidores
  • POST /api/hetzner/collect - Recolher métricas de todos os servidores
  • POST /api/hetzner/collect/:id - Recolher métricas de um servidor
  • GET /api/hetzner/history/:id - Histórico de métricas (24h default)
  • POST /api/hetzner/cleanup - Limpar métricas antigas (7 dias default)

Technical Notes

  • Token Hetzner armazenado em .env (HETZNER_TOKEN)
  • Métricas: CPU%, disk IOPS/bandwidth, network bandwidth/pps
  • Retenção de dados: 7 dias (configurável)
  • Collector pode ser executado via cron: curl -X POST localhost:3001/api/hetzner/collect

[2.0.1] - 2026-02-04

Added

  • Endpoint /api/diagnostic para testes individuais de cada função
  • Dependência dotenv ^16.6.1 para carregamento de variáveis de ambiente

Fixed

  • Carregamento de variáveis de ambiente (.env) antes de inicializar connection pool MySQL
  • Configuração de DB_HOST para servidor remoto (176.9.3.158)
  • Tratamento de erros EADDRINUSE (porta já em uso)

Changed

  • Título da aplicação: "Plan EAL" → "Dashboard Descomplicar · Dados Reais"
  • Logs do servidor mais detalhados com separadores visuais

[2.0.0] - 2026-02-04

Added

API Node.js/Express Completa

  • Servidor Express em /api/server.ts
  • Connection pool MySQL em /api/db.ts
  • Proxy Vite configurado (/apihttp://localhost:3001)

Serviços

  • Google Calendar API (/api/services/calendar.ts)

    • Integração com calendários pessoal e profissional
    • Eventos de hoje e da semana
    • OAuth2 configurado com refresh token
  • Dashboard Queries (/api/services/dashboard.ts)

    • Tasks: urgente, alta prioridade, vencidas, em testes, esta semana
    • Monday Mood (tag especial #67)
    • Tickets abertos
    • Leads: contactar, followup, proposta
    • Projectos activos
    • Timesheet semanal (staff_id=1)
    • Billing 360 (clientes com horas facturadas vs entregues)
    • Pipeline completo (leads, estimates, proposals)
  • Monitoring Queries (/api/services/monitoring.ts)

    • Query à tabela tbl_eal_monitoring
    • Summary por categoria
    • Status geral (ok/warning/critical)

Endpoints

  • GET /api/dashboard - Dashboard completo
  • GET /api/monitor - Monitorização de sistemas
  • GET /api/health - Health check

Frontend

  • App.tsx actualizado para usar /api/dashboard (linha 425)
  • Fallback para dados mock em caso de erro (desenvolvimento)

Infraestrutura

  • Scripts npm:
    • npm run dev - Vite + API em paralelo (concurrently)
    • npm run dev:api - API apenas (tsx watch)
    • npm run dev:ui - Vite apenas
    • npm start - Produção (serve API + static build)

Dependências Adicionadas

  • express ^4.19.2
  • cors ^2.8.5
  • mysql2 ^3.11.5
  • googleapis ^144.0.0
  • concurrently ^9.1.2 (dev)
  • tsx ^4.19.2 (dev)
  • @types/express ^5.0.0 (dev)
  • @types/cors ^2.8.17 (dev)

Documentação

  • api/README.md - Documentação completa da API
  • .env.example - Template de configuração

Changed

  • Título da tarefa #1556: "Dashboard Descomplicar - Dados Reais e API"
  • vite.config.ts - Adicionado proxy para /api
  • package.json - Nome alterado para dash-descomplicar

Migrated

Toda a lógica do PHP (plan-eal.descomplicar.pt) migrada para TypeScript:

De index.php:

  • Google Calendar API (pessoal + profissional)
  • Todas as queries à BD Desk CRM
  • Billing 360 (horas facturadas vs entregues)
  • Pipeline de vendas
  • Cálculo de timesheet semanal
  • Monday Mood (tarefas com tag especial)

De monitor.php:

  • Query à tbl_eal_monitoring
  • Organização por categoria
  • Cálculo de status geral

Technical Notes

Semana: Segunda a Domingo

  • Função getWeekRange() calcula início da semana (segunda-feira)
  • Timesheet usa UNIX timestamp para compatibilidade com dados antigos

Billing 360

  • Calcula horas entregues de tbltaskstimers
  • Compara com horas facturadas de billing_360_invoices
  • Status: credit (>5h crédito), debt (<-5h débito), ok (entre -5 e +5)

Pipeline

  • Agrega leads por fase (tblleads_status)
  • Inclui estimates (status 2=Enviado, 3=Visto)
  • Inclui proposals (status 4)
  • Valor total calculado em SQL

Performance

  • Queries em paralelo com Promise.all()
  • Connection pool MySQL (10 conexões)
  • Vite proxy em dev (zero CORS issues)

Pending

  • Sistema de autenticação (JWT ou sessões)
  • Deploy em produção (EasyPanel)
  • Configurar variáveis de ambiente em produção
  • Testar Google Calendar OAuth refresh

Breaking Changes

  • PHP backend descontinuado (plan-eal.descomplicar.pt será apagado)
  • Nova API Node.js/Express em /api
  • React dashboard em dash.descomplicar.pt

[1.0.0] - 2026-02-03

Added

  • Dashboard React inicial com Vite + TypeScript
  • UI com Tailwind CSS 4 + Framer Motion
  • Design system: Glassmorphism + Bento Grid
  • Componentes: HeroStat, GlassCard, ProgressRing, Sparkline
  • Dados mock para demonstração
  • Autenticação Authentik (OIDC) configurada
  • Deploy EasyPanel em dash.descomplicar.pt

Note

Versão inicial com dados mock. API implementada na v2.0.0.