- server-metrics: substituir CWP (só aceita ed25519) por Easy server
(aceita password auth na porta 22)
- monitoring-collector: remover chamadas a monitor.getSystemStats e
monitor.getDockerTaskStats (endpoint não existe nesta versão EasyPanel);
métricas CPU/RAM via SSH e containers via docker service ls sobre SSH
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sessões com outcome=interrupted e ≥10 eventos são redirects naturais
do utilizador, não falhas da skill. O detector contava todas as
interrupções como falhas, gerando falsos positivos para skills
conversacionais como superpowers:brainstorming.
Fix: só contar como falha erros reais (outcome=error) ou interrupções
precoces (<10 eventos).
Resolve ticket #10407.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- #7 actions_never_executed: acções P1/P2 em disc #33 há ≥14 dias pendentes
- #8 skill_narrative_vs_data: skill reportada problemática em worklogs
mas com outcome=completed nas sessões (≥3 matches)
- #9 worklog_pattern_frequency: tokens recorrentes (≥3 worklogs) em patterns_text
- Integrados em detectPatterns() como secção opcional quando worklogs > 0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Antes: skills_invoked vazio em 1608/1608 sessões porque detectSkillInvoked
apenas era aplicado ao text extraído de content[type=text]. A string
'Launching skill: X' vive dentro de tool_result.content (string ou array
de text blocks), que era ignorada.
Fix: adicionar helper extractResultText(r) que trata ambos os casos e
aplicar detectSkillInvoked + detectHook também ao tool_result. Após
re-indexação full, 526/1616 sessões têm agora skills detectadas e o
detector de padrões devolve 6 padrões (vs 2 baseline), incluindo
skills_with_high_error_rate reais.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Expansão do dashboard de 3 para 8 páginas com dados reais do stack:
- MCPs: monitorização de 33 MCPs no gateway com ping e estado online/offline
- n8n: 14 workflows com último run, duração e falhas 24h
- Paperclip: 16 agentes operacionais, routines e issues (PostgreSQL)
- IA/Claude: visão das 3 camadas (189 skills, 72 agents, 39 MCPs, CARL)
- Operações: tickets Desk CRM por departamento + cobertura PROCs
16 ficheiros novos (3042 linhas), 3 existentes editados.
Nova dependência: pg (PostgreSQL client para Paperclip).
Audit: 0 vulnerabilidades (npm audit fix aplicado).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The checkAllSitesAvailability() function did HEAD requests from EasyPanel
to check sites. Many WordPress sites block HEAD or return errors, causing
all sites to show as DOWN while keeping valid response times from the
CWP collector. The CWP collector (collect-sites.sh) is the single source
of truth for site status.
Removed:
- checkSiteAvailability() and checkAllSitesAvailability() from monitoring service
- POST /api/monitor/check-sites endpoint
- api/scripts/check-sites.ts cron script
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New /financial page with sales/expenses cards, monthly bar chart and
expense distribution pie chart (Recharts)
- New API endpoint GET /api/financial with queries on tblinvoices and
tblexpenses
- Compact services grid (2-col dots layout) in Monitor page
- Add Syncthing to critical services monitoring
- Add Financeiro nav link to Dashboard, Monitor and Financial headers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace sshpass with ssh2 Node.js library for reliable SSH connections.
Add all 6 servers (CWP, EasyPanel, MCP Hub, Meet, WhatsApp, WhatSMS).
Add 5-minute auto-collection scheduler in production mode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Renomear "Plan EAL" para "Dashboard Descomplicar" (header + footer)
- Adicionar menu hamburger mobile com navegacao Dashboard/Monitor
- Excluir leads com lembrete futuro da seccao "Contactar" (NOT EXISTS tblreminders)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Changed fetch URL from /api/monitor.php to /api/monitor
- Updated MonitorData interface to match API response structure
- Fixed stats calculation (MySQL returning strings instead of numbers)
- Updated mock data with realistic values from production DB
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add POST /api/wp-monitor endpoint for WP plugin data
- Add GET /api/wp-monitor for listing monitored sites
- Add checkSiteAvailability() function for HTTP health checks
- Add checkAllSitesAvailability() for batch checking
- Add /api/scripts/check-sites.ts for cron execution
- Add POST /api/monitor/check-sites for manual trigger
DeskCRM Task: #1556
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>