feat: add Node.js/Express API with real data from Desk CRM
- ✅ API completa em /api com TypeScript - ✅ Google Calendar integration (pessoal + profissional) - ✅ Queries diretas à BD: tasks, leads, projectos, billing, pipeline - ✅ Endpoints: /api/dashboard, /api/monitor, /api/health - ✅ Vite proxy configurado (/api → localhost:3001) - ✅ App.tsx usa /api/dashboard (não mais dados mock) - ✅ Migração completa do PHP (index.php + monitor.php) - ✅ CHANGELOG.md criado para tracking - ✅ Scripts npm: dev (paralelo), dev:api, dev:ui, start Dependencies: - express, cors, mysql2, googleapis - concurrently, tsx (dev) Breaking: PHP backend será descontinuado See: CHANGELOG.md, api/README.md Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
137
CHANGELOG.md
Normal file
137
CHANGELOG.md
Normal file
@@ -0,0 +1,137 @@
|
||||
# Changelog
|
||||
|
||||
Todas as alterações notáveis neste projecto serão documentadas neste ficheiro.
|
||||
|
||||
## [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 (`/api` → `http://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.
|
||||
Reference in New Issue
Block a user