Documentos + Templates + Relatorios nativas (so resta online-scheduling)

Promove '/melissa/documentos', '/melissa/documentos-templates' e
'/melissa/relatorios' do embed pra paginas nativas Melissa.

MelissaDocumentos (~700L):
- Sidebar com stats (Total / Tamanho / Tipos / Pendentes amber) +
  filtro Tipo (Select com TIPOS_DOCUMENTO 11 opcoes) + filtro Tag
  (Select dinamico com usedTags) + footer fixo Limpar filtros
- Main: toolbar busca + lista de DocumentCard (componente reusado)
- Modo "todos os pacientes" — patientId null. Upload/Gerar exigem
  abrir paciente especifico no prontuario (botoes nao aparecem).
- Dialogs reusados: PreviewDialog + SignatureDialog + ShareDialog +
  ConfirmDialog (delete).

MelissaDocumentosTemplates (~700L):
- Layout 1-col empilhado, 3 views: list / create / edit
- Header com botao "Novo template" (list) ou "Cancelar/Salvar"
  (create/edit) + back button
- 2 sections distintas: "Templates padrao do sistema" (info-blue,
  click duplica) e "Meus templates" (accent, click edita + menu de
  acoes Duplicar/Editar/Desativar)
- Cards em grid responsivo (auto-fill 280px), com badge "padrao"/
  "inativo" e count de variaveis
- DocumentTemplateEditor reusado pra create/edit
- ConfirmDialog reusado

MelissaRelatorios (~1100L):
- Sidebar com 6 stats (Total / Realizadas verde / Faltas red /
  Canceladas warn / Agendadas info / Taxa realizacao) + filtro
  Periodo (button list: semana/mes/3meses/6meses) + filtro Status
  (Realizadas/Faltas/Canceladas/Agendadas com cores) + footer
  Limpar filtros
- Main: card Grafico (Chart.js stacked bar agrupado por
  semana/mes) + card DataTable de sessoes filtradas (Data/Hora
  sortable / Paciente / Sessao / Modalidade / Status)
- Empty states distintos: sem sessoes no periodo / sem resultado
  do filtro

Logica preservada das paginas originais. Composables/services nao
foram tocados — apenas adaptacao do chrome pra blueprint Melissa.

DocumentsListPage / DocumentTemplatesPage / RelatoriosPage
continuam intactas no layout Rail (/therapist/*, /admin/*).

Wire-up MelissaLayout: imports + 3 render blocks + 'documentos',
'documentos-templates', 'relatorios' literais em NON_CONFIG_SLUGS;
removidos de MELISSA_EMBED_KEYS. Entries removidos do EMBED_MAP em
MelissaEmbed (resta apenas 'online-scheduling').

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-06 10:14:16 -03:00
parent 387043b3b2
commit 532204708e
5 changed files with 2450 additions and 31 deletions
+3 -28
View File
@@ -29,39 +29,14 @@ const emit = defineEmits(['close']);
// Mantido neste arquivo (não no MelissaLayout) pra que adicionar uma
// nova page aqui não exija mexer no parent.
const EMBED_MAP = {
// 'financeiro' e 'financeiro-lancamentos' foram promovidos pra páginas
// nativas (MelissaFinanceiro / MelissaFinanceiroLancamentos).
'documentos': {
label: 'Documentos',
desc: 'Documentos clínicos do tenant — geração, edição e histórico.',
icon: 'pi pi-file',
comp: defineAsyncComponent(() => import('@/features/documents/DocumentsListPage.vue'))
},
'documentos-templates': {
label: 'Templates de documentos',
desc: 'Modelos reutilizáveis pra prontuários e relatórios.',
icon: 'pi pi-file-edit',
comp: defineAsyncComponent(() => import('@/features/documents/DocumentTemplatesPage.vue'))
},
// 'agendamentos-recebidos' migrou pra Melissa Page nativa
// (MelissaAgendamentosRecebidos.vue) — segue o blueprint
// melissa-table-page-blueprint.md. Removido do embed map.
// Quase todas as pages foram promovidas pra Melissa nativas (eliminando
// o triplo-header). Resta apenas 'online-scheduling' por enquanto.
'online-scheduling': {
label: 'Agendador online',
desc: 'Configure o link público pra pacientes solicitarem horários.',
icon: 'pi pi-calendar-clock',
comp: defineAsyncComponent(() => import('@/views/pages/therapist/OnlineSchedulingPage.vue'))
},
'relatorios': {
label: 'Relatórios',
desc: 'Indicadores e relatórios do tenant — clínico e financeiro.',
icon: 'pi pi-chart-bar',
comp: defineAsyncComponent(() => import('@/views/pages/therapist/RelatoriosPage.vue'))
},
// 'notificacoes' e 'link-externo' foram promovidos pra páginas nativas
// Melissa (MelissaNotificacoes / MelissaLinkExterno) — eliminado o
// triplo header que aparecia no embed. Wire-up agora no MelissaLayout.vue,
// não passam mais por aqui.
}
};
const info = computed(() => EMBED_MAP[props.secaoRota] || null);