Melissa: deep-link via URL + Pacientes (WIP) + cronometro reset

Roteamento por URL (substitui o ref local secaoAberta):
- routes.misc.js: rota vira /preview/melissa/:secao? — param opcional
- MelissaLayout.vue: secaoAberta agora e computed do route.params.secao,
  validado contra SECOES (chave invalida -> null). abrirSecao/fecharSecao
  fazem router.push em vez de mutar ref. Habilita back/forward, refresh
  e deep-link tipo /preview/melissa/agenda.

Pagina Pacientes (WIP, ainda nao wireada no slot do Layout):
- src/layout/melissa/MelissaPacientes.vue (novo, ~? linhas) — fullscreen
  3-col espelhando MelissaAgenda: aside esquerda com filtros (status /
  grupos / tags), lista central com cards + busca, quick view direita
  com KPIs do paciente selecionado + acoes.
- Carrega pacientes (todos os status), grupos/tags do tenant, vinculos
  patient_groups + patient_tags + session counts em paralelo.
- Integra PatientProntuario (overlay), PatientCadastroDialog,
  PatientCreatePopover + ComponentCadastroRapido, e
  conversationDrawerStore (acao WhatsApp da quick view).

useMelissaPacientes ganha opcao { onlyActive }:
- default true (compat com cards do resumo / cronometro / eventos hoje
  — so faz sentido com ativos)
- false retorna Ativo + Inativo + Arquivado, pra uso na pagina nova
- select agora inclui data_nascimento (necessario pros KPIs da quick view)

Cronometro: zera ao parar — terminou a sessao, fica pronto pra proxima
sem precisar reabrir o popover.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-04-28 17:12:15 -03:00
parent 7b67bd083a
commit 06bce11e1c
5 changed files with 1755 additions and 8 deletions
+4 -1
View File
@@ -25,8 +25,11 @@ export default {
// Sandbox do layout Melissa (Direção B — lockscreen-style)
// Standalone, sem auth, sem AppLayout. Promovido de /preview/dashboard-win11.
// Param `:secao?` opcional reflete a seção aberta na URL (agenda,
// pacientes, conversas, etc.) — permite deep-link, back/forward,
// refresh preservando estado.
{
path: 'preview/melissa',
path: 'preview/melissa/:secao?',
name: 'PreviewMelissa',
component: () => import('@/layout/melissa/MelissaLayout.vue')
},