From f2b15ce0f7bc6a6eae506dd5adde7a53c372bfe1 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Sun, 26 Apr 2026 08:11:28 -0300 Subject: [PATCH] HANDOFF + cleanup: bug Teleport resolvido, backups antigos removidos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - HANDOFF.md atualizado: bug do chip do cronômetro resolvido em 2026-04-27. Causa-raiz documentada (múltiplos Teleports compartilhando target + Transition>Element v-if gera comment placeholder VNode → emitsOptions:null no shouldUpdateComponent) e fix oficial (Transition envolvendo Teleport). - Backups locais 2026-03-23 removidos do índice (já estavam .gitignored, apenas saneamento). Co-Authored-By: Claude Opus 4.7 (1M context) --- HANDOFF.md | 539 +- database-novo/backups/2026-03-23/data.sql | 1347 - .../backups/2026-03-23/full_dump.sql | 20658 ---------------- database-novo/backups/2026-03-23/schema.sql | 18970 -------------- 4 files changed, 173 insertions(+), 41341 deletions(-) delete mode 100644 database-novo/backups/2026-03-23/data.sql delete mode 100644 database-novo/backups/2026-03-23/full_dump.sql delete mode 100644 database-novo/backups/2026-03-23/schema.sql diff --git a/HANDOFF.md b/HANDOFF.md index 088e6c6..65d0b54 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -1,399 +1,206 @@ -# HANDOFF — 2026-04-23 (fim do dia) +# HANDOFF — 2026-04-26 (continuação 2026-04-27: bug Teleport resolvido) Documento de continuidade. **Quando voltar, comece lendo esta página.** -Todo o estado vive no banco (`/saas/desenvolvimento` → Auditoria/Verificações/Testes). +Sessão inteira polindo o Layout Melissa: light mode, integração no /profile, +Agenda fullscreen, dock taskbar, cadastro de paciente, ações contextuais. --- -## 📊 Estado atual +## ✅ BUG RESOLVIDO — chip do cronômetro (2026-04-27) -| | | -|---|---| -| **🔴 Críticos** | **0** ✅ | -| **🟠 Altos** | **0** ✅ | -| Vitest | 208/208 | -| SQL integration | 33/33 | -| E2E (Playwright) | 5/5 | -| Migrations totais | **47** (36 → 47) | -| Edge functions | **25** (20 → 25) | -| Cron jobs ativos | 2 (heartbeat 2min + SLA 5min) | -| Commits hoje | **18** (de `f76a2e3` a `f1c97ee`) | +**Era:** dois `` (chip cronômetro + dock contextual) +com `` interno + `v-if` interno apontando pro mesmo target. O slot +do `` colapsava pra comment placeholder VNode quando falsy, e +esses placeholders ficavam intercalados no array de children do target — +ao patch/reorder, `shouldUpdateComponent` lia `.component.emitsOptions` em +nó cujo `.component` foi anulado pelo unmount irmão. Daí `null`. + +**Fix (pattern oficial Vue):** `` envolvendo ``, não o +contrário. Assim o Teleport some/aparece como unidade, sem deixar placeholder +no target compartilhado. + +```vue + + + + + + + + + + + + + +``` + +Aplicado em `MelissaCronometro.vue:322` e `MelissaAgenda.vue:842`. + +**Lição persistida:** quando múltiplos Teleports compartilham target, evitar +`v-if` dentro do Teleport — coloca o `v-if` no próprio Teleport. --- -## 🎯 O que rolou hoje (2026-04-23) +## ✅ O que aconteceu hoje (cronologia) -### ✅ Admin SaaS: ajuste manual de créditos WhatsApp (f76a2e3) +### Manhã — Light mode + /profile +- **Light bloom no MelissaLayout** — gradiente Bloom usa CSS vars (`--bloom-c1/c2/base-1/base-2`) que flipam dark/light. Dark: 400/300/950. Light: 200/100/0. Removido `background-image: none !important`. Corrigido branco-em-branco do clock + ψ + psi-kbd. Panels light com 92% opacity. Classe `win11-has-photo` quando upload de foto. +- **Layout Melissa em /profile** — 3º card na seção 06 com badge "Em construção" + listras diagonais. Aceita `'melissa'` em `setVariant`/`_loadVariant`/bootstrap. Migration `20260425000001_user_settings_layout_variant_melissa.sql` (já aplicada). **Switch real do app fica pra Fase 5 (A#32 no dev_auditoria_items).** +- **Cronômetro/Personalização em light** — trocados `color: white` scoped → `var(--m-text)` em `.mc-select`, `.mc-display`, `.mc-btn--secondary`, `.mc-chip`, `.settings-select`, `.settings-test-btn`. Pílula `psi-kbd` ganhou tokens `--m-kbd-bg/--m-kbd-text` (era `rgba(0,0,0,.65)` hardcoded — em light virava preto sobre preto). Shadow do `.psi-btn` suavizada em light. +- **Ícones tons claros** — bloco de overrides em light mapeia `text-{cor}-200/300/400` → `text-{cor}-600` (17 cores Tailwind: emerald, green, amber, purple, blue, sky, cyan, teal, indigo, violet, pink, rose, red, orange, yellow, fuchsia, lime). -- RPC `admin_adjust_whatsapp_credits` (+/-) com `|amount| ≤ 1000` por operação -- Remoção só afeta pool cortesia (topup/adjustment/refund) — compras `purchase` são intocáveis (FIFO cortesia primeiro) -- Helper RPC `get_whatsapp_removable_balance` pra UI mostrar breakdown -- UI em `/saas/addons`: SelectButton Adicionar/Remover, ConfirmDialog com impactados ao desativar pacote +### Tarde — Agenda fullscreen +- **Cores light na MelissaAgenda** — 12 substituições de `color: white` → `var(--m-text)` semântico. Mantido white em `.mini-cal__day.is-hoje` (bg accent saturado). Avatar do paciente: bg `--m-accent-strong` (translúcido, invisível em light) → `--m-accent` (saturado). Tweaks light: shadow suave na `.ma-page`, eventos do FC com `saturate(140%)` + box-shadow leve, cursor "agora" com glow vermelho. +- **Mini-cal funcionalidades** — click no dia pula o FC (`fcApi().gotoDate`), range visível do FC destacado (`is-in-range` via `viewStart/viewEnd`), dots por evento real do mês (`useMelissaEventosRange(miniRangeStart, miniRangeEnd)` separado), até 3 dots por dia. +- **Feriados** — `useFeriados` integrado. Cores: nacional=rose, municipal=amber, personalizado=violet. Tooltip combina nome do feriado + count de eventos. Hoje + feriado: ring externo na cor do feriado. Recarrega ao mudar de ano via watch. +- **Dias fechados** — `useAgendaSettings.workRules` carregado. `workDowSet` computed. Dias fora da jornada → `is-fechado` (cinza apagado). Mutex com feriado (feriado vence cinza). Fallback seg-sex se sem regras. +- **FC central com feriados** — `fcEvents` agora `[...eventosSemana, ...feriadoFcEvents]` (display:'background' amber suave). -### ✅ Heartbeat + Reconnect (6.1 + 6.3) — e1f756e / 4e4bac6 +### Tarde 2 — Layout estrutural da Agenda +- **Card `Hoje` mesclado** — antes 2 cards (stats + sessões). Agora 1 só: header + 4 stats + divider + lista de sessões. Count à direita do header. +- **Card Hoje movido pra esquerda** — sai da col 3 (widgets), vai pro topo da col 1 (sidebar pacientes). Modificador `.ma-w--side` com margem + max-height 50vh + lista interna scrollable. +- **ProximosFeriadosCard reaproveitado** — entre mini-cal e Hoje na col 3. Override visual (`bg-soft`, `border-color`, `border-radius: 12px`) pra encaixar no glass. -- Tabela `whatsapp_connection_incidents` com UNIQUE parcial (1 aberto por channel) -- RPCs `whatsapp_heartbeat_open_incident/resolve/mark_notified` -- Edge `whatsapp-heartbeat-check` com threshold configurável (padrão 5min) -- **Reconnect automático** (6.3): antes de abrir incident tenta `POST /instance/restart`, espera 3s, re-checa state. Se voltou → resolve. Cooldown 10min/channel. -- UI em `/configuracoes/whatsapp-pessoal` ganhou card "Monitoramento de conexão" (toggles alerts/reconnect + threshold + histórico 7d) -- Painel SaaS `/saas/whatsapp` mostra badge de incidents + "Verificar tudo agora" -- Cron `*/2 * * * *` ativo (job 5) +### Noite 1 — Dock + cadastro de paciente +- **Dock taskbar** (`.melissa-dock`) — faixa fixa 76px no bottom, transparente, `position:fixed`. ψ desceu pra `bottom: 10px` (centralizado vertical na faixa). Token `--m-dock-h: 76px`. Páginas reservam space via `inset` (`.ma-page` ajustada). **CSS no `