f2fd2e4722e3ab86603d9faf0e205b833d6a83de
6 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
532204708e |
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> |
||
|
|
387043b3b2 |
MelissaFinanceiro + MelissaFinanceiroLancamentos nativas
Promove '/melissa/financeiro' e '/melissa/financeiro-lancamentos' do
embed pra paginas nativas, eliminando o triplo header.
MelissaFinanceiro (dashboard, ~700L):
- Layout 1-col empilhado (sem sidebar — so cards de resumo)
- Header com ícone wallet + titulo + badge mes corrente +
botao "Ver lancamentos" + Recarregar + Voltar
- Subheader explicativo
- 4 cards empilhados:
1. Quick stats grid (Recebido verde / Pendente amber / Vencido red /
Despesas neutral)
2. Card Grafico Receita x Despesa (Chart.js bar, 6 meses)
3. Card Projecao de Caixa (cobrancas em aberto, proximos 6 meses
com receita/despesa/saldo + count badge)
4. Card Ultimos lancamentos (DataTable 5 mais recentes)
- Click "Ver lancamentos" / "Ver todos" navega pra
/melissa/financeiro-lancamentos
MelissaFinanceiroLancamentos (lista, ~1100L):
- Blueprint tabular Melissa completo
- Header com botao "Lancamento manual" + Recarregar + Voltar
- Subheader
- Sidebar com __scroll + __footer fixo:
- Stats (Pendente amber / Vencido red / Pago verde / Total)
- Filtro Status (button list: Pendentes amber / Vencidos red /
Pagos green / Cancelados neutral) + X inline
- Filtro Tipo (Receita green / Despesa red) + X inline
- Filtro Paciente (Select com filter + identification_color dot)
+ X inline
- Filtro Periodo (DatePicker range vencimento) + X inline
- Footer fixo "Limpar filtros" (Transition fade+collapse)
- Main: DataTable lazy + paginator com 7 colunas (Paciente +
avatar / Sessao / Tipo / Valor + desconto / Vencimento / Status /
Acoes). Row overdue com bg vermelho tinted.
- Acoes por status:
- pending/overdue: botoes "Receber" (abre dialog pagamento) +
"Cancelar" (Confirm)
- paid: badge "metodo + data"
- cancelled: travessao
- Mobile: sidebar vira topo (max-height 50vh)
Dialogs preservados:
- Registrar pagamento (5 metodos com icones: pix/deposito/dinheiro/
cartao/convenio)
- Lancamento manual (Paciente opcional + Valor + Desconto + Valor
final read-only + Data vencimento + Metodo opcional + Obs)
Logica preservada do composable useFinancialRecords + RPCs
(get_financial_summary, list_financial_records, view
v_cashflow_projection, mark_as_paid, cancel_record,
create_manual_record).
FinanceiroDashboardPage e FinanceiroPage continuam intactas no
layout Rail (/admin/financeiro, /therapist/financeiro).
Wire-up: imports + render blocks + 'financeiro' e
'financeiro-lancamentos' em NON_CONFIG_SLUGS; removidos de
MELISSA_EMBED_KEYS. Entries removidos do EMBED_MAP em MelissaEmbed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|
|
f9145442ae |
MelissaNotificacoes nativa (mesmo design do LinkExterno)
Promove '/melissa/notificacoes' do embed pra pagina nativa Melissa,
eliminando o triplo header (layout + embed + hero sticky da
NotificationsHistoryPage interna).
Layout 2-col seguindo o mesmo blueprint Melissa:
- Header: titulo + count badge + pill amber "X nao lidas" quando
unreadCount > 0 + botao "Marcar todas lidas" (visivel se ha unread)
+ Recarregar + Voltar.
- Subheader explicativo.
- Sidebar (~280px) com __scroll + __footer fixo:
- Stat card (Total / Nao lidas amber / Lidas verde / Arquivadas)
- Filter card "Status" (button list: Todas / Nao lidas / Lidas /
Arquivadas) + X inline pra voltar pro padrao 'all'
- Filter card "Tipo" (button list: Agendamento red / Novo paciente
sky / Recorrencia amber / Sessao orange / Mensagem emerald —
cores espelham typeMap) + X inline
- Footer fixo "Limpar filtros" (Transition fade+collapse) — zera
busca + tipo + reseta status pra 'all'
- Main: toolbar com busca por titulo/descricao + lista de
notificacoes com row design preservado:
- Border-left colorido por tipo (--mn-row-color via inline style)
- Icone do tipo + avatar circular primary com iniciais
- Body: titulo + type pill colorido + arquivada pill (se aplicavel)
+ detail (2 lines clamp) + tempo relativo
- Hover actions: marcar lida/nao lida + arquivar/desarquivar +
remover (com ConfirmDialog)
- is-unread: bg primary tinted; is-archived: opacity 0.7
- Mobile (<1024px): sidebar vira topo (max-height 50vh), main fica
abaixo, actions sempre visiveis (sem hover).
Logica preservada da NotificationsHistoryPage:
- load() do supabase ('notifications' eq owner_id, limit 500)
- markRead/markUnread/archive/unarchive/remove + sync notifStore
- markAllRead em batch
- handleRowClick: inbound_message abre conversationDrawer (paciente
ou anonimo via from_number); outras com deeplink fazem
router.push (e fecham a Melissa pra navegar pra rota Rail);
todas marcam como lida automaticamente.
Wire-up MelissaLayout: import + render block + 'notificacoes'
literal em NON_CONFIG_SLUGS; removido de MELISSA_EMBED_KEYS. Entry
removido do EMBED_MAP no MelissaEmbed.
NotificationsHistoryPage continua intacta — segue funcionando no
layout Rail (/therapist/notifications, /admin/notificacoes).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|
|
ee084c2918 |
Pacientes restore unificado + MelissaLinkExterno nativa
Trabalho de continuidade pós-blueprint: A) Botao "Restaurar" visivel direto na linha da PatientsListPage (layout Rail) quando paciente.status === 'Arquivado' — atalho pra usuarios que filtram por arquivados sem precisar abrir o menu de "..." (que ja tinha "Reativar" via PatientActionMenu). Icone pi-undo + label "Restaurar" + tooltip + click chama reactivatePatient do usePatientLifecycle. Aplicado tanto no DataTable desktop quanto nos cards mobile. B) Consolidacao: removido restorePatient do patientsRepository (era duplicado com reactivatePatient do usePatientLifecycle). MelissaPacientes agora consome reactivatePatient direto, fonte unica de verdade pra toda transicao de status pra 'Ativo'. C) MelissaLinkExterno (nova pagina nativa Melissa). Substitui o embed via MelissaEmbed que duplicava 3 headers (layout + embed + hero sticky da pagina interna). Lógica preservada (RPC issue_patient_invite + rotate_patient_invite_token_v2 + copy/openLink), so o chrome muda pra casar com o blueprint Melissa: 1 header com status pill (Link ativo/Gerando) + botao "Gerar novo link" + Recarregar + Voltar; subheader explicativo; body 2-col (esquerda card "Seu link publico" com InputGroup + 2 CTAs grandes + card "Mensagem pronta"; direita cards "Como funciona" + "Boas praticas"); mobile vira 1-col. PatientsExternalLinkPage continua intacta — segue funcionando no layout Rail. Wire-up no MelissaLayout: import + render block + 'link-externo' literal em NON_CONFIG_SLUGS; removido de MELISSA_EMBED_KEYS. Entry removido do EMBED_MAP no MelissaEmbed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|
|
269b531158 |
Melissa: blueprint tabular + Cadastros/Agendamentos/Pacientes + restore
Sprint E (05-05). Blueprint tabular oficial pras paginas Melissa de
listagem (DataTable + sidebar com stats e filtros coloridos, view
toggle list/grade, subheader explicativo, mobile pencil+popover).
Novo arquivo:
- blueprints/melissa-table-page-blueprint.md (~530L, 18 secoes) —
referencia canonica MelissaCadastrosRecebidos
Paginas refatoradas/criadas:
- MelissaCadastrosRecebidos: refator pra blueprint (DataTable + frozen
action + view toggle + subheader)
- MelissaAgendamentosRecebidos (NOVO): substitui o embed via
MelissaEmbed; 4 status coloridos (Pendente/Autorizado/Convertido/
Recusado), 3 acoes condicionais (Recusar/Autorizar/Converter em
sessao), wired com AgendaEventDialog
- MelissaPacientes: refator parcial (subheader, sombras, status pills
coloridas, email/phone colunas proprias, mobile pencil+popover, fix
scroll mobile com min-height:0 na .mp-list, view toggle persistido,
tags/grupos color fix g.cor->g.color, restore de arquivados)
- MelissaEmbed: agendamentos-recebidos removido do EMBED_MAP
- MelissaLayout: wire-up MelissaAgendamentosRecebidos nativo
- composables/useMelissaPacientes + useMelissaPacientesAside ajustes
Restore de pacientes arquivados:
- patientsRepository: novo restorePatient(id, { tenantId })
- PatientsCadastroPage statusOpts: +Arquivado (fecha gap de
inconsistencia ao editar paciente arquivado)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|
|
86311ef305 |
Melissa: hub Configuracoes + Embed + 9 Pages novas + dialog blueprint dark
Sprints 04-29 + 04-30 acumuladas. - MelissaConfiguracoes: hub 2-col com 6 grupos (Layout/Conta/Agenda/ Financeiro/WhatsApp/Sistema), tudo embedado via MelissaEmbed. - MelissaEmbed: wrapper generico que injeta layout-variant=melissa e remove cromos pra reaproveitar Pages tradicionais. - 9 Melissa Pages novas: CadastrosRecebidos, Compromissos, Configuracoes, Conversas, Embed, Grupos, Medicos, Recorrencias, Tags. - Dialog blueprint atualizado: bg-gray-100 (hardcoded light) -> bg-[var(--surface-ground)] (tema-aware). 22 dialogs migrados em 9 arquivos. Anti-pattern documentado. - PatientsCadastroPage: bug fix dropdown Grupo (optionLabel nome->name), toggle vertical/abas com persist localStorage, sticky margin-top. - Surface picker no popover do MelissaLayout (8 swatches). - useTopbarPlanMenu, useMelissaWhatsapp, useMelissaPacientesAside novos. - Migration: status agenda remarcado/confirmado. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |