Files
agenciapsilmno/Obsidian/Brain/log.md
T
Leonardo ab7526b8d7 MelissaPaciente Fase 2: Tab Visao Geral completa (4 KPIs + timeline + msgs + notas)
Reescreveu o placeholder da aba Visao Geral por uma versao 1:1 do
PatientProntuario.vue legado, com estilo Melissa nativo e dados
alimentados pelos composables criados na Fase 1.

NOVO: src/features/patients/utils/patientFormatters.js (~165L)
- Helpers compartilhaveis extraidos do PatientProntuario:
  parseDateLoose, fmtDateBR, fmtDateTimeBR, fmtCurrency, fmtRelative
  (pt-br: "agora"/"ha 5 min"/"em 2 dias"/"ha 3 sem"), sessionDuration,
  calcAge.
- STATUS_LABEL e STATUS_SEVERITY pra mapear status de sessao (cobre
  variantes: realizado/realizada, falta/faltou, cancelado/cancelada).
- tagStyle com contraste auto (luminance WCAG-ish: bg colorido +
  texto preto/branco baseado em luminance < 0.45).
- Sera reutilizado pelas Fases 3-7 e na Fase 8 substitui as funcoes
  duplicadas do PatientProntuario.

EXTENSAO de composables (Fase 1):
- usePatientSessions: novo computed `ultimasAtendidas` (top 6 sessoes
  com status realiz/falt/cancel/remarc pra Timeline). totalRealizadas/
  Faltas/Canceladas refinados pra usar regex (cobre variantes pt-br).
- usePatientFinancial: novo computed `statusFinanceiro` que retorna
  { emDia: bool, proxVenc: record, totalPendente, totalPago, vencidos }
  pra alimentar KPI 02 com info detalhada de status financeiro.

MELISSAPACIENTE.VUE — Visao Geral reescrita:
- 4 KPI cards ricos (substituem os simples da Fase 1):
  - 01 Sessoes: realizadas / total + faltas + canceladas
  - 02 Pagamento: status (Em dia/atraso) + prox venc + cor adaptativa
    (vermelho atrasado / primary ok)
  - 03 Proxima sessao: relative + datetime + modalidade
  - 04 Mensagens: ultima relative + direction + count
- Grid 2-col abaixo (1.4fr / 1fr em >=900px):
  - Timeline coluna esquerda: dots coloridos por status, tags severity,
    chips modalidade + duracao, nota observacoes inline.
  - Coluna direita: Mensagens recentes (4) com border-left in/out +
    meta direction/relative + body 3-line clamp; Notas e observacoes
    em card papel com label uppercase e icone lock.
- Removeu kpiEmAberto/Atrasado nao usados (statusFinanceiro encapsula).

CSS: ~280L novos pros componentes (KPIs ricos, panel base, empty rich,
timeline, mensagens, notas). Mantem o pattern visual Melissa.

ESLint: 0 errors da minha mudanca.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 09:31:36 -03:00

11 KiB

Wiki Log

Chronological, append-only record of everything that's happened in this wiki.

Format:

## [YYYY-MM-DD HH:MM] <type> | <title>
<optional detail line>

Types: session, ingest, query, lint, rebuild

Quick access: grep "^## \[" log.md | tail -5 gives you the last 5 entries.


[2026-05-05 23:45] session | Blueprint tabular Melissa + restore pacientes

Touched: none (sem mudança de wiki — handoff em HANDOFF.md) Detalhes: criou blueprints/melissa-table-page-blueprint.md (~530L, 18 seções); refatorou MelissaCadastrosRecebidos pro padrão (DataTable + frozen action + view toggle list/grade); criou MelissaAgendamentosRecebidos nativa (substituindo embed); MelissaPacientes ganhou subheader, sombras, status pills coloridas, email/phone colunas próprias, mobile pencil+popover, view toggle, fix scroll mobile (min-height: 0 em .mp-list), botão Restaurar pra arquivados. Repository: restorePatient novo. PatientsCadastroPage statusOpts: +Arquivado. A66 V2 — user não gostou design, aguarda feedback específico.

[2026-05-06 12:00] session | MelissaCompromissos refator blueprint

Touched: none (aplicacao direta do blueprint existente - sem mudanca de wiki) Detalhes: refator de MelissaCompromissos pro melissa-table-page-blueprint preservando o design do row (color stripe + name+badges + descricao + meta inline). DataTable com 3 colunas (Compromisso flex / Atividade 220px / Acoes frozen 140px com toggle+pencil+trash). Sidebar com 2 grupos de filtros: Status (Ativos verde / Inativos amber) e Tipo (Nativos blue / Meus accent), cada um com Limpar filtro proprio. Grid view com cards (color stripe 28px + toggle topo + footer com edit/trash). Subheader explicativo. View toggle persistido em mc.viewMode.v1. Removeu Popover de actions (drawer mobile cobre). Stats: Total/Ativos/Inativos/Tempo total. ESLint 0 errors. UI nao testada em browser ainda.

[2026-05-06 14:00] session | Melissa 6 Pages blueprint + WhatsApp drawer + commits

Touched: none (sem nova pagina de wiki - aplicacao do blueprint existente) Detalhes: Sprint F entregue. Blueprint tabular aplicado em MelissaCompromissos (row design preservado), MelissaGrupos, MelissaTags, MelissaMedicos, MelissaConversas, MelissaRecorrencias. Dialogs de criar/editar harmonizados (FloatLabel + IconField + section dividers espelhando PatientsCadastroPage Identidade). Dialogs "Pacientes do grupo/tag/medico" com cor primary nos avatares de letras + X de fechar igual .xx-close. ConversationDrawer redesign estilo WhatsApp (avatar primary, bg papel de parede, bolhas com tail simulada, time/status overlay no canto inferior direito, compose pill + send circular verde #00a884). Bug fix em MelissaPacientes: g.cor->g.color em 20 lugares (repository devolve camelCase, template lia PT-BR e cores nao apareciam). 5 commits criados: 957e912, 6d9b36d, 269b531, 98f7252, 15103ed. Working tree limpa. HANDOFF.md atualizado.

Touched: none

[2026-05-08 00:00] session | Melissa cfg-* nativas + temas + cronometro DB

Touched: none

[2026-05-08 13:00] session | MelissaPaciente Fase 2 — Tab Visao Geral completa

Touched: none Detalhes: Reescreveu a aba Visao Geral do MelissaPaciente substituindo o placeholder por uma versao 1:1 do PatientProntuario.vue legado, mas com estilo Melissa nativo.

NOVO: src/features/patients/utils/patientFormatters.js (~165L)

  • Helpers compartilhaveis extraidos do PatientProntuario: parseDateLoose, fmtDateBR, fmtDateTimeBR, fmtCurrency, fmtRelative, sessionDuration, calcAge. STATUS_LABEL/SEVERITY pra sessoes. tagStyle com luminance auto (texto preto/branco baseado em contraste WCAG-ish). Sera usado pelas Fases 3-7 e finalmente pelo PatientProntuario tambem (Fase 8).

EXTENSAO de composables:

  • usePatientSessions ganha computed ultimasAtendidas (top 6 sessoes realizadas/faltadas/canceladas pra Timeline). Refinou totalRealizadas/ Faltas/Canceladas pra usar regex (cobre variantes pt-br).
  • usePatientFinancial ganha computed statusFinanceiro ({ emDia, proxVenc, totalPendente, totalPago, vencidos }) pra alimentar o KPI 02 com info detalhada.

MELISSAPACIENTE.VUE — Visao Geral (Fase 2 done):

  • 4 KPI cards ricos (era 4 simples na Fase 1):
    • 01 Sessoes: realizadas + total + faltas + cancel.
    • 02 Pagamento: emDia/atraso + proxVenc + pendente, com cor adaptativa (vermelho quando atrasado, primary quando ok).
    • 03 Proxima sessao: relative + datetime + modalidade.
    • 04 Mensagens: ultimaMensagem relative + direction + count.
  • Grid 2-col abaixo: Timeline (1.4fr) + coluna direita (1fr) com Mensagens recentes + Notas/observacoes.
  • Timeline com dot colorido por status (verde/vermelho/amarelo) + STATUS_LABEL/SEVERITY do utils + chips modalidade/duracao + nota observacoes inline.
  • Mensagens recentes com border-left colorida (verde=in / azul=out) + meta direction + relative + body 3-line clamp.
  • Notas e observacoes com card papel + label uppercase + icone lock pras internas.
  • Removeu kpiEmAberto/Atrasado nao usados (statusFinanceiro encapsula).

ESLint: 0 errors. Working tree limpa antes do commit.

[2026-05-08 11:30] session | MelissaPaciente Fase 1 (foundation: composables + skeleton + slug)

Touched: none (sem mudanca de wiki) Detalhes: User escolheu "Full rewrite Melissa nativo" pra portar PatientProntuario.vue (3593L Dialog) pro Melissa. Plano em 8 fases (2-8 sao cada tab/wireup, sessao dedicada). Fase 1 entregue:

5 COMPOSABLES NOVOS em src/features/patients/composables/:

  • usePatientDetail.js (108L) — patients + groups + tags via 4 queries (getPatientById, getPatientRelations, getGroupsByIds, getTagsByIds). Espelha 1:1 a logica de loadDetail() do PatientProntuario L893-953.
  • usePatientSessions.js (83L) — agenda_eventos limit 100 ordenado desc + computeds proximaSessao/ultimaSessao/totalSessoes/totalRealizadas/ totalFaltas/totalCanceladas.
  • usePatientFinancial.js (82L) — financial_records (type=receita) limit 100
    • computeds totalRecebido/EmAberto/Atrasado/ultimoPago.
  • usePatientMessages.js (64L) — conversation_messages limit 200 + computeds recentes (top 4)/totalIn/totalOut/ultimaMensagem.
  • usePatientDocuments.js (70L) — documents (deleted_at IS NULL) limit 200
    • computeds total/totalBytes/tiposCount/ultimo.

MELISSAPACIENTE.VUE NOVO (1190L) em src/layout/melissa/:

  • Prefixo CSS .mpa-* (Melissa PAciente). Chrome glass + drawer mobile + right: max(...) >=1024px (mesmo padrao MelissaAgendador/Negocio).
  • Header: avatar + nome + ageLabel + pronomes + status/convenio Tag + risco-elevado pill + actions (Conversar / Editar / Close).
  • Subheader condicional: banner risco elevado.
  • Body 2-col: sidebar 320px (esquerda, drawer no mobile) + main flex 1.
  • Sidebar contém 4 cards: Acoes Rapidas (Conversar/Editar/Lancamento) + Navegacao (7 tabs com icones coloridos) + Sub-nav Perfil (visivel so quando aba Perfil ativa, 6 secoes) + Vinculos (chips de grupos+tags).
  • Main: 7 tabs com placeholders ("Em desenvolvimento — Fase X"). Aba Visao Geral ja mostra 4 KPIs reais via composables (sessoes totais, em aberto, mensagens, documentos).
  • Props :patient-id; emits close/edit/add-financial/open-whatsapp.
  • Watch immediate em props.patientId, dispara loadAll() via Promise.all dos 5 composables.

MELISSALAYOUT.VUE atualizado:

  • Import MelissaPaciente.
  • SECOES.paciente entry novo (label/icon/descricao).
  • 'paciente' adicionado ao MELISSA_NON_CONFIG_SLUGS.
  • Render condicional com :patient-id="String(route.query.id || '')" — navegacao via /melissa/paciente?id=xxx.

NAO ALTERADO: PatientProntuario.vue continua intocado nos 4 callsites (TherapistDashboard, MelissaAgenda, MelissaPacientes, PatientsListPage). Migration acontece nas Fases 2-8. Fase 8 troca os callsites no Melissa.

ESLint: 0 errors da minha mudanca. 2 errors pre-existentes em MelissaLayout (duplicate key 'financeiro' L242, empty block L1130) — nao toquei aquelas linhas. PatientProntuario tem 2 outros pre-existentes. Working tree: MelissaLayout.vue + 6 arquivos novos.

[2026-05-08 09:30] session | Chrome+preview em 7 paginas Melissa (LinkExterno preview novo)

Touched: none (sem mudanca de wiki - aplicacao do pattern existente) Detalhes: Aplicou o chrome right: max(6px, min(50%, calc(100% - 1006px))) em 6 paginas tabulares (CadastrosRecebidos .mcr / Recorrencias .mr / Grupos .mg / Tags .mt / Compromissos .mc / Medicos .mm) - so o tamanho de janela, sem preview, conforme pedido pelo user. Adicionou novo @media (min-width: 1024px) ao final de cada arquivo (cada um nao tinha esse breakpoint ainda).

MelissaLinkExterno (.ml) ganhou tratamento completo: chrome + sidebar restruturada (2-col com aside agora a ESQUERDA, antes era a direita) + mobile drawer pattern (Teleport pro #ml-mobile-drawer-target, transitions, backdrop, botao Menu mobile-only) + 3-way teleport do preview (mobile=topo do main / mid-desktop=bottom da sidebar / wide-desktop>=1340=floating glass). Sidebar agora com Como funciona + Boas praticas (movidos da .ml-side direita)

  • scroll proprio. Sem cfg toggle (nao havia necessidade conceitual).

Componente novo: src/components/cadastro/CadastroExternoPreview.vue (~350L). Phone-frame 260px estilo AgendadorPreview replicando o CadastroPacienteExterno publico: nav (logo Psi + chip verificado), hero (avatar 38px + nome split firstName/lastName em accent + work_description label + clinic name), stepper 4 dots (1 active), card etapa 1 (numero decorativo + tag "Etapa 1 de 4" + title "Sobre voce" + 3 input bars + CTA "Continuar"), powered by. Recebe :token prop e busca info do convite via mesma edge function que o publico (get-intake-invite-info), watch refetcha quando token rotaciona. Sem token ou sem dados, fallbacks pra "Profissional" + iniciais.

ESLint: 0 errors da minha mudanca. 2 errors pre-existentes em MelissaRecorrencias.vue (totalDone unused L235, v-for/v-bind:key L584) - nao toquei aquelas linhas. Working tree: 9 arquivos modificados + src/components/cadastro/ (untracked). Nao commitado, nao testado em browser.

[2026-05-08 07:55] session | MelissaAgendador preview celular teleport 3-way

Touched: none (aplicacao do padrao MelissaNegocio - sem mudanca de wiki) Detalhes: Replicou o padrao floating preview do MelissaNegocio em MelissaAgendador.vue (+145L). Importou AgendadorPreview (phone-frame ja existente do legacy ConfiguracoesAgendadorPage). Adicionou ref isWideDesktop

  • matchMedia('(min-width: 1340px)') + computed previewTarget com 3-way branching: mobile -> #mag-main-preview-target (topo do main, acima de tudo, DIFERENTE do MelissaNegocio que vai pro drawer); mid-desktop (1024-1339) -> #mag-sidebar-preview-target (dentro da sidebar apos Status/Resumos); wide-desktop (>=1340) -> #mag-floating-preview-target (painel flutuante glass fora do fake dialog, 320px de largura, ancorado a +14px do right edge da .mag-page). Adicionou regra right: max(6px, min(50%, calc(100% - 1006px))) em .mag-page no @media >=1024px (necessario pra abrir espaco a direita pro floating). CSS: .mag-floating-preview com glass igual ao fake dialog; placeholders com display:contents; hide rules por breakpoint. Card de preview usa mag-w--side e perde fundo/borda no floating (glass do painel ja faz papel). ESLint 0 errors. Working tree: src/auto-imports.d.ts (auto-gerado) + MelissaAgendador.vue. Nao commitado, nao testado em browser ainda.