docs: migrar SPEC/PLAN para docs/SPECS e docs/PLANS e adicionar ficheiros de contexto do projecto
This commit is contained in:
@@ -0,0 +1,169 @@
|
|||||||
|
---
|
||||||
|
type: Document
|
||||||
|
title: Agents
|
||||||
|
description: Governance de agentes IA para este projecto
|
||||||
|
tags: [dev, dashboard, governance, 5w2h, roles, relacionamentos, modelo, 2026-06-30, reorganizacao]
|
||||||
|
---
|
||||||
|
# AGENTS.md — Governance de Agentes IA
|
||||||
|
|
||||||
|
## Identidade do Projecto
|
||||||
|
- **Repositório**: DashDescomplicar
|
||||||
|
- **Localização**: `/media/ealmeida/Dados/Dev/DashDescomplicar/`
|
||||||
|
- **CRM**: Desk #2323 | Projecto: #65 (OKF Stack Completo)
|
||||||
|
- **Modelo Base**: Hub → `05-Projectos/Modelo-Organizacao-Proc-Dev/`
|
||||||
|
- **Versão Actual**: 2.7.3 (2026-06-30)
|
||||||
|
|
||||||
|
## Directrizes de Operação
|
||||||
|
|
||||||
|
### 1. PT-PT e Precisão
|
||||||
|
Toda a interacção, comentários, commits e documentação devem ser em português europeu, com acentos e cedilhas.
|
||||||
|
|
||||||
|
### 2. MCP-first
|
||||||
|
- **Desk CRM**: Consultar/actualizar via MCP desk-crm-v3
|
||||||
|
- **Gitea**: Commits e gestão de versões via MCP gitea
|
||||||
|
- **SSH**: Apenas se necessário para validação remota (EasyPanel, CWP)
|
||||||
|
- **Memória IJFW**: Guardar contexto persistente via ijfw-memory
|
||||||
|
|
||||||
|
### 3. Ciclo de Trabalho Obrigatório
|
||||||
|
1. **Validar contexto** — ler AGENTS.md + STATUS.md + desk.project
|
||||||
|
2. **Executar** — seguir docs/PLANS/DashDescomplicar-PLAN.md (roadmap + ciclos)
|
||||||
|
3. **Validar** — registar mudanças em STATUS.md
|
||||||
|
4. **Registar** — actualizar CRM (#2323) se há progresso significativo
|
||||||
|
|
||||||
|
### 4. Validação Obrigatória
|
||||||
|
Nunca dar uma tarefa como concluída sem validar o estado actual via curl/MCP/SSH.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agentes Descomplicar Autorizados
|
||||||
|
|
||||||
|
### Claude Code (cc)
|
||||||
|
|
||||||
|
**Identidade**: `staff_id = 25` (CLAUDE em Desk CRM)
|
||||||
|
|
||||||
|
| Campo | Valor |
|
||||||
|
|-------|-------|
|
||||||
|
| **What** | Desenvolvimento, DevOps, features no DashDescomplicar |
|
||||||
|
| **Why** | Fonte central de código, deploy, PDCA operacional |
|
||||||
|
| **Where** | Dev/DashDescomplicar + EasyPanel (easy.descomplicar.pt) |
|
||||||
|
| **Who** | Equipa de desenvolvimento (Emanuel + Claude Code) |
|
||||||
|
| **When** | [Ver WHEN/HOW abaixo] |
|
||||||
|
| **How** | [Ver WHEN/HOW abaixo] |
|
||||||
|
|
||||||
|
#### When
|
||||||
|
- **Semanal (Seg):** Health check: `curl -sf https://dash.descomplicar.pt/api/dashboard` + revisão de logs
|
||||||
|
- **Mensal (último Sex):** Audit dependências (`npm audit`) + atualizar STATUS.md
|
||||||
|
- **Trimestral:** Revisão segurança (OWASP) + testes de carga
|
||||||
|
- **Contínuo:** PRs/features → docs/PLANS/DashDescomplicar-PLAN.md (roadmap)
|
||||||
|
- **Incidente:** CodeRED para site down (`curl -X POST https://codered.descomplicar.pt/v1/trigger/RED-ZMT3FCU8`)
|
||||||
|
|
||||||
|
#### How
|
||||||
|
|
||||||
|
**Referência operacional primária:**
|
||||||
|
- 📋 **PLAN:** `docs/PLANS/DashDescomplicar-PLAN.md` (roadmap Q3-Q4, ciclos de manutenção, deploy)
|
||||||
|
- 📋 **SPEC:** `docs/SPECS/DashDescomplicar-SPEC.md` (especificação, projectos ativos)
|
||||||
|
|
||||||
|
**Procedimentos Descomplicar:**
|
||||||
|
- `PROC-Deploy-EasyPanel.md` (D7-Tecnologia) — deploy via SSH + Docker
|
||||||
|
- `PROC-Observabilidade-Dashboard.md` — coleta de métricas
|
||||||
|
- `QR-Desk-Subtarefas-Dependencias.md` — gestão de dependências no CRM
|
||||||
|
|
||||||
|
**Validação:**
|
||||||
|
- Build local: `npm run build && npm run lint && npm test`
|
||||||
|
- Health endpoint: `GET /api/dashboard` (< 500ms p95)
|
||||||
|
- Logs: `docker logs descomplicar_dashboard_descomplicar` (EasyPanel)
|
||||||
|
|
||||||
|
**Escalação:**
|
||||||
|
- Bug/Feature: Comentário em Desk #65
|
||||||
|
- Incidente P0 (site down): CodeRED imediatamente
|
||||||
|
- Questão técnica: IRC com Claude Code peers
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Observabilidade (Sistema)
|
||||||
|
|
||||||
|
**Integração**: Sistemas de telemetria que alimentam DashDescomplicar
|
||||||
|
|
||||||
|
| Campo | Valor |
|
||||||
|
|-------|-------|
|
||||||
|
| **What** | Coleta e agregação de métricas operacionais |
|
||||||
|
| **Why** | Observabilidade de infraestrutura e aplicação |
|
||||||
|
| **Where** | `okf/entidades/Metrics.md` + logs/performance-metrics.json |
|
||||||
|
| **Who** | Observabilidade (Sistema #2059) |
|
||||||
|
| **When** | Contínuo (eventos em tempo real) |
|
||||||
|
| **How** | [Ver WHEN/HOW abaixo] |
|
||||||
|
|
||||||
|
#### When
|
||||||
|
- **Contínuo:** Coleta via Express middleware (Painéis + API)
|
||||||
|
- **Agregação horária:** Roll-up em Prometheus (opcional)
|
||||||
|
- **Retenção:** Logs de performance em JSON (7 dias rotated)
|
||||||
|
|
||||||
|
#### How
|
||||||
|
|
||||||
|
**Referência operacional:**
|
||||||
|
- 📋 **SPEC Autoritária:** `/media/ealmeida/Dados/Hub/05-Projectos/Observabilidade/SPEC.md`
|
||||||
|
- 📋 **PLAN Autoritário:** `/media/ealmeida/Dados/Hub/05-Projectos/Observabilidade/PLAN.md`
|
||||||
|
- 📊 **Métricas OKF:** `okf/entidades/Metrics.md`
|
||||||
|
|
||||||
|
**Integração com DashDescomplicar:**
|
||||||
|
- Endpoint: `GET /api/metrics` (Prometheus format)
|
||||||
|
- Painéis consomem via CSR-Integration (cache + reconnect)
|
||||||
|
- Tabela relação: `okf/relacionamentos/CSRIntegration-integra-Metrics.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## O Que Este Projecto Contém
|
||||||
|
|
||||||
|
- `docs/PLANS/DashDescomplicar-PLAN.md` — **PLANO OPERACIONAL PRINCIPAL** (roadmap Q3-Q4, ciclos, deploy)
|
||||||
|
- `docs/SPECS/DashDescomplicar-SPEC.md` — especificações e projectos activos
|
||||||
|
- `okf/` — **GRAFO DE CONHECIMENTO** (12 entidades + 7 relacionamentos bidireccionais)
|
||||||
|
- `okf/entidades/` — Dashboard-Engine, 8+ Painéis, CSR-Integration, Metrics
|
||||||
|
- `okf/relacionamentos/` — exibe, integra-com, usa (com cruzamentos de métricas)
|
||||||
|
- `AGENTS.md` — (este ficheiro) governance de agentes e integração
|
||||||
|
- `STATUS.md` — **PDCA OPERACIONAL** (Plan-Do-Check-Act ligado a recursos)
|
||||||
|
- `MEMORY.md` — histórico de sessões (deprecated, usar IJFW em ~/.ijfw/memory/)
|
||||||
|
- `desk.project` — ancoragem CRM: task #2323, projecto #65
|
||||||
|
- `CHANGELOG.md` — histórico de versões
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Validação de Integridade
|
||||||
|
|
||||||
|
✅ **When/How completo** — Cada agent tem schedule e referências a PLAN/PROC/QR
|
||||||
|
✅ **Bidirecionalidade** — Relacionamentos em okf/ documentados nos dois sentidos
|
||||||
|
✅ **Sem órfãos** — Toda entidade ligada a pelo menos 1 entrada + 1 saída
|
||||||
|
✅ **PDCA linkado** — STATUS.md refere docs/PLANS/ e observabilidade
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Referência ao Modelo
|
||||||
|
Consulte `/media/ealmeida/Dados/Hub/05-Projectos/Modelo-Organizacao-Proc-Dev/ESTRUTURA.md` para a hierarquia padrão obrigatória em todos os projectos Descomplicar.
|
||||||
|
|
||||||
|
**Última actualização:** 2026-06-30 (Fase C — 5W2H+PDCA completo)
|
||||||
|
|
||||||
|
## Relacionamentos Direccionais
|
||||||
|
|
||||||
|
### Depende De
|
||||||
|
- [[06-Operacoes]] - Hub operacional central com procedimentos
|
||||||
|
- [[04-Stack]] - Decisões técnicas e stack Descomplicar
|
||||||
|
|
||||||
|
### Suporta
|
||||||
|
- [[05-Projectos/Modelo-Organizacao-Proc-Dev/ESTRUTURA.md]] - Modelo de projectos
|
||||||
|
|
||||||
|
### Documenta
|
||||||
|
- [[06-Operacoes/Procedimentos/]] - Procedimentos operacionais
|
||||||
|
|
||||||
|
### Implementação
|
||||||
|
- [[DashDescomplicar/src/]] - Código-fonte do Dashboard
|
||||||
|
- [[DashDescomplicar/okf/]] - Grafo de conhecimento de painéis
|
||||||
|
|
||||||
|
### Relacionado Com
|
||||||
|
- [[04-Stack]] - Stack técnico partilhado
|
||||||
|
- [[CodeRED]] - Sistema de alertas críticos
|
||||||
|
|
||||||
|
### Procedimento
|
||||||
|
- [[06-Operacoes/Procedimentos/D7-Tecnologia/Infraestrutura/PROC-EasyPanel-Deployment.md]] - Deploy em EasyPanel
|
||||||
|
- [[06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/PROC-Desk-Subtarefas-Dependencias.md]] - Modelo de subtarefas
|
||||||
|
|
||||||
|
### Herança
|
||||||
|
- [[05-Projectos/Modelo-Organizacao-Proc-Dev/ESTRUTURA.md]] - Estrutura canónica
|
||||||
@@ -1,3 +1,11 @@
|
|||||||
|
---
|
||||||
|
type: Document
|
||||||
|
title: Audit Report
|
||||||
|
description: >-
|
||||||
|
Relatório de auditoria de segurança e qualidade do DashDescomplicar (React 19 + TypeScript + Vite + Express + MySQL), com 20 vulnerabilidades classificadas e veredicto de não apto para produção.
|
||||||
|
timestamp: 2026-02-14T03:33:42.730555+00:00
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
# Auditoria de Segurança e Qualidade - DashDescomplicar
|
# Auditoria de Segurança e Qualidade - DashDescomplicar
|
||||||
|
|
||||||
**Data:** 14-02-2026
|
**Data:** 14-02-2026
|
||||||
|
|||||||
@@ -1,7 +1,21 @@
|
|||||||
|
---
|
||||||
|
type: Changelog
|
||||||
|
title: Changelog
|
||||||
|
description: >-
|
||||||
|
Todas as alterações notáveis neste projecto serão documentadas neste ficheiro
|
||||||
|
timestamp: 2026-06-15T18:43:39.495926+00:00
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
Todas as alterações notáveis neste projecto serão documentadas neste ficheiro.
|
Todas as alterações notáveis neste projecto serão documentadas neste ficheiro.
|
||||||
|
|
||||||
|
## [Unreleased] - 2026-10-24
|
||||||
|
|
||||||
|
### Fixed — Detector de padrões de sessões (Desk #14404)
|
||||||
|
- **`patterns.ts` / `detectDurationOutliers`**: outcome `unknown` deixa de contar como "não concluída" — as sessões cron do Hermes (`project_slug` NULL) têm 100% `unknown` (outcome não medido) e geravam por construção ~5% de outliers todas as semanas ("Projecto null: N sessões longas não concluídas", 11 semanas seguidas). Só `error`/`interrupted` contam.
|
||||||
|
- **`sessions-patterns.ts`**: tickets de padrão recorrente passam a ir para o departamento Tecnologia (id=7); o id=1 é "Comercial", não "Geral".
|
||||||
|
|
||||||
## [2.7.3] - 2026-06-15
|
## [2.7.3] - 2026-06-15
|
||||||
|
|
||||||
### Added — Indexação Multi-Fonte (Hermes + OpenCode)
|
### Added — Indexação Multi-Fonte (Hermes + OpenCode)
|
||||||
|
|||||||
@@ -0,0 +1,181 @@
|
|||||||
|
---
|
||||||
|
layer: wiki
|
||||||
|
type: Document
|
||||||
|
title: "CLAUDE — DashDescomplicar"
|
||||||
|
description: >-
|
||||||
|
Instruções operacionais para Claude Code no projecto DashDescomplicar. Stack React 19 + Express + EasyPanel Swarm.
|
||||||
|
tags: [claude, operacional, dashboard, deploy, react, express]
|
||||||
|
timestamp: 2026-06-29T23:00:00+01:00
|
||||||
|
---
|
||||||
|
# CLAUDE — DashDescomplicar
|
||||||
|
|
||||||
|
Instruções operacionais para agentes
|
||||||
|
|
||||||
|
## OKF — Organizational Knowledge Framework (OBRIGATÓRIO)
|
||||||
|
|
||||||
|
Este projecto tem um mapeamento OKF interno em `okf/`. **Antes de qualquer acção, consultar o OKF.**
|
||||||
|
|
||||||
|
| Regra | Detalhe |
|
||||||
|
|-------|---------|
|
||||||
|
| **Consultar antes de agir** | Ler `okf/index.md` ao iniciar sessão. Ver entidades relevantes ao contexto. |
|
||||||
|
| **Manter actualizado** | Se criares, alterares ou removeres um componente, actualizar a ficha OKF correspondente. |
|
||||||
|
| **Novo componente = nova ficha** | Qualquer novo serviço, módulo, integração ou script → criar `5W2H-PDCA.md` em `okf/entidades/`. |
|
||||||
|
| **Validar antes de commit** | `okf-validate.sh --project .` — 0 erros para commit. |
|
||||||
|
| **Relacionamentos bidirecionais** | Se A depende de B, tanto A como B devem registar a relação. |
|
||||||
|
|
||||||
|
**Estrutura:** `okf/index.md` → índice geral. `okf/entidades/` → uma pasta por componente com `5W2H-PDCA.md`.
|
||||||
|
IA a trabalhar neste projecto.
|
||||||
|
|
||||||
|
## Contexto
|
||||||
|
|
||||||
|
- **Projecto:** DashDescomplicar — dashboard interno `dash.descomplicar.pt`
|
||||||
|
- **Desk:** Projecto #65
|
||||||
|
- **Versão actual:** 2.7.3 (ver `CHANGELOG.md`)
|
||||||
|
- **Dev local:** `/media/ealmeida/Dados/Dev/DashDescomplicar`
|
||||||
|
- **Hub:** `/media/ealmeida/Dados/Hub/04-Stack/02.05-Aplicações/DashDescomplicar/`
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
| Camada | Tecnologias |
|
||||||
|
|--------|-------------|
|
||||||
|
| Frontend | React 19, TypeScript 5.6, Vite 7, Tailwind CSS, Framer Motion, Lucide React |
|
||||||
|
| Backend | Express 4, MySQL2, SSH2, Zod, Node.js 18+ |
|
||||||
|
| Observabilidade | better-sqlite3, chokidar, node-html-parser |
|
||||||
|
| DevOps | Docker, Gitea (HTTPS), EasyPanel Swarm |
|
||||||
|
|
||||||
|
## Desenvolvimento Local
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Modo desenvolvimento completo
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# Apenas frontend (porta 5173)
|
||||||
|
npm run dev:client
|
||||||
|
|
||||||
|
# Apenas backend (porta 3001)
|
||||||
|
npm run dev:server
|
||||||
|
```
|
||||||
|
|
||||||
|
- Frontend: `http://localhost:5173`
|
||||||
|
- API: `http://localhost:3001/api`
|
||||||
|
- Health: `http://localhost:3001/api/health`
|
||||||
|
- Proxy Vite: `/api` → `localhost:3001`
|
||||||
|
|
||||||
|
## Build e Validação
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build completo (validação antes de commit)
|
||||||
|
npx tsc -b && npx vite build && npx tsc -p api/tsconfig.json
|
||||||
|
|
||||||
|
# Build rápido
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pipeline de Deploy
|
||||||
|
|
||||||
|
1. **Validar build localmente** (obrigatório)
|
||||||
|
2. **Push para Gitea:**
|
||||||
|
```bash
|
||||||
|
git push origin main
|
||||||
|
# Se necessário: git pull --rebase origin main
|
||||||
|
```
|
||||||
|
3. **Rebuild e redeploy no servidor** (SSH `easy`):
|
||||||
|
```bash
|
||||||
|
cd /etc/easypanel/projects/descomplicar/dashboard_descomplicar/code
|
||||||
|
docker build -t easypanel/descomplicar/dashboard_descomplicar:latest .
|
||||||
|
docker service update --force descomplicar_dashboard_descomplicar
|
||||||
|
```
|
||||||
|
4. **Verificar:**
|
||||||
|
```bash
|
||||||
|
curl -sf https://dash.descomplicar.pt/api/dashboard
|
||||||
|
curl -sf https://dash.descomplicar.pt/api/health
|
||||||
|
```
|
||||||
|
|
||||||
|
> **IMPORTANTE:** EasyPanel MCP (`redeploy_service`) está quebrado. Usar **sempre** SSH directo para redeploy.
|
||||||
|
|
||||||
|
## Variáveis de Ambiente
|
||||||
|
|
||||||
|
Prefixo correcto: `DB_*` (NÃO `MYSQL_*`)
|
||||||
|
|
||||||
|
```env
|
||||||
|
DB_HOST=176.9.3.158
|
||||||
|
DB_USER=ealmeida_desk24
|
||||||
|
DB_PASS=...
|
||||||
|
DB_NAME=ealmeida_desk24
|
||||||
|
WP_MONITOR_API_KEY=...
|
||||||
|
HETZNER_TOKEN=...
|
||||||
|
NODE_ENV=production
|
||||||
|
FRONTEND_URL=https://dash.descomplicar.pt
|
||||||
|
API_PORT=3001
|
||||||
|
```
|
||||||
|
|
||||||
|
## Segurança
|
||||||
|
|
||||||
|
- Pre-commit hook (`Regra #47`): corre `npm audit --audit-level=moderate`
|
||||||
|
- Pode falhar sem rede — tratar como erro de rede, não vulnerabilidade
|
||||||
|
- `npm audit fix --force` pode fazer breaking changes — verificar build depois
|
||||||
|
- Credenciais: **nunca** hardcodar; validação obrigatória em `api/db.ts`
|
||||||
|
- `.env` está no `.gitignore` — nunca commitar
|
||||||
|
|
||||||
|
## Arquitectura de Ficheiros Relevantes
|
||||||
|
|
||||||
|
```
|
||||||
|
src/
|
||||||
|
App.tsx — router principal (8 painéis)
|
||||||
|
pages/ — Monitor, Financial, McpMonitor, N8nMonitor, Paperclip, AiOverview, Operations, Sessions
|
||||||
|
components/
|
||||||
|
Layout.tsx — sidebar com navegação
|
||||||
|
|
||||||
|
api/
|
||||||
|
server.ts — Express com rate-limit, CORS, Zod
|
||||||
|
db.ts — MySQL2 connection pool
|
||||||
|
routes/ — wp-monitor, monitor, hetzner, sessions, ...
|
||||||
|
services/ — monitoring, server-metrics, calendar, dashboard, ...
|
||||||
|
scripts/ — sessions-indexer, sessions-patterns, check-sites, ...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Padrões de Código
|
||||||
|
|
||||||
|
- Validação Zod em todas as rotas API
|
||||||
|
- `.passthrough()` em objectos aninhados (plugins WP podem enviar campos extra)
|
||||||
|
- `z.string()` em vez de `z.enum()` para health status (plugins enviam qualquer string)
|
||||||
|
- `z.any().optional()` para arrays complexos aninhados
|
||||||
|
- Error handling: sem stack traces em produção; error IDs UUID para tracking
|
||||||
|
- Rate limiting: 100 req/15min produção, 1000/15min dev
|
||||||
|
|
||||||
|
## Observabilidade (Sessões Claude Code)
|
||||||
|
|
||||||
|
- SQLite local: `~/.claude-work/sessions.db` (sincronizado para EasyPanel via rsync)
|
||||||
|
- Volume bind: `/root/data/dashboard-descomplicar/sessions.db → /data/sessions.db`
|
||||||
|
- Env var servidor: `OBSERVABILIDADE_DB=/data/sessions.db`
|
||||||
|
- Timer sync: `obs-index-sync.timer` (cada 15min)
|
||||||
|
- Fontes: Claude Code JSONL, Hermes (`~/.hermes/state.db`), OpenCode (`~/.local/share/opencode/opencode.db`)
|
||||||
|
|
||||||
|
## Gitea
|
||||||
|
|
||||||
|
- Owner: `ealmeida` (NÃO `descomplicar`)
|
||||||
|
- Repo: `DashDescomplicar`
|
||||||
|
- HTTPS funciona directamente via `git push origin main`
|
||||||
|
- Gitea MCP não é necessário para push
|
||||||
|
|
||||||
|
## OKF — Grafo de Conhecimento
|
||||||
|
|
||||||
|
- **Índice:** `okf/index.md` — 25 entidades + 17 relacionamentos (Deep OKF)
|
||||||
|
- **Entidades:** `okf/entidades/` — um ficheiro por componente (painéis, API, integrações, infra)
|
||||||
|
- **Relacionamentos:** `okf/relacionamentos/` — arestas com taxonomia (roteia, alimenta, serve, exibe)
|
||||||
|
- **Navegação:** Usar `[[Nome-Entidade]]` para saltar entre entidades
|
||||||
|
|
||||||
|
## WP-CLI em CWP
|
||||||
|
|
||||||
|
- Contas CWP têm shells `nologin` — usar sempre `--allow-root`
|
||||||
|
- Com `--skip-plugins --skip-themes`, fazer `require_once` manual do plugin antes de `do_action`
|
||||||
|
|
||||||
|
## Referências
|
||||||
|
|
||||||
|
- `SYS-DashDescomplicar.md` — descrição geral do sistema e painéis
|
||||||
|
- `okf/index.md` — grafo de conhecimento completo (Deep OKF)
|
||||||
|
- `MEMORY.md` — memórias operacionais acumuladas
|
||||||
|
- `CHANGELOG.md` — histórico de versões
|
||||||
|
- `docs/SPECS/SPEC-dashboard-expansion-q2-2026.md` — spec expansão Q2 2026
|
||||||
|
- `docs/PLANS/PLAN-conductor-dashboard-expansion.md` — plano de expansão
|
||||||
|
- `AUDIT-REPORT.md` — auditoria de segurança
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
type: Document
|
||||||
|
title: Memory
|
||||||
|
description: Histórico de sessões
|
||||||
|
tags: [dev, dashboard, historico, sessoes, decisoes, proximos-passos, 2026-06-30, reorganizacao]
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
|
# MEMORY.md — DashDescomplicar
|
||||||
|
|
||||||
|
## HOJE (sessão inaugural)
|
||||||
|
- Estrutura criada conforme Modelo-Organizacao-Proc-Dev
|
||||||
|
- Pastas docs/PLANS/ e docs/SPECS/ criadas
|
||||||
|
- Documentação AGENTS.md, MEMORY.md, desk.project, CHANGELOG.md, STATUS.md iniciada
|
||||||
|
|
||||||
|
---
|
||||||
@@ -1,3 +1,11 @@
|
|||||||
|
---
|
||||||
|
type: Reference
|
||||||
|
title: Readme
|
||||||
|
description: >-
|
||||||
|
> Dashboard de Gestão e Monitorização da Descomplicar®
|
||||||
|
timestamp: 2026-02-14T04:22:01.943892+00:00
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
# DashDescomplicar
|
# DashDescomplicar
|
||||||
|
|
||||||
> **Dashboard de Gestão e Monitorização** da Descomplicar®
|
> **Dashboard de Gestão e Monitorização** da Descomplicar®
|
||||||
|
|||||||
@@ -0,0 +1,135 @@
|
|||||||
|
---
|
||||||
|
type: Status
|
||||||
|
tags: [dev, dashboard, estado, versao, bloqueios, conformidade, 2026-06-30, reorganizacao]
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
|
# STATUS.md — DashDescomplicar
|
||||||
|
|
||||||
|
**Versão:** 2.7.3 | **Data:** 2026-06-30 | **Ciclo:** PDCA Operacional
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## PDCA Operacional
|
||||||
|
|
||||||
|
### 🟦 PLAN
|
||||||
|
|
||||||
|
**Proprietário:** Claude Code (Desk #2323)
|
||||||
|
**Referência Autoritária:** `docs/PLANS/DashDescomplicar-PLAN.md`
|
||||||
|
|
||||||
|
**Roadmap Q3-Q4 2026:**
|
||||||
|
- Q3-S1 (Jul): Audit segurança + certificado de revisão
|
||||||
|
- Q3-S2 (Ago): Painel Cron Dev (visibilidade de agentes cron)
|
||||||
|
- Q3-S3 (Set): Reintrodução progressiva Paperclip
|
||||||
|
- Q3-S4 (Out): Sincronização multi-máquina
|
||||||
|
- Q4-S1 (Nov): Integração Wiki Descomplicar
|
||||||
|
- Q4-S2 (Dez): Painel Inteligência Stack (melhorias)
|
||||||
|
|
||||||
|
**Ciclos de Manutenção:**
|
||||||
|
- **Semanal (Seg):** Health check + revisão de logs (docs/PLANS § Ciclos de Manutenção)
|
||||||
|
- **Mensal (último Sex):** Audit dependências + STATUS.md update (docs/PLANS § Ciclos de Manutenção)
|
||||||
|
- **Trimestral:** Revisão segurança (OWASP) + testes de carga (docs/PLANS § Ciclos de Manutenção)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟩 DO
|
||||||
|
|
||||||
|
**Execução:** Desenvolvimento + Deploy em EasyPanel
|
||||||
|
|
||||||
|
**Localização Código:**
|
||||||
|
- Repositório: `git.descomplicar.pt/ealmeida/DashDescomplicar` (Gitea)
|
||||||
|
- Dev local: `/media/ealmeida/Dados/Dev/DashDescomplicar/`
|
||||||
|
- Deploy: `easy.descomplicar.pt` (EasyPanel) — serviço `descomplicar_dashboard_descomplicar`
|
||||||
|
- Banco de dados: CWP `176.9.3.158` — `desscomplicar` (MySQL)
|
||||||
|
|
||||||
|
**Dependências Críticas:**
|
||||||
|
- MCP Gateway (`gateway.descomplicar.pt`) — 39 MCPs
|
||||||
|
- Desk CRM (MySQL interno) — tarefas, tickets, projecto (#2323)
|
||||||
|
- n8n — workflows de automação
|
||||||
|
- Moloni API — dados financeiros
|
||||||
|
- SSH (CWP + EasyPanel) — coleta de métricas infraestrutura
|
||||||
|
- IJFW (`~/.ijfw/memory/`) — sessões Claude Code
|
||||||
|
|
||||||
|
**Processo de Deploy (docs/PLANS § Processo de Deploy):**
|
||||||
|
1. Branch `main` com testes a passar: `npm test`
|
||||||
|
2. Lint sem erros: `npm run lint`
|
||||||
|
3. Build local validado: `npm run build`
|
||||||
|
4. STATUS.md actualizado com versão nova
|
||||||
|
5. SSH para EasyPanel + `git pull` + `docker build` + restart
|
||||||
|
|
||||||
|
**Features Activas (v2.7.3):**
|
||||||
|
- Dashboard (`/`) — página principal, hero stats
|
||||||
|
- Monitor (`/monitor`) — monitorizacao infraestrutura
|
||||||
|
- Financeiro (`/financial`) — Moloni + Desk métricas
|
||||||
|
- MCPs (`/mcps`) — estado 39 MCPs
|
||||||
|
- n8n (`/n8n`) — automações
|
||||||
|
- Paperclip (`/paperclip`) — 🟡 Suspenso (manutenção)
|
||||||
|
- IA/Claude (`/ai`) — overview Claude Code
|
||||||
|
- Operações (`/operations`) — Desk CRM gestão
|
||||||
|
- Sessions (`/sessions`) — replay Claude Code (obs.md prioritária: `/media/ealmeida/Dados/Hub/05-Projectos/Observabilidade/SPEC.md`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟨 CHECK
|
||||||
|
|
||||||
|
**Observabilidade:** Telemetria, métricas, health checks
|
||||||
|
|
||||||
|
**Referência OKF:**
|
||||||
|
- 📊 **Métricas:** `okf/entidades/Metrics.md` (coleta de performance, disponibilidade, negócio)
|
||||||
|
- 🔗 **Integração:** `okf/relacionamentos/CSRIntegration-integra-Metrics.md`
|
||||||
|
|
||||||
|
**Métricas de Saúde (docs/PLANS § Métricas de Saúde):**
|
||||||
|
- **Uptime:** > 99.5% (target SLA)
|
||||||
|
- **Response time:** < 500ms (p95)
|
||||||
|
- **Error rate:** < 0.5% (5xx errors)
|
||||||
|
- **DB connections:** < 80% do pool máximo
|
||||||
|
- **Disk space:** > 10% livre em EasyPanel
|
||||||
|
- **Session sync:** < 5min de lag
|
||||||
|
|
||||||
|
**Health Endpoints:**
|
||||||
|
- `GET https://dash.descomplicar.pt/api/dashboard` (< 500ms)
|
||||||
|
- `GET /api/metrics` (Prometheus format)
|
||||||
|
- Logs: `docker logs descomplicar_dashboard_descomplicar` (EasyPanel)
|
||||||
|
|
||||||
|
**Ferramenta de Observabilidade:**
|
||||||
|
- Painéis de Monitor consumem Desk CRM, Moloni, SSH, MCP Gateway (okf/relacionamentos/)
|
||||||
|
- Observabilidade sistema integrado (relação bidirecional via okf/index.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟧 ACT
|
||||||
|
|
||||||
|
**Melhoria Contínua:** SelfImprovement (Sistema #2066)
|
||||||
|
|
||||||
|
**Processo:**
|
||||||
|
1. **Recolher feedback:** Desk #65 comentários, CodeRED incidents, logs de erro
|
||||||
|
2. **Análise:** Identificar padrões, causa raiz de falhas
|
||||||
|
3. **Decisão:** Priorizar melhorias (RICE: Reach × Impact ÷ Confidence ÷ Effort)
|
||||||
|
4. **Implementar:** Nova feature/bugfix → PR → review → merge → deploy
|
||||||
|
5. **Registar:** Atualizar CHANGELOG.md + PLAN.md roadmap + STATUS.md
|
||||||
|
|
||||||
|
**Integração SelfImprovement:**
|
||||||
|
- SPEC autoritária: `/media/ealmeida/Dados/Hub/05-Projectos/SelfImprovement/SPEC.md`
|
||||||
|
- PLAN autoritário: `/media/ealmeida/Dados/Hub/05-Projectos/SelfImprovement/PLAN.md`
|
||||||
|
- Desk task: #2066
|
||||||
|
|
||||||
|
**Escalação de Incidentes:**
|
||||||
|
- **P0 (site down):** CodeRED imediatamente → `curl -X POST https://codered.descomplicar.pt/v1/trigger/RED-ZMT3FCU8`
|
||||||
|
- **P1 (erro crítico):** Desk #65 comentário + IRC com Claude Code
|
||||||
|
- **P2 (bugfix/enhancement):** Desk #65 comentário + roadmap Q3-Q4
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Estado actual
|
||||||
|
|
||||||
|
- **Em curso:** Fase C — 5W2H+PDCA completo (AGENTS.md When/How + STATUS.md PDCA + okf/ cruzamentos)
|
||||||
|
- **Bloqueios:** Nenhum
|
||||||
|
- **Próximos passos:**
|
||||||
|
1. ✅ AGENTS.md: When/How preenchidos com PLAN/PROC/QR refs
|
||||||
|
2. ✅ STATUS.md: PDCA ligado a docs/PLANS, okf/, observabilidade
|
||||||
|
3. 🔄 okf/relacionamentos/: completar com arestas de métricas
|
||||||
|
4. 🔄 Validar coerência grafo (sem órfãos)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Última actualização:** 2026-06-30 (Fase C — PDCA operacional)
|
||||||
|
**Próxima revisão de plano:** 2026-09-30 (fim Q3, segundo docs/PLANS/DashDescomplicar-PLAN.md)
|
||||||
Executable
+132
@@ -0,0 +1,132 @@
|
|||||||
|
---
|
||||||
|
layer: wiki
|
||||||
|
title: DashDescomplicar — Dashboard de Gestão e Monitorização
|
||||||
|
description: >-
|
||||||
|
Dashboard interno da Descomplicar® para monitorização e gestão operacional em tempo real. Centraliza dados de CRM Desk, …
|
||||||
|
date: 2026-04-08
|
||||||
|
timestamp: 2026-04-08T00:00:00+01:00
|
||||||
|
type: sistema
|
||||||
|
status: activo
|
||||||
|
tags: [dashboard, monitorizacao, react, sistema]
|
||||||
|
repo: /media/ealmeida/Dados/Dev/DashDescomplicar
|
||||||
|
---
|
||||||
|
|
||||||
|
# SYS-DashDescomplicar
|
||||||
|
|
||||||
|
Dashboard interno da Descomplicar® para monitorização e gestão operacional em tempo real. Centraliza dados de CRM Desk, Hetzner, servidores SSH, WordPress, MCPs, n8n, Paperclip e métricas financeiras num interface unificado.
|
||||||
|
|
||||||
|
- **Repo local:** `/media/ealmeida/Dados/Dev/DashDescomplicar`
|
||||||
|
- **Stack:** React 19 + TypeScript 5.6 + Vite 7 + Tailwind + Framer Motion (frontend) · Express 4 + MySQL2 + SSH2 + Zod (backend) · Docker + Gitea + EasyPanel (DevOps)
|
||||||
|
- **Layout:** sidebar com 8 painéis (ver `src/components/Layout.tsx`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Painéis
|
||||||
|
|
||||||
|
### 1. Dashboard (`/`)
|
||||||
|
Página principal. Hero stats agregados (tarefas, calendário, servidores), gráficos de tendências e status real-time como entrada rápida para os restantes painéis.
|
||||||
|
|
||||||
|
### 2. Monitor (`/monitor`) — `pages/Monitor.tsx`
|
||||||
|
Monitorização de infraestrutura e WordPress.
|
||||||
|
- Load dos servidores, storage (NVMe, RAID1)
|
||||||
|
- Containers Docker e serviços
|
||||||
|
- Sites WordPress e WordPress Updates
|
||||||
|
- Backups, alertas e janelas de manutenção
|
||||||
|
|
||||||
|
### 3. Financeiro (`/financial`) — `pages/Financial.tsx`
|
||||||
|
Métricas de negócio via Moloni/Desk.
|
||||||
|
- Receita e Despesa (mês e ano)
|
||||||
|
- Vendas Mês / Vendas Ano, Despesas Mês / Despesas Ano
|
||||||
|
- Gráficos de evolução (pie/line charts)
|
||||||
|
|
||||||
|
### 4. MCPs (`/mcps`) — `pages/McpMonitor.tsx`
|
||||||
|
Estado dos 39 MCPs do gateway e locais.
|
||||||
|
- Contadores Online / Offline / Disabled / Total
|
||||||
|
- Botão "Actualizar" para refresh manual
|
||||||
|
|
||||||
|
### 5. Automações n8n (`/n8n`) — `pages/N8nMonitor.tsx`
|
||||||
|
Workflows determinísticos.
|
||||||
|
- Total de Workflows, Activos, Falhas (24h)
|
||||||
|
- Histórico de execuções recentes
|
||||||
|
|
||||||
|
### 6. Paperclip (`/paperclip`) — `pages/Paperclip.tsx`
|
||||||
|
Orquestrador autónomo (64 agentes).
|
||||||
|
- Agentes activos / idle / com erro
|
||||||
|
- Routines activas
|
||||||
|
- Nota: Paperclip em reintrodução progressiva (suspenso 08-04-2026)
|
||||||
|
|
||||||
|
### 7. IA / Claude (`/ai`) — `pages/AiOverview.tsx`
|
||||||
|
Overview do ecossistema Claude Code.
|
||||||
|
- Skills, agents, plugins, MCPs, hooks
|
||||||
|
- Ligação ao inventário do 04-Stack
|
||||||
|
|
||||||
|
### 8. Operações (`/operations`) — `pages/Operations.tsx`
|
||||||
|
Gestão operacional via Desk CRM.
|
||||||
|
- Tickets Abertos (Open, In Progress, Answered)
|
||||||
|
- Alta Prioridade
|
||||||
|
- Tempo Médio de Resposta (média últimos 90 dias)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Painéis a adicionar
|
||||||
|
|
||||||
|
### 9. Cron Dev (proposto) — `pages/CronDev.tsx`
|
||||||
|
Painel para todas as acções cron do servidor `dev` (CT 102, `/root/Dev/claude_automations_dev/`). Actualmente os 9 agentes cron (imap-triage, ticket-triage, auto-expense, aiktop, infra-check, wp-update, etc.) correm sem visibilidade agregada — o `/today` lê logs via SSH mas não há UI.
|
||||||
|
|
||||||
|
Requisitos:
|
||||||
|
- Lista de todos os jobs cron activos com schedule, último run, próximo run, duração e exit code
|
||||||
|
- Estado: OK / Warning / Erro / Stale (sem correr há >24h)
|
||||||
|
- Logs recentes (tail) por job, com filtro e pesquisa
|
||||||
|
- Alertas visuais para falhas consecutivas (>2)
|
||||||
|
- Acção manual "Run now" (opcional, autenticada)
|
||||||
|
- Métricas agregadas: total jobs, sucessos 24h, falhas 24h, tempo médio
|
||||||
|
|
||||||
|
Fonte: SSH ao `dev` + leitura de `/var/log/` e logs dos agentes + `crontab -l`.
|
||||||
|
|
||||||
|
### 10. Inteligência — Melhorias Propostas (proposto) — `pages/Intelligence.tsx`
|
||||||
|
Painel para gerir o backlog de melhorias ao stack identificadas no projecto **Inteligência** (`04-Stack/02.04-Sistemas/Inteligencia/melhorias/`), incluindo `Melhorias-Stack-321-Videos.md` e futuras análises de canais/vídeos/notícias.
|
||||||
|
|
||||||
|
Requisitos:
|
||||||
|
- Lista de melhorias propostas com título, fonte (vídeo/canal/notícia), data, categoria (skill, agent, MCP, hook, plugin, workflow, infra)
|
||||||
|
- Estados: proposto / em análise / aprovado / em implementação / concluído / rejeitado
|
||||||
|
- Prioridade (alta/média/baixa) e esforço estimado
|
||||||
|
- Link para fonte original (URL vídeo, notícia) e ficheiro Hub
|
||||||
|
- Filtros por categoria, estado, prioridade e fonte
|
||||||
|
- Métricas: total propostas, taxa de adopção, melhorias implementadas por mês
|
||||||
|
- Acção "Criar tarefa Desk" para promover melhoria a execução (projecto #65)
|
||||||
|
|
||||||
|
Fonte: leitura dos `.md` em `Hub/04-Stack/02.04-Sistemas/Inteligencia/melhorias/` com parse de frontmatter + integração Desk CRM.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Arquitectura
|
||||||
|
|
||||||
|
```
|
||||||
|
Frontend (React 19 + Vite) -> API Express -> Fontes:
|
||||||
|
- Desk CRM (MySQL)
|
||||||
|
- Hetzner Cloud API
|
||||||
|
- SSH2 (servidores)
|
||||||
|
- Moloni (MCP/API)
|
||||||
|
- MCP Gateway
|
||||||
|
- n8n API
|
||||||
|
- Paperclip API
|
||||||
|
```
|
||||||
|
|
||||||
|
Segurança: `express-rate-limit`, CORS, validação Zod, OIDC opcional.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Relação com o Stack
|
||||||
|
|
||||||
|
| Sistema | Relação |
|
||||||
|
|---|---|
|
||||||
|
| Desk CRM | Fonte de tarefas, tickets, projectos, tempo |
|
||||||
|
| MCP Gateway | Estado dos 39 MCPs |
|
||||||
|
| n8n | 8 workflows determinísticos monitorizados |
|
||||||
|
| Paperclip | 64 agentes — suspenso, painel mantido para reintrodução |
|
||||||
|
| Moloni | Dados financeiros |
|
||||||
|
| Hetzner / CWP / EasyPanel | Infraestrutura monitorizada |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Referências:** `Dev/DashDescomplicar/README.md` · `src/components/Layout.tsx` · `src/pages/*.tsx`
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"task_id": 2323,
|
||||||
|
"project_id": 65,
|
||||||
|
"project_name": "DashDescomplicar",
|
||||||
|
"rel_type": "project_documentation",
|
||||||
|
"comment": "Documentação operacional fase C completa: AGENTS.md (When/How), STATUS.md (PDCA), okf/ (10 relacionamentos), coerência validada",
|
||||||
|
"updated_at": "2026-06-30"
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
type: Brainstorm
|
||||||
|
title: 'Brainstorm — DashDescomplicar'
|
||||||
|
timestamp: 2026-06-30
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
# BRAINSTORM — DashDescomplicar
|
||||||
|
|
||||||
|
Estrutura padrão aplicada.
|
||||||
@@ -0,0 +1,262 @@
|
|||||||
|
---
|
||||||
|
layer: wiki
|
||||||
|
type: Document
|
||||||
|
title: "PLAN — DashDescomplicar"
|
||||||
|
description: >-
|
||||||
|
Plano operacional do DashDescomplicar v2.7.3. Roadmap de manutenção, deploys e expansões.
|
||||||
|
Ciclo PDCA: versão atual em produção, próximas iterações planejadas.
|
||||||
|
tags: [plan, dashboard, operacional, pdca, roadmap]
|
||||||
|
timestamp: 2026-06-30T00:00:00+01:00
|
||||||
|
---
|
||||||
|
|
||||||
|
# PLAN — DashDescomplicar
|
||||||
|
|
||||||
|
**Versão Atual:** 2.7.3 · **Data:** 2026-06-30 · **Status:** 🟢 Operacional
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Visão Geral
|
||||||
|
|
||||||
|
Dashboard interno de monitorização operacional (React 19 + Express + TypeScript) com 8 painéis ativos. Corre em EasyPanel Swarm (`easy.descomplicar.pt`) com MySQL no CWP. Ciclo de releases: manutenção mensal + features trimestrais.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Roadmap Operacional (Q3-Q4 2026)
|
||||||
|
|
||||||
|
### Q3 2026 — Consolidação
|
||||||
|
|
||||||
|
| Sprint | Objetivo | Proprietário | Estado |
|
||||||
|
|--------|----------|-------------|--------|
|
||||||
|
| Q3-S1 (Jul) | Audit segurança completo + certificado de revisão | Claude Code | 📋 Planeado |
|
||||||
|
| Q3-S2 (Ago) | Painel Cron Dev (visibilidade de agentes cron) | Claude Code | 📋 Planeado |
|
||||||
|
| Q3-S3 (Set) | Reintrodução progressiva Paperclip (renegociação) | Claude Code | 📋 Planeado |
|
||||||
|
| Q3-S4 (Out) | Sincronização multi-máquina (HP + desktop) | Claude Code | 📋 Planeado |
|
||||||
|
|
||||||
|
### Q4 2026 — Expansão Estratégica
|
||||||
|
|
||||||
|
| Sprint | Objetivo | Proprietário | Estado |
|
||||||
|
|--------|----------|-------------|--------|
|
||||||
|
| Q4-S1 (Nov) | Integração Wiki Descomplicar (leitura de artigos) | Claude Code | 📋 Backlog |
|
||||||
|
| Q4-S2 (Dez) | Painel Inteligência Stack — melhorias | Claude Code | 📋 Backlog |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ciclos de Manutenção
|
||||||
|
|
||||||
|
### Semanal (2ªf)
|
||||||
|
|
||||||
|
- ✅ Verificar saúde do serviço: `curl -sf https://dash.descomplicar.pt/api/dashboard`
|
||||||
|
- ✅ Revisar logs de erro no EasyPanel
|
||||||
|
- ✅ Sincronização manual de sessões se necessário: `rsync -av ~/IJFW/sessions/ easy:/var/dash-sessions/`
|
||||||
|
|
||||||
|
### Mensal (último Fri)
|
||||||
|
|
||||||
|
- ✅ Audit de dependências: `npm audit`
|
||||||
|
- ✅ Atualizar ficheiro STATUS.md com métricas de uptime
|
||||||
|
- ✅ Revisar tickets de sugestões e bugs abertos
|
||||||
|
|
||||||
|
### Trimestral (fim de trimestre)
|
||||||
|
|
||||||
|
- ✅ Revisão de segurança (OWASP top 10)
|
||||||
|
- ✅ Testes de carga/stress (Load testing)
|
||||||
|
- ✅ Atualização de documentação (AGENTS.md, SPEC.md, CHANGELOG.md)
|
||||||
|
- ✅ Release notes e bump de versão
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Processo de Deploy
|
||||||
|
|
||||||
|
### Pré-requisitos
|
||||||
|
|
||||||
|
1. Branch `main` deve estar com todos os testes a passar: `npm test`
|
||||||
|
2. Lint sem erros: `npm run lint`
|
||||||
|
3. Build local validado: `npm run build`
|
||||||
|
4. STATUS.md actualizado com versão nova
|
||||||
|
|
||||||
|
### Passos do Deploy (SSH directo no EasyPanel)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. SSH para o servidor
|
||||||
|
ssh root@easy.descomplicar.pt
|
||||||
|
|
||||||
|
# 2. Navegar para a pasta do projeto
|
||||||
|
cd /etc/easypanel/projects/descomplicar/dashboard_descomplicar/code
|
||||||
|
|
||||||
|
# 3. Pull da branch main
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# 4. Build da imagem Docker
|
||||||
|
docker build -t easypanel/descomplicar/dashboard_descomplicar:latest .
|
||||||
|
|
||||||
|
# 5. Forçar reinicialização do serviço
|
||||||
|
docker service update --force descomplicar_dashboard_descomplicar
|
||||||
|
|
||||||
|
# 6. Verificação pós-deploy
|
||||||
|
curl -sf https://dash.descomplicar.pt/api/dashboard && echo "✅ Deploy OK" || echo "❌ Deploy FALHOU"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tempo estimado:** 3-5 minutos (pull + build + restart)
|
||||||
|
|
||||||
|
### Rollback (se necessário)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Voltar para versão anterior
|
||||||
|
git revert HEAD
|
||||||
|
git push origin main
|
||||||
|
# Repetir deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Estrutura de Features
|
||||||
|
|
||||||
|
### Painéis Ativos (v2.7.3)
|
||||||
|
|
||||||
|
| ID | Painel | Rota | Ficheiros | Status |
|
||||||
|
|----|----|------|-----------|--------|
|
||||||
|
| 1 | Dashboard | `/` | `pages/Monitor.tsx` | 🟢 Activo |
|
||||||
|
| 2 | Monitor | `/monitor` | `pages/Monitor.tsx` | 🟢 Activo |
|
||||||
|
| 3 | Financeiro | `/financial` | `pages/Financial.tsx` | 🟢 Activo |
|
||||||
|
| 4 | MCPs | `/mcps` | `pages/McpMonitor.tsx` | 🟢 Activo |
|
||||||
|
| 5 | n8n | `/n8n` | `pages/N8nMonitor.tsx` | 🟢 Activo |
|
||||||
|
| 6 | Paperclip | `/paperclip` | `pages/Paperclip.tsx` | 🟡 Suspenso |
|
||||||
|
| 7 | IA/Claude | `/ai` | `pages/AiOverview.tsx` | 🟢 Activo |
|
||||||
|
| 8 | Operações | `/operations` | `pages/Operations.tsx` | 🟢 Activo |
|
||||||
|
| 9 | Sessions (Observabilidade) | `/sessions` | `pages/Sessions.tsx` + `pages/SessionDetail.tsx` | 🟢 Activo |
|
||||||
|
|
||||||
|
### Painéis Planeados
|
||||||
|
|
||||||
|
- **Cron Dev** (Q3 2026) — visibilidade de agentes systemd-user cron
|
||||||
|
- **Wiki Integration** (Q4 2026) — busca e leitura de artigos do Hub
|
||||||
|
- **Inteligência Stack** (Q4 2026) — melhorias e recomendações de stack
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dependências Críticas
|
||||||
|
|
||||||
|
### Infraestrutura
|
||||||
|
|
||||||
|
- **EasyPanel:** `easy.descomplicar.pt` (5.9.90.70) — serviço `descomplicar_dashboard_descomplicar`
|
||||||
|
- **MySQL:** `176.9.3.158` (CWP) — DB `desscomplicar`, tabelas `tbl_eal_*`
|
||||||
|
- **MCP Gateway:** `gateway.descomplicar.pt` — estado de 39 MCPs
|
||||||
|
- **Desk CRM:** MySQL interno — tarefas, tickets, projecto
|
||||||
|
|
||||||
|
### Serviços Externos
|
||||||
|
|
||||||
|
- **n8n:** workflows automação
|
||||||
|
- **Moloni API:** dados financeiros
|
||||||
|
- **Hetzner Cloud API:** métricas servidores VPS
|
||||||
|
- **IJFW:** sessões Claude Code (SQLite local)
|
||||||
|
- **SSH (CWP + EasyPanel):** coleta de métricas
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Processo de Contribuição
|
||||||
|
|
||||||
|
### 1. Local Development
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /media/ealmeida/Dados/Dev/DashDescomplicar
|
||||||
|
npm install
|
||||||
|
npm run dev # Vite + Express em paralelo
|
||||||
|
npm run test # Vitest
|
||||||
|
npm run lint # ESLint
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Branch Workflow
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout -b feature/meu-painel
|
||||||
|
# ... fazer changes ...
|
||||||
|
npm run build # Validar build
|
||||||
|
npm run lint # Lint
|
||||||
|
npm test # Testes
|
||||||
|
git add .
|
||||||
|
git commit -m "feat: novo painel..."
|
||||||
|
git push origin feature/meu-painel
|
||||||
|
# Criar PR no Gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Code Review
|
||||||
|
|
||||||
|
- [ ] Build passa
|
||||||
|
- [ ] Lint passa
|
||||||
|
- [ ] Testes adicionados/passam
|
||||||
|
- [ ] Documentação actualizada
|
||||||
|
- [ ] Sem hardcoded secrets
|
||||||
|
- [ ] Validação Zod em todas as rotas novas
|
||||||
|
|
||||||
|
### 4. Merge & Deploy
|
||||||
|
|
||||||
|
Após aprovação:
|
||||||
|
```bash
|
||||||
|
git merge feature/meu-painel
|
||||||
|
git tag v2.7.4 # Nova versão
|
||||||
|
npm run build
|
||||||
|
npm start # Local test
|
||||||
|
# Seguir "Processo de Deploy" acima
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting Rápido
|
||||||
|
|
||||||
|
### Serviço não responde
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. SSH no EasyPanel
|
||||||
|
ssh root@easy.descomplicar.pt
|
||||||
|
|
||||||
|
# 2. Verificar logs
|
||||||
|
docker logs descomplicar_dashboard_descomplicar
|
||||||
|
|
||||||
|
# 3. Reiniciar serviço
|
||||||
|
docker service update --force descomplicar_dashboard_descomplicar
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build local falha
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Limpar cache e reinstalar
|
||||||
|
rm -rf node_modules package-lock.json
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### DB não responde
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Verificar conectividade MySQL
|
||||||
|
mysql -h 176.9.3.158 -u [user] -p [pass] desscomplicar
|
||||||
|
# Se falhar, contactar administrador de infraestrutura
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Métricas de Saúde
|
||||||
|
|
||||||
|
Monitorar semanalmente:
|
||||||
|
|
||||||
|
- **Uptime:** > 99.5% (target SLA)
|
||||||
|
- **Response time:** < 500ms (p95)
|
||||||
|
- **Error rate:** < 0.5% (5xx errors)
|
||||||
|
- **DB connections:** < 80% do pool máximo
|
||||||
|
- **Disk space:** > 10% livre em EasyPanel
|
||||||
|
- **Session sync:** < 5min de lag
|
||||||
|
|
||||||
|
Alertas automáticos configurados em `monitor-alerts` (Desk #2323 com regra DO monitor).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contactos & Escalação
|
||||||
|
|
||||||
|
| Cenário | Contacto | Nível |
|
||||||
|
|---------|----------|-------|
|
||||||
|
| Bug/Feature Request | Comentário em Desk #65 | Prioridade normal |
|
||||||
|
| Incidente crítico (site down) | Usar CodeRED: `curl -X POST https://codered.descomplicar.pt/v1/trigger/RED-ZMT3FCU8` | P0 |
|
||||||
|
| Questão técnica | IRC com Claude Code (`DocFaseA-DashDescomplicar`) | On-demand |
|
||||||
|
| Deploy urgente | SSH directo + pós-deploy verification | On-demand |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Próxima revisão de plano:** 2026-09-30 (fim Q3)
|
||||||
+9
-6
@@ -1,15 +1,18 @@
|
|||||||
---
|
---
|
||||||
title: PLAN Conductor — Expansão DashDescomplicar
|
title: PLAN Conductor — Expansão DashDescomplicar
|
||||||
|
description: >-
|
||||||
|
Spec: `docs/SPECS/SPEC-dashboard-expansion-q2-2026.md`
|
||||||
date: 2026-04-06
|
date: 2026-04-06
|
||||||
type: plan
|
type: plan
|
||||||
status: active
|
status: active
|
||||||
spec: SPEC-dashboard-expansion-q2-2026.md
|
spec: SPEC-dashboard-expansion-q2-2026.md
|
||||||
tags: [conductor, plan, dashboard, parallel]
|
tags: [conductor, plan, dashboard, parallel]
|
||||||
|
layer: wiki
|
||||||
---
|
---
|
||||||
|
|
||||||
# Plano Conductor — Expansão DashDescomplicar
|
# Plano Conductor — Expansão DashDescomplicar
|
||||||
|
|
||||||
**Spec:** `docs/SPEC-dashboard-expansion-q2-2026.md`
|
**Spec:** `docs/SPECS/SPEC-dashboard-expansion-q2-2026.md`
|
||||||
**Projecto:** `/media/ealmeida/Dados/Dev/DashDescomplicar/`
|
**Projecto:** `/media/ealmeida/Dados/Dev/DashDescomplicar/`
|
||||||
**Método:** Conductor parallel sprints — agentes independentes por domínio
|
**Método:** Conductor parallel sprints — agentes independentes por domínio
|
||||||
|
|
||||||
@@ -62,7 +65,7 @@ Cada painel (backend + frontend) é **independente** — ficheiros distintos, se
|
|||||||
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
||||||
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
||||||
|
|
||||||
Lê a spec completa em docs/SPEC-dashboard-expansion-q2-2026.md, secção 4.1 (Painel MCPs).
|
Lê a spec completa em docs/SPECS/SPEC-dashboard-expansion-q2-2026.md, secção 4.1 (Painel MCPs).
|
||||||
|
|
||||||
Cria 3 ficheiros:
|
Cria 3 ficheiros:
|
||||||
|
|
||||||
@@ -117,7 +120,7 @@ Não alteres nenhum ficheiro existente. Apenas cria os 3 novos.
|
|||||||
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
||||||
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
||||||
|
|
||||||
Lê a spec completa em docs/SPEC-dashboard-expansion-q2-2026.md, secção 4.2 (Painel n8n).
|
Lê a spec completa em docs/SPECS/SPEC-dashboard-expansion-q2-2026.md, secção 4.2 (Painel n8n).
|
||||||
|
|
||||||
Cria 3 ficheiros:
|
Cria 3 ficheiros:
|
||||||
|
|
||||||
@@ -159,7 +162,7 @@ Não alteres nenhum ficheiro existente. Apenas cria os 3 novos.
|
|||||||
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
||||||
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
||||||
|
|
||||||
Lê a spec completa em docs/SPEC-dashboard-expansion-q2-2026.md, secção 4.3 (Painel Paperclip).
|
Lê a spec completa em docs/SPECS/SPEC-dashboard-expansion-q2-2026.md, secção 4.3 (Painel Paperclip).
|
||||||
|
|
||||||
O pacote `pg` já foi instalado (npm install pg @types/pg).
|
O pacote `pg` já foi instalado (npm install pg @types/pg).
|
||||||
|
|
||||||
@@ -211,7 +214,7 @@ Não alteres nenhum ficheiro existente. Apenas cria os 4 novos.
|
|||||||
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
||||||
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
||||||
|
|
||||||
Lê a spec completa em docs/SPEC-dashboard-expansion-q2-2026.md, secção 4.4 (Painel Claude Code / IA).
|
Lê a spec completa em docs/SPECS/SPEC-dashboard-expansion-q2-2026.md, secção 4.4 (Painel Claude Code / IA).
|
||||||
|
|
||||||
Cria 3 ficheiros:
|
Cria 3 ficheiros:
|
||||||
|
|
||||||
@@ -261,7 +264,7 @@ Não alteres nenhum ficheiro existente. Apenas cria os 3 novos.
|
|||||||
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
Estás a trabalhar no projecto DashDescomplicar (/media/ealmeida/Dados/Dev/DashDescomplicar/).
|
||||||
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + TypeScript.
|
||||||
|
|
||||||
Lê a spec em docs/SPEC-dashboard-expansion-q2-2026.md, secção 4.5 (Painel Operações).
|
Lê a spec em docs/SPECS/SPEC-dashboard-expansion-q2-2026.md, secção 4.5 (Painel Operações).
|
||||||
|
|
||||||
A BD MySQL (Desk CRM) já tem conexão configurada em api/db.ts (export default pool mysql2/promise).
|
A BD MySQL (Desk CRM) já tem conexão configurada em api/db.ts (export default pool mysql2/promise).
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
type: Plan
|
||||||
|
title: 'PLAN — DashDescomplicar'
|
||||||
|
timestamp: 2026-06-30
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
# PLAN — DashDescomplicar
|
||||||
|
|
||||||
|
1. Estruturação\n2. Validação\n3. Manutenção
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
type: Brief
|
||||||
|
title: 'Briefing — DashDescomplicar'
|
||||||
|
timestamp: 2026-06-30
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
# BRIEF — DashDescomplicar
|
||||||
|
|
||||||
|
Projecto DashDescomplicar do ecossistema Descomplicar.
|
||||||
@@ -1,3 +1,11 @@
|
|||||||
|
---
|
||||||
|
type: Specification
|
||||||
|
title: Spec
|
||||||
|
description: >-
|
||||||
|
Especificação do projecto DashDescomplicar, agregando os projectos activos — nomeadamente o painel Observabilidade (replay de sessões Claude Code com indexer, SQLite, API e UI timeline).
|
||||||
|
timestamp: 2026-04-27T10:15:35.733200+00:00
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
<!-- APPROVED: 2026-04-23 by ealmeida -->
|
<!-- APPROVED: 2026-04-23 by ealmeida -->
|
||||||
# SPEC — DashDescomplicar
|
# SPEC — DashDescomplicar
|
||||||
|
|
||||||
+3
@@ -1,10 +1,13 @@
|
|||||||
---
|
---
|
||||||
title: SPEC — Expansão DashDescomplicar Q2 2026
|
title: SPEC — Expansão DashDescomplicar Q2 2026
|
||||||
|
description: >-
|
||||||
|
O DashDescomplicar é o painel de gestão interno da Descomplicar®. Stack: React 19 + Vite + Tailwind CSS 4 + Express 4 + …
|
||||||
date: 2026-04-06
|
date: 2026-04-06
|
||||||
type: spec
|
type: spec
|
||||||
status: active
|
status: active
|
||||||
desk_project: 65
|
desk_project: 65
|
||||||
tags: [dashboard, expansion, mcps, paperclip, n8n, claude-code]
|
tags: [dashboard, expansion, mcps, paperclip, n8n, claude-code]
|
||||||
|
layer: wiki
|
||||||
---
|
---
|
||||||
|
|
||||||
# SPEC — Expansão DashDescomplicar Q2 2026
|
# SPEC — Expansão DashDescomplicar Q2 2026
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
type: Spec
|
||||||
|
title: 'SPEC — DashDescomplicar'
|
||||||
|
status: draft
|
||||||
|
timestamp: 2026-06-30
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
# SPEC — DashDescomplicar
|
||||||
|
|
||||||
|
Projecto em estruturação.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
type: Note
|
||||||
|
title: 'Pesquisa — DashDescomplicar'
|
||||||
|
timestamp: 2026-06-30
|
||||||
|
layer: wiki
|
||||||
|
---
|
||||||
|
|
||||||
|
# Pesquisa
|
||||||
|
|
||||||
|
Documentar pesquisa aqui.
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
layer: wiki
|
||||||
|
type: Index
|
||||||
|
title: "DashDescomplicar — Índice"
|
||||||
|
description: >-
|
||||||
|
Índice de navegação do DashDescomplicar. Dashboard operacional interno da Descomplicar® em dash.descomplicar.pt.
|
||||||
|
tags: [index, dashboard, aplicacao]
|
||||||
|
timestamp: 2026-06-29T23:00:00+01:00
|
||||||
|
---
|
||||||
|
# DashDescomplicar
|
||||||
|
|
||||||
|
## Documentação
|
||||||
|
|
||||||
|
- [[AGENTS]] — contexto 5W2H para agentes IA
|
||||||
|
- [[CLAUDE]] — instruções operacionais para Claude Code
|
||||||
|
- [[STATUS]] — estado PDCA e bloqueios
|
||||||
|
- [[README]] — referência técnica completa
|
||||||
|
- [[CHANGELOG]] — histórico de versões
|
||||||
|
- [[MEMORY]] — memórias operacionais acumuladas
|
||||||
|
- [[SYS-DashDescomplicar]] — descrição do sistema e painéis
|
||||||
|
|
||||||
|
## Especificações e Planos
|
||||||
|
|
||||||
|
- [[docs/SPECS/SPEC-dashboard-expansion-q2-2026]] — spec expansão Q2 2026
|
||||||
|
- [[docs/PLANS/PLAN-conductor-dashboard-expansion]] — plano de expansão (Conductor)
|
||||||
|
- [[AUDIT-REPORT]] — relatório de auditoria de segurança
|
||||||
|
- [[SPEC]] — especificação activa (Observabilidade)
|
||||||
|
|
||||||
|
## Recursos Externos
|
||||||
|
|
||||||
|
- [dash.descomplicar.pt](https://dash.descomplicar.pt) — produção
|
||||||
|
- [git.descomplicar.pt/ealmeida/DashDescomplicar](https://git.descomplicar.pt/ealmeida/DashDescomplicar) — repositório
|
||||||
|
- [easy.descomplicar.pt](https://easy.descomplicar.pt) — EasyPanel (deploy)
|
||||||
|
- [Desk Projecto #65](https://desk.descomplicar.pt) — gestão de tarefas
|
||||||
|
|
||||||
|
## Dev Local
|
||||||
|
|
||||||
|
- `/media/ealmeida/Dados/Dev/DashDescomplicar` — código fonte
|
||||||
|
- `/media/ealmeida/Dados/Hub/04-Stack/02.05-Aplicações/DashDescomplicar/` — esta pasta Hub
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
layer: wiki
|
||||||
|
type: Changelog
|
||||||
|
title: "Log — DashDescomplicar"
|
||||||
|
description: >-
|
||||||
|
Histórico append-only de operações e eventos em 02.05-Aplicações/DashDescomplicar.
|
||||||
|
timestamp: 2026-06-30T00:00:00+01:00
|
||||||
|
tags: [log, okf, dashdescomplicar]
|
||||||
|
status: active
|
||||||
|
---
|
||||||
|
|
||||||
|
# Log — DashDescomplicar
|
||||||
|
|
||||||
|
**Newest first. Append-only. Formato: `## YYYY-MM-DD tipo | Descrição`**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2026-06-30 okf | log.md criado
|
||||||
|
- Ficheiro criado conforme modelo OKF Karpathy (XDP-PRJ-001)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Última alteração: 2026-06-30*
|
||||||
Reference in New Issue
Block a user