Files
DashDescomplicar/api
ealmeida 810401e4e7 feat(pipeline): F4.1 — rotas GET /patterns e GET /stats (contrato C4-análise) #2415
- routes/sessions.ts: createSessionsAnalysisRouter com GET /patterns (filtros
  week/severity/key/days, paginado, Zod) e GET /stats (agregados: sessões
  totais e por dia, by_source, by_outcome, tool_top, skill_top,
  patterns_by_type, gate_blocks, avg_duration_sec, last_indexed_at,
  latest_pattern_week); montado em /api/sessions (C4) e /api (alias F4.1)
- services/sessions/db.ts: listPatterns/countPatterns/getStats +
  rowToPattern/buildPatternsWhere; gate_blocks devolve null enquanto a
  tabela gate_events não existir (F1 arco C3-gates)
- tests/sessions-analysis-route.test.ts: 15 testes (filtros, paginação,
  validação, gate_blocks condicional, não-colisão com /:id)
- inclui camada session_events pendente de v2.7.3 (db.ts/indexer.ts —
  storeSessionEvents no indexAll; rota /:id lê da BD) já em execução, para
  a árvore commitada compilar coerente

Validado contra BD real (11459 sessões, 160 padrões): curl 200 com JSON
não-vazio em /api/patterns, /api/stats, /api/sessions/patterns?week=2026-W26,
/api/sessions/stats?days=7.
2026-07-03 06:01:22 +01:00
..

Dashboard Descomplicar API

API Node.js/Express com queries diretas à BD Desk CRM.

Estrutura

api/
├── server.ts          # Express server
├── db.ts              # MySQL connection pool
├── services/
│   ├── calendar.ts    # Google Calendar API
│   ├── dashboard.ts   # Dashboard queries
│   └── monitoring.ts  # Monitoring queries
└── routes/
    ├── dashboard.ts   # GET /api/dashboard
    └── monitor.ts     # GET /api/monitor

Endpoints

GET /api/dashboard

Retorna dados do dashboard principal:

  • Tarefas (urgente, alta, vencidas, testes, semana)
  • Tickets abertos
  • Leads (contactar, followup, proposta)
  • Projectos activos
  • Timesheet semanal
  • Billing 360
  • Pipeline de vendas
  • Eventos Google Calendar (hoje + semana)

GET /api/monitor

Retorna status de monitorização:

  • Servidores (CPU, RAM, Disco)
  • Serviços web
  • Sites WordPress
  • Containers Docker

GET /api/health

Health check endpoint

Setup

  1. Instalar dependências:
npm install
  1. Configurar .env:
cp .env.example .env
# Editar .env com credenciais correctas
  1. Desenvolvimento:
npm run dev       # Vite + API (ambos)
npm run dev:api   # API apenas
npm run dev:ui    # Vite apenas
  1. Produção:
npm run build
npm start

Queries Migradas do PHP

Todas as queries do index.php e monitor.php foram migradas para TypeScript:

  • ✅ Tasks (urgente, alta, vencidas, testes, semana, monday mood)
  • ✅ Tickets
  • ✅ Leads (contactar, followup, proposta)
  • ✅ Projectos
  • ✅ Timesheet semanal
  • ✅ Billing 360
  • ✅ Pipeline (leads, estimates, proposals)
  • ✅ Google Calendar (eventos pessoais + profissionais)
  • ✅ Monitorização (tbl_eal_monitoring)

BD Necessárias

  • ealmeida_desk24 (BD principal Perfex CRM)
  • Tabelas Perfex: tbltasks, tblleads, tblprojects, tbltickets, etc.
  • Tabelas custom: billing_360_clients, billing_360_invoices, tbl_eal_monitoring

Google Calendar API

Credenciais OAuth2 configuradas em services/calendar.ts:

  • Client ID
  • Client Secret
  • Refresh Token

Calendários:

  • primary - Eventos pessoais
  • emanuel@descomplicar.pt - Eventos profissionais