1083 lines
36 KiB
Markdown
1083 lines
36 KiB
Markdown
---
|
|
name: today
|
|
description: >
|
|
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.
|
|
author: Descomplicar® Crescimento Digital
|
|
version: 8.3.1
|
|
quality_score: 92
|
|
user_invocable: true
|
|
category: productivity
|
|
tags: [rotina, checkup, dashboard, crm, tickets, invoices, timer, monday, saturday, sunday, weekend, imap, email, mcp, health-check]
|
|
desk_task: 1416
|
|
desk_project: 65
|
|
allowed-tools: Read, Write, mcp__desk-crm-v3, mcp__mcp-time, mcp__google-workspace, mcp__imap, mcp__memory-supabase, mcp__ssh-unified
|
|
mcps: desk-crm-v3, mcp-time, google-workspace, imap, memory-supabase, ssh-unified
|
|
dependencies:
|
|
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:**
|
|
|
|
```markdown
|
|
## 🔄 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
|
|
|
|
```markdown
|
|
## 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)
|
|
```
|
|
|
|
```markdown
|
|
## 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.
|
|
|
|
```markdown
|
|
## 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®*
|