diff --git a/gestao/skills/today/SKILL.md b/gestao/skills/today/SKILL.md index 8904b48..a9ca4e7 100644 --- a/gestao/skills/today/SKILL.md +++ b/gestao/skills/today/SKILL.md @@ -1,24 +1,24 @@ --- name: today description: > - Checkup diário v7.5 - IMAP triaging, auto-despesas, Obsidian note, Supabase. - Triagem emails 12 contas IMAP + tickets CRM + despesas auto + nota diaria. + 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: 7.5.0 +version: 8.3.1 quality_score: 92 user_invocable: true category: productivity -tags: [rotina, checkup, dashboard, crm, tickets, invoices, timer, monday, saturday, imap, email] +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 -mcps: desk-crm-v3, mcp-time, google-workspace, imap, memory-supabase +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 v7.5 - Checkup Diário +# /today v8.1 - Checkup Diário Hub central que orquestra skills Desk + IMAP para visao completa do dia. @@ -53,11 +53,13 @@ FASE 3 - OUTPUT + PERSISTENCIA 15. Notificacoes de sistema que requerem revisao manual 16. Dashboard (timer, tickets, facturas, tarefas, leads, agenda) 17. 3 Prioridades do dia - 18. SE SEGUNDA → Planeamento semanal + /wp-update - 19. SE SEXTA → Sugerir manutencao WordPress - 20. SE SABADO → Consolidacao memorias - 21. Criar nota Obsidian (Passo 9) - 22. Guardar em Supabase (Passo 10) + 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) ``` --- @@ -114,6 +116,73 @@ mcp__desk-crm-v3__get_tasks({ status: [1,4], priority: [3,4] }) | #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 ``` @@ -132,19 +201,40 @@ mcp__google-workspace__get_events({ ## IMAP Triagem (FASE 1 - Passo 5) -> **OBRIGATORIO:** Processar 12 contas IMAP silenciosamente. +> **OBRIGATORIO:** Processar 13 contas IMAP silenciosamente. > Ver regras detalhadas em `config/email-triage-rules.md` -### Contas IMAP (12) +### Contas IMAP (14) ``` emanuel, it, help, suporte, contabilidade, financeiro, -info, rh, mkt, design, news, aiktop +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) @@ -155,11 +245,12 @@ Classificar cada email por ordem de prioridade: 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 → Registar para contabilidade +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 abaixo) - - Registar para reencaminhar para contabilidade@descomplicar.pt + - Remetente de servico conhecido (ver mapeamento completo abaixo) + - Criar despesa + anexar PDF automaticamente 4. PRIORITARIO → Incluir no relatorio - Remetente: cliente conhecido (verificar DeskCRM) @@ -173,7 +264,7 @@ Classificar cada email por ordem de prioridade: 📧 Emails Processados - X spam eliminados - Y promocionais arquivados -- Z facturas para contabilidade +- Z despesas criadas automaticamente (valor total) - W emails prioritarios pendentes ``` @@ -187,6 +278,187 @@ Classificar cada email por ordem de prioridade: --- +## 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 @@ -214,11 +486,244 @@ Classificar cada email por ordem de prioridade: ``` 1. Checkup normal (acima) -2. Consolidacao de memorias: +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 ``` --- @@ -228,18 +733,47 @@ Classificar cada email por ordem de prioridade: ### Passo 21: Nota Obsidian ``` -Path: /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/00-Inbox/ -Filename: YYYY-MM-DD-checkup.md +Path: /media/ealmeida/Dados/Hub/00-Inbox/ +Filename: DD-MM-YYYY-checkup.md --- -title: Checkup YYYY-MM-DD -date: YYYY-MM-DD +title: Checkup DD-MM-YYYY +date: DD-MM-YYYY type: checkup status: active --- -## Checkup Diario - YYYY-MM-DD -[Conteudo do relatorio com links CRM] +## 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 @@ -247,7 +781,7 @@ status: active ``` mcp__memory-supabase__save_memory: - content: "Checkup diario - X tickets, Y tarefas, Z urgentes, W emails" -- tags: ["today", "checkup", "YYYY-MM-DD"] +- tags: ["today", "checkup", "DD-MM-YYYY"] - metadata: { tickets, tasks, urgent, emails_processed, is_monday } ``` @@ -255,42 +789,76 @@ mcp__memory-supabase__save_memory: ## Output Final +> **ESTRUTURA OBRIGATORIA:** Questoes urgentes NO TOPO. +> Utilizador ve primeiro o que requer atencao imediata. + ```markdown -## Checkup Diario - 2026-02-06 (Quinta) - -### Timer -#1446 - Documentacao (2h 15m) - -### Emails (IMAP) -- Spam eliminado: 5 -- Promocional arquivado: 3 -- Facturas contabilidade: 2 -- Prioritarios: 1 - -### Tickets -- Abertos: 4 (1 urgente) - -### Facturas -- Vencidas: 3.050EUR - -### Tarefas -- Urgentes: 1 -- Alta prioridade: 4 - -### Leads + Propostas -- Leads novos: 2 -- Propostas pendentes: 1 - -### Agenda -- 10:00 - Reuniao Cliente X -- 14:30 - Call Equipa +## Checkup Diario - DD-MM-YYYY (Dia-da-Semana) --- -### 3 Prioridades Hoje -1. [ ] #1450 - Implementar API (Urgente) -2. [ ] Contactar OldClient (factura 15 dias) -3. [ ] #1448 - Documentacao Stack +## ⚠️ 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] ``` --- @@ -341,7 +909,8 @@ 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=2, tax) + 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 ``` @@ -371,23 +940,16 @@ Infrastructure Change, Platform Update, Product Update > 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 | |-----------------|-----------|-----|-----| -| anthropic | Servicos IA e APIs | 38 | 0 | | openai | Servicos IA e APIs | 38 | 0 | -| hetzner | Alojamento de Servidores | 10 | 0 | -| meo, meoempresas | Telecomunicacoes | 1 | 1 | -| centos-webpanel, cwp | Licencas Software | 28 | 0 | -| elasticemail | E-mail MKT | 5 | 0 | -| freepik, envato, canva | Plugins e Recursos de Design | 9 | 0 | -| moloni | Software Facturacao | 11 | 1 | | everhour | Softwares Gestao | 12 | 0 | -| ptisp, namecheap | Registo de Dominios | 13 | 0 | -| vimeo | Plataformas Armazenamento | 19 | 0 | -| payproglobal | Servicos IA e APIs (CapSolver) | 38 | 0 | -| bdthemes | Plugins e Recursos de Design | 9 | 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) @@ -405,9 +967,12 @@ Infrastructure Change, Platform Update, Product Update ### Campos Criticos ``` -currency = 2 (EUR) → SEMPRE +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) ``` --- @@ -439,9 +1004,60 @@ tax = 0 → Fornecedores estrangeiros (Anthropic, Canva, Hetzner, etc.) ## 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 12 contas IMAP (spam, promo, facturas, prioritarios) -- **NOTA OBSIDIAN:** Criar nota diaria em /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/00-Inbox/ +- **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 @@ -463,4 +1079,4 @@ tax = 0 → Fornecedores estrangeiros (Anthropic, Canva, Hetzner, etc.) --- -*Skill v7.5.0 | 2026-02-06 | Descomplicar®* +*Skill v8.3.1 | 2026-02-24 | Descomplicar®*