docs: migrar SPEC/PLAN para docs/SPECS e docs/PLANS e adicionar ficheiros de contexto do projecto

This commit is contained in:
2026-10-28 16:01:30 +00:00
parent 61ae4697f9
commit f39c6212a3
22 changed files with 1065 additions and 6 deletions
+169
View File
@@ -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
+8
View File
@@ -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
**Data:** 14-02-2026
+14
View File
@@ -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
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
### Added — Indexação Multi-Fonte (Hermes + OpenCode)
+181
View File
@@ -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
+15
View File
@@ -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
---
+8
View File
@@ -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
> **Dashboard de Gestão e Monitorização** da Descomplicar®
+135
View File
@@ -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)
+132
View File
@@ -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`
+8
View File
@@ -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"
}
View File
+10
View File
@@ -0,0 +1,10 @@
---
type: Brainstorm
title: 'Brainstorm — DashDescomplicar'
timestamp: 2026-06-30
layer: wiki
---
# BRAINSTORM — DashDescomplicar
Estrutura padrão aplicada.
+262
View File
@@ -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)
@@ -1,15 +1,18 @@
---
title: PLAN Conductor — Expansão DashDescomplicar
description: >-
Spec: `docs/SPECS/SPEC-dashboard-expansion-q2-2026.md`
date: 2026-04-06
type: plan
status: active
spec: SPEC-dashboard-expansion-q2-2026.md
tags: [conductor, plan, dashboard, parallel]
layer: wiki
---
# 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/`
**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/).
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:
@@ -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/).
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:
@@ -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/).
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).
@@ -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/).
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:
@@ -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/).
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).
+10
View File
@@ -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
View File
+10
View File
@@ -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 -->
# SPEC — DashDescomplicar
@@ -1,10 +1,13 @@
---
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
type: spec
status: active
desk_project: 65
tags: [dashboard, expansion, mcps, paperclip, n8n, claude-code]
layer: wiki
---
# SPEC — Expansão DashDescomplicar Q2 2026
+11
View File
@@ -0,0 +1,11 @@
---
type: Spec
title: 'SPEC — DashDescomplicar'
status: draft
timestamp: 2026-06-30
layer: wiki
---
# SPEC — DashDescomplicar
Projecto em estruturação.
+10
View File
@@ -0,0 +1,10 @@
---
type: Note
title: 'Pesquisa — DashDescomplicar'
timestamp: 2026-06-30
layer: wiki
---
# Pesquisa
Documentar pesquisa aqui.
+39
View File
@@ -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
+23
View File
@@ -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*