Files
claude-plugins/gestao/skills/today/SKILL.md

36 KiB

name, description, author, version, quality_score, user_invocable, category, tags, desk_task, desk_project, allowed-tools, mcps, dependencies
name description author version quality_score user_invocable category tags desk_task desk_project allowed-tools mcps dependencies
today Checkup diário v8.3 - IMAP triaging com deduplicação Supabase, auto-despesas com PDF, auditoria despesas Sab/Dom, MCP health check, workflow suggestions, Obsidian note. Triagem emails 13 contas IMAP + deduplicação via imap_processed_emails (Supabase) + tickets CRM + despesas auto com PDF + health check MCPs (Sab/Dom) + sugestões workflows + nota diaria. Use when "checkup", "hoje", "today", "rotina", início de dia. Descomplicar® Crescimento Digital 8.3.1 92 true productivity
rotina
checkup
dashboard
crm
tickets
invoices
timer
monday
saturday
sunday
weekend
imap
email
mcp
health-check
1416 65 Read, Write, mcp__desk-crm-v3, mcp__mcp-time, mcp__google-workspace, mcp__imap, mcp__memory-supabase, mcp__ssh-unified desk-crm-v3, mcp-time, google-workspace, imap, memory-supabase, ssh-unified
skills
ticket
invoice
time
crm
wp-update
cleanup-downloads

/today v8.1 - Checkup Diário

Hub central que orquestra skills Desk + IMAP para visao completa do dia.


Protocolo Principal

REGRA FUNDAMENTAL: Fases 1-2 sao SILENCIOSAS e OBRIGATORIAS. Executar TUDO antes de mostrar qualquer output ao utilizador. O utilizador so ve o resumo final com as accoes ja tomadas.

FASE 1 - SILENCIOSA (executar tudo, sem output)
  1. mcp__mcp-time__current_time → Verificar dia da semana
  2. Verificar ultima execucao (memory-supabase: "today checkup YYYY-MM-DD")
  3. AUTO-PROCESSAR despesas de tickets (ver seccao Auto-Process)
  4. AUTO-FECHAR Tickets SPAM
  5. IMAP Triagem - 12 contas (ver seccao IMAP abaixo)
  6. Limpeza Downloads (via /cleanup-downloads) → SE >10 ficheiros

FASE 2 - RECOLHA (queries em paralelo, sem output)
  7. Timer Activo
  8. Tickets abertos (status 1,2,3)
  9. Facturas Vencidas
  10. Tarefas Prioritarias (urgentes + alta + vencidas)
  11. Leads Novos (status 7, 14)
  12. Propostas pendentes (status 4)
  13. Agenda do Dia (Google Calendar)

FASE 3 - OUTPUT + PERSISTENCIA
  14. Resumo do auto-processamento (despesas, SPAM, emails)
  15. Notificacoes de sistema que requerem revisao manual
  16. Dashboard (timer, tickets, facturas, tarefas, leads, agenda)
  17. 3 Prioridades do dia
  18. Workflows Sugeridos (analise de tarefas)
  19. SE SEGUNDA → Planeamento semanal + /wp-update
  20. SE SEXTA → Sugerir manutencao WordPress
  21. SE SABADO → MCP Health Check completo + Consolidacao memorias + Auditoria despesas
  22. SE DOMINGO → MCP Health Check resumido + Auditoria despesas
  23. Criar nota Obsidian (Passo 9)
  24. Guardar em Supabase (Passo 10)

Secções do Checkup

1. Timer Activo

Verificar ~/.claude-work/active-timer.json
Se activo:
  🟢 Timer: #1446 - Documentação (2h 15m)
  ⚠️ Se >4h: "Timer activo há muito tempo!"

2. Tickets Abertos

mcp__desk-crm-v3__get_tickets({ status: [1,2,3] })

## 🎫 Tickets (4)
🔴 #234 - Erro login (TechCorp) - 2h
🟠 #232 - Bug funcionalidade (StartupX) - 1d
🟢 #230 - Dúvida (ClienteY) - 2d

3. Facturas Vencidas

mcp__desk-crm-v3__overdue_invoices_report()

## 💰 Facturas Vencidas (2)
| # | Cliente | Valor | Dias |
|---|---------|-------|------|
| INV-040 | OldClient | €950 | 15 |
| INV-038 | SlowPay | €2.100 | 22 |
**Total:** €3.050

4. Tarefas Prioritárias

mcp__desk-crm-v3__get_tasks({ status: [1,4], priority: [3,4] })

## 📋 Tarefas Prioritárias (5)
🔴 Urgentes
| # | Tarefa | Projecto | Deadline |
|---|--------|----------|----------|
| #1450 | Implementar API | SFV-360 | Hoje |

🟠 Alta
| # | Tarefa | Projecto | Deadline |
|---|--------|----------|----------|
| #1448 | Documentação | Stack | Amanhã |

4.1 Workflows Sugeridos (NOVO v8.3)

Analisar tarefas prioritárias e sugerir workflows relevantes. Consultar: /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/WORKFLOWS-QUICK-START.md

Protocolo:

Para cada tarefa prioritária (top 3), identificar padrões e sugerir workflow:

PADRÕES DE DETECÇÃO:
1. WordPress → Task → wordpress-plugin-developer ou /wp-dev
   - Keywords: wordpress, plugin, tema, woocommerce, elementor

2. Criar Procedimento → /proc-creator
   - Keywords: procedimento, documentar processo, padronizar

3. Auditar/Segurança → Task → compliance-auditor
   - Keywords: audit, segurança, compliance, vulnerabilidade

4. Orçamento/Proposta → /orcamento
   - Keywords: orçamento, proposta, cotação, budget

5. Lead/Cliente → /lead-approach ou /crm
   - Keywords: lead, cliente novo, contacto comercial

6. SEO → Task → seo-specialist ou /seo-report
   - Keywords: seo, optimização, rankings, google

7. Deploy → /easypanel-deploy
   - Keywords: deploy, publicar, easypanel

8. Marketing → Task → marketing-planning-expert
   - Keywords: marketing, campanha, estratégia

9. PHP/Laravel → Task → php-fullstack-engineer
   - Keywords: php, laravel, api, backend

10. Design/Frontend → Task → javascript-fullstack-specialist
    - Keywords: react, next, frontend, ui

Output formato:

## 🔄 Workflows Sugeridos

Com base nas tuas tarefas de hoje:

- [ ] **#1450 Implementar API** → Workflow: php-fullstack-engineer (Task tool)
  - Desenvolvimento backend com Laravel, criar endpoints RESTful
  - Duração estimada: ~3-4h

- [ ] **#1448 Documentação Stack** → Workflow: /proc-creator
  - Criar PROC-* estruturado, validação automática, indexação
  - Duração estimada: ~20min

- [ ] **Novo lead via email** → Workflow: /lead-approach
  - Análise completa + estratégia + primeiro contacto
  - Duração estimada: ~30min

Quando NÃO sugerir:

  • Se tarefa é genérica sem keywords claras
  • Se já está em progresso (status 4)
  • Se é manutenção simples (<30min estimado)

5. Agenda do Dia

mcp__google-workspace__get_events({
  user_google_email: "emanuelalmeidaa@gmail.com",
  time_min: "hoje 00:00",
  time_max: "hoje 23:59"
})

## 📅 Agenda Hoje
- 10:00 - Reunião Cliente X
- 14:30 - Call Equipa

IMAP Triagem (FASE 1 - Passo 5)

OBRIGATORIO: Processar 13 contas IMAP silenciosamente. Ver regras detalhadas em config/email-triage-rules.md

Contas IMAP (14)

emanuel, it, help, suporte, contabilidade, financeiro,
rh, mkt, design, news, aiktop, recursos, google

Passo 0: Carregar emails já processados (Supabase)

Executar UMA VEZ no início da triagem IMAP, antes de iterar contas. Fonte de verdade: tabela imap_processed_emails em Supabase (EasyPanel).

mcp__ssh-unified__ssh_execute(
  server="easy",
  command="docker exec descomplicar_supabase-db-1 psql -U postgres -d postgres -t -A -c \"SELECT message_id FROM public.imap_processed_emails\""
)

→ Guardar resultado como Set/lista: processed_ids
→ Emails cujo message_id esteja nesta lista sao SALTADOS (já processados)

Acesso: SSH → EasyPanel → docker exec psql (NÃO usar REST API - sem domínio externo configurado)

Para cada conta: imap_list_emails(account, folder="INBOX", limit=50)

Para cada email: verificar message_id contra processed_ids
  → SE message_id IN processed_ids → SALTAR (já processado anteriormente)
  → SE NÃO → Classificar por ordem de prioridade:

Classificar cada email por ordem de prioridade:

1. SPAM → imap_delete_email(account, uid)
   - Subject: lottery, winner, urgent money, bitcoin investment
   - Remetente: *.ru, *.cn (excepto conhecidos)
   - Subject todo em MAIUSCULAS

2. PROMOCIONAL → imap_move_email(account, uid, "Promotions")
   - Subject: newsletter, promo, desconto, oferta
   - Remetente: *@marketing.*, *@news.*, *@promo.*
   - EXCEPÇÃO: conta "rh" → imap_delete_email (sem pasta Promotions)

3. FACTURA/RECIBO → Auto-processar despesa (ver secção Auto-Despesas IMAP)
   - Subject: factura, invoice, recibo, receipt, pagamento, paid
   - Remetente de servico conhecido (ver mapeamento completo abaixo)
   - Criar despesa + anexar PDF automaticamente

4. PRIORITARIO → Incluir no relatorio
   - Remetente: cliente conhecido (verificar DeskCRM)
   - Subject: urgente, problema, erro, critical, down
   - Threads activas (RE:, FW:)

Resumo IMAP no output

📧 Emails Processados
- X spam eliminados
- Y promocionais arquivados
- Z despesas criadas automaticamente (valor total)
- W emails prioritarios pendentes

Excepcoes (NUNCA processar automaticamente)

- *@descomplicar.pt (internos)
- *@gov.pt, *@at.gov.pt, *@seg-social.pt (governo)
- *@tribunais.org.pt (tribunais)

Auto-Despesas IMAP (FASE 1 - Passo 5.3)

Quando um email e classificado como FACTURA/RECIBO na triagem IMAP, processar AUTOMATICAMENTE como despesa em vez de apenas registar.

Fluxo completo

1. DETECTAR: Email de fornecedor conhecido com subject de factura/recibo
2. LER: imap_read_email(account, uid) → conteudo HTML + anexos
3. EXTRAIR do HTML:
   - Valor (procurar padroes: $XX.XX, XX,XX EUR, USD XX.XX)
   - Referencia/Invoice number
   - Data da factura
   - Converter USD→EUR se necessario (taxa 0.92)
4. VERIFICAR DUPLICADO:
   - Verificar message_id contra processed_ids (Supabase) → se já existe, SALTAR
   - Pesquisar no Desk: mesmo fornecedor + mesmo valor + mesma data (±3 dias)
   - Se duplicado → registar no Supabase com action="duplicate", nao criar despesa
5. CRIAR DESPESA no Desk:
   - create_expense(category, amount, date, expense_name, note, currency=3, tax)
     NOTA: currency=3 (EUR), currency=2 (USD). Para despesas em USD manter valor original com currency=2
   - note = "Auto-criado via /today IMAP triagem"
6. PDF ANEXO (se existir no email):
   a. GUARDAR LOCAL na pasta organizada:
      - Path: /media/ealmeida/Dados/GDrive/Cloud/ADM_Descomplicar/Financeiro/Contabilidade/YYYY/MM-NomeMes/
      - Criar pasta se nao existir (mkdir -p)
      - Nome ficheiro: YYYY-MM-DD_Fornecedor_Referencia.pdf (ou nome original se claro)
      - Meses PT: 01-Janeiro, 02-Fevereiro, 03-Marco, 04-Abril, 05-Maio, 06-Junho,
                   07-Julho, 08-Agosto, 09-Setembro, 10-Outubro, 11-Novembro, 12-Dezembro
   b. UPLOAD ao Desk servidor:
      - SFTP para /tmp/ no servidor
      - mkdir -p uploads/expenses/{expense_id}/
      - Copiar PDF + criar index.html
      - chown ealmeida:ealmeida
   c. REGISTAR no Desk BD:
      - INSERT tblfiles (rel_id, rel_type='expense', file_name, filetype='application/pdf',
        attachment_key=MD5(rand), staffid=25, dateadded=NOW())
   d. LIMPAR /tmp/ local e remoto
7. ACTUALIZAR CSV:
   - Adicionar linha ao MAPA-DESPESAS-YYYY.csv correspondente
   - Formato: id_desk;data;categoria;fornecedor;descricao;valor;SIM;ficheiro;email;Auto /today
8. REGISTAR NO SUPABASE:
   - Adicionar ao batch de emails processados (ver Passo Final abaixo)
   - Marcar email como lido: imap_move_email NÃO é usado (sem pasta "Processed")
   - Email permanece na INBOX mas fica registado como processado no Supabase

Path da pasta Contabilidade

BASE: /media/ealmeida/Dados/GDrive/Cloud/ADM_Descomplicar/Financeiro/Contabilidade/
Estrutura: {BASE}/YYYY/MM-NomeMes/ficheiro.pdf

Exemplo: .../2026/02-Fevereiro/2026-02-12_Anthropic_Max20x_180.00EUR.pdf

CSVs: {BASE}/YYYY/MAPA-DESPESAS-YYYY.csv

Mapeamento Completo Fornecedores (IMAP + Tickets)

25 fornecedores activos. Verificar pelo dominio do email remetente. Mesma tabela usada para triagem IMAP E para auto-process tickets.

# Fornecedor Padrao Email Remetente Conta IMAP Cat ID Categoria Tax Moeda Notas
1 Anthropic anthropic.com recursos, info 38 Servicos IA e APIs 0 USD Pro/Max/API - receipt com invoice number
2 OpenRouter openrouter.ai, stripe.com (OpenRouter) contabilidade 38 Servicos IA e APIs 0 USD Invoice-36853E80-*
3 CapSolver payproglobal.com contabilidade 38 Servicos IA e APIs 0 USD PayPro Global como revendedor
4 Hetzner hetzner.com contabilidade, emanuel 4 Alojamento web (Hosting) 0 EUR Servidor dedicado mensal
5 CWP centos-webpanel.com, control-webpanel.com contabilidade 28 Licencas Software 0 USD Business Support mensal
6 MEO meo.pt, meoempresas.pt contabilidade 1 Telecomunicacoes 1 EUR Factura PT com IVA
7 Canva canva.com it 28 Licencas Software 0 EUR Pro mensal via PayPal
8 ElasticEmail elasticemail.com it, contabilidade 30 Servicos Cloud e Infraestrutura 0 USD Auto-recharge 10 USD
9 Descript descript.com, stripe.com (Descript) contabilidade 28 Licencas Software 0 USD Pro mensal 35 USD
10 Cursor cursor.com, stripe.com (Cursor) contabilidade 28 Licencas Software 0 USD Pro sub + usage
11 GitHub github.com emanuel 28 Licencas Software 0 USD Copilot mensal
12 Make/Celonis make.com, celonis.com google 6 Servicos Externos 0 USD Pro mensal
13 Gamma gamma.app google 6 Servicos Externos 0 EUR Pro mensal 20 EUR
14 Softaculous softaculous.com contabilidade 28 Licencas Software 0 USD Licenca anual
15 BdThemes bdthemes.com, fastspring.com it 14 Subscricoes e Servicos Digitais 0 USD Element Pack anual
16 Replicate replicate.com emanuel 38 Servicos IA e APIs 0 USD Credit purchase pontual
17 Google One google.com (Google One) gmail 30 Servicos Cloud e Infraestrutura 0 EUR AI Premium mensal
18 Namecheap namecheap.com gmail 37 Dominios 0 USD Renovacao dominios
19 Insync insynchq.com gmail 28 Licencas Software 0 USD Licenca pontual
20 Freepik freepik.com contabilidade 14 Subscricoes e Servicos Digitais 0 EUR Assinatura
21 Vimeo vimeo.com contabilidade 14 Subscricoes e Servicos Digitais 0 USD Video hosting
22 Moloni moloni.pt contabilidade 28 Licencas Software 1 EUR Facturacao PT com IVA
23 YouTube Premium google.com (YouTube) gmail 14 Subscricoes e Servicos Digitais 0 EUR Mensal ~6.99 EUR
24 PTisp ptisp.pt, almourol.com gmail, contabilidade 37 Dominios 1 EUR Dominios PT com IVA
25 TOConline toconline.pt, no-reply@toconline.pt emanuel (ver nota) 1 EUR Plataforma faturas eletronicas PT. Ler email para identificar emitente real. CUBIC CHOICES LDA → cat 21 (Contabilidade). Outros emitentes → mapear manualmente ou flag priority.

Moedas

EUR: currency = 3 (default)
USD: currency = 2 (manter valor original, NAO converter)

CRITICO: currency=1 NAO existe e causa despesas invisiveis nos relatorios.

Plataformas Multi-Fornecedor (protocolo especial)

Algumas plataformas entregam faturas de qualquer empresa. NAO mapear para categoria fixa. Ler o email para identificar o emitente real, depois categorizar.

Plataforma Dominio Protocolo
TOConline toconline.pt Ler email → extrair "Emitente: [empresa]" → mapear empresa → se desconhecida: flag priority
Stripe stripe.com Ler subject/corpo → identificar fornecedor (Cursor, Descript, OpenRouter...) → usar entrada do fornecedor real
PayPal paypal.com Ler corpo → identificar fornecedor → categorizar por fornecedor real
FastSpring fastspring.com Ler corpo → identificar fornecedor (BdThemes...) → categorizar por fornecedor real
PayPro Global payproglobal.com Ler corpo → identificar fornecedor (CapSolver...) → categorizar por fornecedor real

Emitentes TOConline conhecidos:

  • CUBIC CHOICES LDA → cat 21 (Contabilidade), tax=1

Emitentes TOConline desconhecidos: flag priority_flagged com nota "TOConline - emitente desconhecido: [empresa]"

Emails a IGNORAR (nao sao despesas)

- "Payment Confirmation" / "Payment Was Successfully Processed" → apenas confirmacao
- "Your subscription has been renewed" sem valor → apenas notificacao
- "Notificacao de transferencia" de bancos → notificacao bancaria
- Emails de marketing/changelog dos mesmos fornecedores → promocional
- Emails com subject "Welcome" / "Getting Started" → onboarding

Protecao contra duplicados (2 camadas)

CAMADA 1 - Supabase (message_id):
  - Verificar message_id no Set processed_ids carregado no Passo 0
  - Se encontrado → SALTAR completamente (nem ler o email)
  - Deduplicação exacta, sem falsos positivos

CAMADA 2 - Desk CRM (fornecedor + valor + data):
  - Pesquisar no Desk: mesmo fornecedor + mesmo valor (±0.05 EUR) + mesma data (±3 dias)
  - Se match → NAO criar despesa
  - Registar no Supabase com action="duplicate", action_detail="Duplicado de despesa #ID"

Se nenhum duplicado → criar despesa + registar no Supabase com action="expense_created"

Passo Final: Registar emails processados no Supabase

Executar UMA VEZ no final da triagem IMAP, após processar todas as contas. Batch INSERT com ON CONFLICT DO NOTHING para segurança.

Acumular durante a triagem uma lista de novos emails processados:
  { message_id, account_id, subject, sender, email_date, action, action_detail }

Onde action pode ser:
  - "spam_deleted" → email spam eliminado
  - "promo_archived" → email promocional arquivado
  - "expense_created" → despesa criada (#ID)
  - "duplicate" → duplicado detectado
  - "priority_flagged" → email prioritário incluído no relatório
  - "notification_closed" → notificação/newsletter fechada
  - "skipped" → email ignorado (não relevante)

Comando batch INSERT via SSH:
mcp__ssh-unified__ssh_execute(
  server="easy",
  command="docker exec descomplicar_supabase-db-1 psql -U postgres -d postgres -c \"
    INSERT INTO public.imap_processed_emails (message_id, account_id, subject, sender, email_date, action, action_detail)
    VALUES
      ('msg-id-1', 'conta1', 'Subject 1', 'from@x.com', '2026-02-12', 'expense_created', 'Despesa #985'),
      ('msg-id-2', 'conta2', 'Subject 2', 'from@y.com', '2026-02-12', 'spam_deleted', NULL)
    ON CONFLICT (message_id) DO NOTHING;
  \""
)

→ ON CONFLICT garante idempotência (re-executar checkup não duplica registos)
→ Máximo ~50 VALUES por INSERT (limitar tamanho do comando SSH)

Rotinas Semanais

Segunda-feira

1. Checkup normal (acima)
2. Planeamento semanal:
   - Todas as tarefas com deadline esta semana
   - Capacidade vs carga
   - Distribuicao por dia
   - Verificar estimativas de tempo (set_task_estimated_time se em falta)
3. Invocar /wp-update

Sexta-feira

1. Checkup normal (acima)
2. Sugerir manutencao WordPress:
   - Listar os 10 sites da rede
   - Oferecer checkup de seguranca

Sabado

1. Checkup normal (acima)
2. MCP Health Check completo (ver secção MCP Health Check)
3. Consolidacao de memorias:
   - Listar ~/.claude/projects/*/memory/MEMORY.md
   - Extrair "Padroes Descobertos" e "Solucoes"
   - Comentario na discussao #46 (Memorias)
   - Backup em memory-supabase
4. Auditoria de despesas (ver secção Auditoria Despesas abaixo)
   - Completa: sem PDF, sem categoria, valores anomalos
   - Reconciliacao mensal se 1o sabado do mes

Domingo

1. Checkup normal (acima)
2. MCP Health Check resumido (ver secção MCP Health Check)
   - Apenas verificação rápida de status
   - Alertas se algum MCP offline
3. Auditoria de despesas resumida (ver secção Auditoria Despesas abaixo)
   - Apenas: despesas sem PDF dos ultimos 30 dias
   - Alerta se >3 sem PDF

Auditoria Despesas (Sabado/Domingo)

Sabado: Auditoria completa. Domingo: Apenas despesas sem PDF. Executar apos MCP Health Check, antes da nota Obsidian.

Protocolo Sabado (Completo)

1. DESPESAS SEM PDF (ultimos 60 dias):
   SQL via mcp__ssh-unified__ssh_execute(server="desk"):
   SELECT e.id, e.expense_name, e.amount, e.date, e.note,
     (SELECT COUNT(*) FROM tblfiles f WHERE f.rel_id = e.id AND f.rel_type = 'expense') as pdfs
   FROM tblexpenses e
   WHERE e.id >= 770
     AND e.date >= DATE_SUB(CURDATE(), INTERVAL 60 DAY)
   HAVING pdfs = 0
   ORDER BY e.date DESC;

   → Excluir: AT (cat 15), Salarios (cat 22), SS (cat 25) - nao tem recibo
   → Reportar restantes como "despesas sem documento"

2. DESPESAS SEM CATEGORIA ou com categoria errada:
   SELECT id, expense_name, amount, category, date
   FROM tblexpenses
   WHERE id >= 770 AND (category = 0 OR category IS NULL)
   ORDER BY date DESC;

3. VALORES ANOMALOS (despesas >500 EUR ou negativas):
   SELECT id, expense_name, amount, currency, date
   FROM tblexpenses
   WHERE id >= 770
     AND (amount > 500 OR amount < 0)
   ORDER BY amount DESC;

4. RECONCILIACAO MENSAL (apenas 1o sabado do mes):
   SE DAY(CURDATE()) <= 7:
   - Contar despesas do mes anterior por categoria
   - Comparar com mes homologo (se existir)
   - Calcular total mensal
   - Alertar se variacao >30% vs media

5. FORNECEDORES RECORRENTES em falta:
   Verificar se fornecedores mensais tem despesa este mes:
   - Anthropic (mensal)
   - Cursor (mensal)
   - Hetzner (mensal)
   - Google One (mensal)
   - ElasticEmail (mensal)
   - Canva (mensal)
   SE algum nao tem despesa no mes corrente E ja passaram >10 dias → alertar

Protocolo Domingo (Resumido)

1. APENAS despesas sem PDF dos ultimos 30 dias:
   (mesma query do sabado mas INTERVAL 30 DAY)

2. SE >3 despesas sem PDF (excl. AT/Salario/SS):
   → Alerta: "X despesas sem documento nos ultimos 30 dias"
   → Listar cada uma com fornecedor, valor e data

3. SE 0 despesas sem PDF:
   → "Todas as despesas recentes tem documento anexado"

Output no Resumo

## Auditoria Despesas (Sabado)

### Despesas sem documento (3)
| # | Fornecedor | Valor | Data | Accao |
|---|-----------|-------|------|-------|
| 985 | Anthropic | 180.00 EUR | 06-02 | Descarregar recibo |
| 1008 | Cursor | 17.60 USD | 01-08 | Verificar portal |

### Fornecedores recorrentes
- Anthropic: OK (despesa Fev encontrada)
- Cursor: OK
- Hetzner: FALTA (sem despesa Fev) → verificar email/portal

### Resumo mensal (se 1o sabado)
- Total Fevereiro: 1.234,56 EUR (23 despesas)
- vs Janeiro: +12% (1.102,00 EUR)
- Top 3: Anthropic (360 EUR), Hetzner (276 EUR), Cursor (120 EUR)
## Auditoria Despesas (Domingo)

Todas as despesas dos ultimos 30 dias tem documento anexado.

OU

3 despesas sem documento (ultimos 30 dias):
- #985 Anthropic 180.00 EUR (06-02) → descarregar recibo
- #1008 Cursor 17.60 USD (01-08) → verificar portal

MCP Health Check (Sábado/Domingo)

Protocolo Sábado (Completo)

1. Listar MCPs críticos (do ~/.claude.json):
   - desk-crm-v3 (gateway)
   - google-workspace (gateway)
   - ssh-unified (gateway)
   - gitea (gateway)
   - moloni (gateway)
   - memory-supabase (gateway)
   - dify-kb (gateway)
   - filesystem (local)
   - mcp-time (local)

2. Para cada MCP:
   a. Tentar operação simples de teste:
      - desk-crm-v3: get_tickets(limit=1)
      - google-workspace: get_events (hoje)
      - ssh-unified: ssh_list_servers
      - filesystem: list_directory(~)
      - etc.

   b. Registar resultado:
      ✅ OK - respondeu em <2s
      ⚠️ LENTO - respondeu em >2s
      ❌ FALHA - timeout ou erro

3. Verificar credenciais:
   - Google Workspace: verificar token expiry
   - SSH: verificar keys funcionam
   - Gitea: verificar auth

4. Output no resumo:

🔍 MCP Health Check (Sábado)

8/9 MCPs operacionais ⚠️ google-workspace (lento: 3.2s) gitea (timeout)

Acções necessárias:

  • Investigar timeout gitea
  • Google workspace token expira em 5 dias

5. SE algum MCP crítico falhou:
- Criar nota em Obsidian com detalhes
- Guardar em memory-supabase tag:["mcp-issue"]

Protocolo Domingo (Resumido)

1. Verificar apenas MCPs críticos top 5:
   - desk-crm-v3
   - google-workspace
   - ssh-unified
   - filesystem
   - mcp-time

2. Teste rápido (timeout 5s):
   - Apenas verificar se responde
   - Não testar funcionalidade completa

3. Output resumido:

🔍 MCP Status (Domingo)

Todos os MCPs críticos operacionais

OU

google-workspace offline → Verificar segunda-feira


4. Apenas alertar se falha crítica

MCPs Críticos por Prioridade

P1 - Críticos (bloqueiam trabalho):

  • desk-crm-v3 (CRM)
  • filesystem (ficheiros locais)
  • mcp-time (data/hora)

P2 - Importantes (degradam workflow):

  • google-workspace (email/calendar)
  • ssh-unified (servidores)
  • memory-supabase (memória)

P3 - Úteis:

  • gitea (repos)
  • moloni (facturação)
  • dify-kb (knowledge base)

Troubleshooting Automático

Se MCP falha, tentar:

1. Verificar gateway.descomplicar.pt está acessível:
   - WebFetch("https://gateway.descomplicar.pt/health")

2. SE gateway OK mas MCP falha:
   - Problema no MCP específico
   - Documentar para investigação

3. SE gateway falha:
   - Problema de rede ou servidor mcp-hub
   - Alerta crítico

Persistencia (FASE 3 - Passos 21-22)

Passo 21: Nota Obsidian

Path: /media/ealmeida/Dados/Hub/00-Inbox/
Filename: DD-MM-YYYY-checkup.md

---
title: Checkup DD-MM-YYYY
date: DD-MM-YYYY
type: checkup
status: active
---

## Checkup Diario - DD-MM-YYYY (Dia-da-Semana)

---

## ⚠️ REQUER ATENÇÃO URGENTE

[Listar questoes urgentes identificadas durante auto-processamento e IMAP]

---

## ✓ 3 Prioridades Hoje

[As 3 tarefas mais importantes do dia]

---

## 📊 Resumo do Dia

[Timer, Tickets, Facturas, Tarefas, Leads, Propostas, Agenda]

---

## 📧 Emails IMAP Processados

[Resumo limpeza automatica]

---

## 🔄 Auto-Processamento Executado

[Tickets fechados, despesas criadas]

Passo 22: Supabase

mcp__memory-supabase__save_memory:
- content: "Checkup diario - X tickets, Y tarefas, Z urgentes, W emails"
- tags: ["today", "checkup", "DD-MM-YYYY"]
- metadata: { tickets, tasks, urgent, emails_processed, is_monday }

Output Final

ESTRUTURA OBRIGATORIA: Questoes urgentes NO TOPO. Utilizador ve primeiro o que requer atencao imediata.

## Checkup Diario - DD-MM-YYYY (Dia-da-Semana)

---

## ⚠️ REQUER ATENÇÃO URGENTE

### 🚨 [Categoria] - [Assunto]
[Descricao do problema urgente]
- [Detalhes]
- [Accao necessaria]

### [Outros problemas urgentes se existirem]

---

## ✓ 3 Prioridades Hoje
1. [ ] [Prioridade 1 - mais urgente]
2. [ ] [Prioridade 2]
3. [ ] [Prioridade 3]

---

## 🔄 Workflows Sugeridos

Com base nas tuas tarefas de hoje:
- [ ] **[Tarefa/Contexto]** → Workflow sugerido: [Componente]
  - [Breve explicação do workflow e próximos passos]

---

## 📊 Resumo do Dia

### Timer
[Status do timer ou "Nenhum timer activo"]

### Tickets
- Abertos: X (Y urgentes)
- Fechados automaticamente: Z

### Facturas
- Vencidas: [valor] EUR ou "0"

### Tarefas
- Urgentes: X
- Alta prioridade: Y

### Leads + Propostas
- Leads novos: X
- Propostas pendentes: Y

### Agenda
- [HH:MM - Evento]

---

## 📧 Emails IMAP Processados - LIMPEZA AUTOMÁTICA ✓

**TOTAL: X emails apagados/movidos em Y contas**

[Detalhes por conta]

---

## 🔄 Auto-Processamento Executado

[Tickets fechados, despesas criadas, etc]

Auto-Process Tickets (FASE 1 - OBRIGATÓRIO)

EXECUTAR SILENCIOSAMENTE ANTES DE QUALQUER OUTPUT. Nao perguntar, nao mostrar preview. Processar e reportar no resumo final.

Passo 1: Recolher tickets abertos (status 1) de TODOS os departamentos

get_tickets({ status: 1, limit: 50 })

Passo 2: Classificar cada ticket

Para cada ticket aberto, aplicar por ordem de prioridade:

1. NOTIFICAÇÃO SISTEMA? (verificar PRIMEIRO)
   → Subject contem padrao protegido E remetente conhecido
   → NAO fechar. Guardar para "Requer Accao" no resumo.

2. DESPESA? (verificar SEGUNDO)
   → Email do remetente contem padrao de fornecedor conhecido (ver mapeamento)
   → Processar como despesa (ver passos abaixo)

3. SPAM? (verificar TERCEIRO)
   → Subject contem padrao SPAM
   → Fechar (status 5) com motivo

4. NEWSLETTER/INFORMATIVO?
   → Newsletters, updates de produtos, notificacoes genericas
   → Fechar (status 5) com motivo

5. NENHUM MATCH → Manter aberto para revisao

Passo 3: Processar Despesas

DADOS ESTAO NO HTML. A maioria dos fornecedores (Anthropic, Canva, Elastic Email) envia os dados no corpo do email, NAO como PDF anexo. Extrair valor, referencia e data do HTML do ticket.

Para cada ticket identificado como despesa:
  1. get_ticket(ticket_id) → ler HTML completo
  2. Extrair do HTML: valor, invoice/reference number, data, descricao
  3. Mapear email → categoria (tabela abaixo)
  4. create_expense(category_id, amount, date, note, reference, currency=3 ou 2, tax)
     → currency=3 (EUR) para fornecedores EUR, currency=2 (USD) para fornecedores USD
  5. Fechar ticket (status 5) com "Despesa #ID criada"
  6. SE existe ticket duplicado (mesmo subject) → fechar duplicado tambem

Padroes SPAM (Fechar status 5)

Guest Post, SEO services, backlinks, partnership,
Purchase Order, WeTransfer, Prestige Awards

Notificacoes de Sistema (NUNCA auto-fechar)

Padroes protegidos (subject - case insensitive):

Legal Update, Legal Notice, Policy Change, Policy Update,
Deprecation, End of Life, EOL, Breaking Change,
Migration Required, Action Required, Action Needed,
Security Alert, Security Advisory, Security Notice,
API Change, API Update, Terms Update, Terms Change,
Service Disruption, Maintenance Required,
Compliance, GDPR, Data Processing, Data Processor,
Infrastructure Change, Platform Update, Product Update

Mapeamento Fornecedor → Categoria

Verificar pelo dominio do email do remetente, nao pelo departamento. Tickets de fornecedores conhecidos podem estar em QUALQUER departamento. Tabela completa na secção "Auto-Despesas IMAP" acima (22 fornecedores). Abaixo apenas padroes adicionais especificos de tickets:

Padrao no Email Categoria ID Tax
openai Servicos IA e APIs 38 0
everhour Softwares Gestao 12 0
envato Plugins e Recursos de Design 9 0
staples, multipapel Material Escritorio 15 1
ptisp Registo de Dominios 13 0

Tickets a Saltar (NAO criar despesa)

Tipo Indicador Accao
Payment Confirmation "Payment Confirmation" de CWP/centos-webpanel Fechar (confirmacao pagamento, nao fatura)
Payment Receipt "Payment Was Successfully Processed" de elasticemail Fechar (recibo pagamento recorrente sem dados de fatura)
Notificacao bancaria "Notificação de transferência" de bancobpi Fechar (notificacao, nao fatura)
Duplicado reference_no ja existe no CRM Fechar (ja processado)
Ticket duplicado Mesmo subject que outro ticket ja processado Fechar como duplicado

NOTA: Receipts de Anthropic e Canva contem invoice number e valor → SAO despesas. "Receipt" so e motivo para saltar quando e apenas confirmacao de pagamento sem dados de fatura.

Campos Criticos

currency = 3 (EUR) → Fornecedores EUR (Anthropic Max, Hetzner, MEO, Canva, Gamma, Google One)
currency = 2 (USD) → Fornecedores USD (Cursor, CWP, Descript, ElasticEmail, OpenRouter, etc.)
CRITICO: currency=1 NAO existe → despesas invisiveis nos relatorios
tax = 1 → Fornecedores PT (MEO, Moloni, Staples)
tax = 0 → Fornecedores estrangeiros (Anthropic, Canva, Hetzner, etc.)
send_invoice_to_customer = 0 → OBRIGATORIO na BD (sem default)

Referência de Skills

Secção Skill Comando
Timer /time /time
Tickets /ticket /ticket
Facturas /invoice /invoice overdue
Tarefas/Leads /crm /crm
Downloads /cleanup-downloads SE >10 ficheiros
WordPress /wp-update Segundas

Anti-Patterns

  • NUNCA executar checkup sem verificar data/hora
  • NUNCA duplicar logica de outras skills
  • NUNCA mostrar mais de 3 prioridades (PHDA)
  • NUNCA mostrar resumo ANTES de processar despesas e SPAM
  • NUNCA perguntar ao utilizador se deve processar despesas (e automatico)
  • NUNCA assumir que so dept 3 tem tickets de contabilidade (verificar email do remetente)
  • NUNCA saltar receipt que contem invoice number e valor (e despesa)

Changelog

v8.3.1 (2026-02-24)

  • PLATAFORMAS MULTI-FORNECEDOR: Novo protocolo para plataformas que entregam faturas de qualquer empresa (TOConline, Stripe, PayPal, FastSpring, PayPro Global)
  • TOConline adicionado (#25): Ler email para identificar emitente real. CUBIC CHOICES LDA → cat 21. Desconhecido → flag priority
  • Regra: NUNCA mapear plataforma multi-fornecedor para categoria fixa sem ler o emitente real

v8.3.0 (2026-02-14)

  • WORKFLOWS SUGERIDOS: Analisa tarefas prioritárias e sugere workflows/componentes relevantes
  • INTEGRAÇÃO QUICK-START: Consulta /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/WORKFLOWS-QUICK-START.md
  • 10 PADRÕES: WordPress, procedimentos, audit, orçamento, lead, SEO, deploy, marketing, PHP, design
  • OUTPUT CONTEXTUAL: Sugere skill ou agent apropriado com duração estimada
  • DISCOVERY FIX: Resolve problema de não saber qual componente usar para cada tarefa

v8.2.0 (2026-02-12)

  • AUDITORIA DESPESAS Sab/Dom: Verifica despesas sem PDF, categorias em falta, valores anomalos
  • SABADO completo: Sem PDF (60d), sem categoria, >500 EUR, reconciliacao mensal (1o sabado), fornecedores recorrentes em falta
  • DOMINGO resumido: Apenas sem PDF (30d), alerta se >3
  • CORRECCAO CURRENCY: EUR = 3 (nao 2), USD = 2. Corrigido em toda a skill
  • CATEGORIAS ALINHADAS: 24 fornecedores com categorias corrigidas (consolidacao 12-02-2026)
    • Hetzner: 10→4, Canva: 9→28, ElasticEmail: 5→30, Cursor: 38→28, GitHub: 38→28
    • Make/Gamma: 12/28→6, Google One: 38→30, Namecheap: 13→37, BdThemes: 9→14
  • send_invoice_to_customer: Documentado como campo obrigatorio (valor 0)
  • 2 fornecedores adicionados: YouTube Premium (#23), PTisp (#24)

v8.1.0 (2026-02-12)

  • DEDUPLICAÇÃO IMAP via Supabase: Tabela imap_processed_emails como fonte de verdade
  • Passo 0: Carrega message_ids já processados antes de iterar contas
  • Passo Final: Batch INSERT de todos os emails processados com ON CONFLICT DO NOTHING
  • 2 camadas anti-duplicados: Supabase (message_id exacto) + Desk CRM (fornecedor+valor+data)
  • Sem pasta "Processed": Emails permanecem na INBOX, tracking 100% via Supabase
  • Actions tipadas: spam_deleted, expense_created, duplicate, priority_flagged, etc.
  • Acesso: SSH → EasyPanel → docker exec psql (2 chamadas por checkup)

v8.0.0 (2026-02-12)

  • AUTO-DESPESAS IMAP: Processamento completo de facturas/recibos detectados no IMAP
  • PDF ANEXO: Extrai PDF do email, faz upload ao servidor, regista em tblfiles
  • 22 FORNECEDORES: Mapeamento completo com conta IMAP, categoria, tax, moeda
  • ANTI-DUPLICADOS: Verificacao antes de criar (fornecedor + valor + data ±3d)
  • USD→EUR: Conversao automatica taxa 0.92
  • IMAP→DESK: Ciclo completo: detectar → ler → extrair → criar despesa → anexar PDF → arquivar email

v7.7.0 (2026-02-10)

  • ESTRUTURA CHECKUP: Questoes urgentes NO TOPO (Requer Atencao → Prioridades → Resumo)
  • FORMATO DATA: DD-MM-YYYY obrigatorio (ex: 10-02-2026-checkup.md)
  • UX PHDA: Informacao mais importante primeiro, micro-passos visiveis

v7.6.0 (2026-02-10)

  • MCP HEALTH CHECK: Verificação completa aos sábados, resumida aos domingos
  • SABADO: Health check de 9 MCPs críticos com troubleshooting automático
  • DOMINGO: Verificação rápida top 5 MCPs com alertas se falha crítica
  • PROTOCOLO: Testes automáticos, verificação credenciais, output estruturado

v7.5.0 (2026-02-06)

  • IMAP TRIAGEM: Protocolo completo para 13 contas IMAP (spam, promo, facturas, prioritarios)
  • NOTA OBSIDIAN: Criar nota diaria em /media/ealmeida/Dados/Hub/00-Inbox/
  • SUPABASE SAVE: Guardar resumo checkup em memory-supabase com metricas
  • LEADS + PROPOSTAS: Adicionar verificacao de leads novos e propostas pendentes na Fase 2
  • SEXTA-FEIRA: Rotina de manutencao WordPress sugerida as sextas
  • VERIFICAR EXECUCAO: Passo 2 verifica ultima execucao via memory-supabase
  • EXCEPCOES IMAP: Dominos gov.pt, at.gov.pt, tribunais nunca processados automaticamente
  • BUG FIX: Corrigido MCP IMAP (seq.fetch→fetch para operacoes UID-based)

v7.4.0 (2026-02-06)

  • Protocolo 3 fases, scan todos departamentos, HTML fonte dados, mapeamento expandido

v7.3.0 (2026-02-05)

  • Notificacoes de sistema protegidas

v7.2.0 (2026-02-05)

  • Auto-despesas contabilidade (dept 3)

v7.1.0 (2026-02-05)

  • Integracao com skills Desk

Skill v8.3.1 | 2026-02-24 | Descomplicar®