75e67eae5d
Templates de documentos sao "setup", nao operacao diaria — deveriam viver em Configuracoes, nao no menu de Documentos do paciente. Mudancas: 1. Melissa — melissaConfigGrupos.js ganha grupo "Documentos" com 1 item "Modelos de documentos" -> slug `documentos-templates` (pagina nativa MelissaDocumentosTemplates ja existe + ja esta wired no MelissaLayout linha 2896). 2. Rail/Classic — routes.configs.js ganha rota /configuracoes/documentos/templates (name=ConfiguracoesDocumentos Templates) apontando pro mesmo DocumentTemplatesPage.vue. 3. Rotas antigas removidas — routes.therapist.js e routes.clinic.js nao tem mais /documents/templates nem nomes de rota therapist-documents-templates / admin-documents-templates. URLs antigas dao 404 (decisao do user — limpa). 4. ConfiguracoesPage (sidebar Rail/Classic) ganha grupo "Documentos" antes do "Empresa & Plataforma" com item "Modelos de documentos". 5. Menus de pacientes (therapist.menu + clinic.menu) NAO tem mais "Templates" — caminho de acesso e Configuracoes. 6. pagesIndex.js (busca global) atualizado: novo path, novos keywords (recibo, atestado, laudo, tcle, lgpd, consent), roles ['therapist','admin']. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
121 lines
7.2 KiB
JavaScript
121 lines
7.2 KiB
JavaScript
/*
|
|
* melissaConfigGrupos — fonte unica do catalogo de configs Melissa.
|
|
*
|
|
* Usado por:
|
|
* - MelissaConfigSidebar (renderiza o accordion + items)
|
|
* - MelissaLayout (decide quando mostrar o sidebar de config)
|
|
* - MelissaConfiguracoes (re-usa o mesmo catalogo via componente)
|
|
*
|
|
* Cada item tem `key` que e o slug usado em /melissa/<slug>. Se a key
|
|
* comeca com 'cfg-', a pagina e embed (renderizada pelo
|
|
* MelissaConfiguracoes via COMPONENT_MAP). Se e slug "limpo" (perfil,
|
|
* plano, agenda-config, pagamento, etc), e pagina nativa Melissa.
|
|
*/
|
|
export const MELISSA_CONFIG_GRUPOS = [
|
|
// "Layout Melissa" (aparencia) removido — esses controles
|
|
// (tema, cor primaria, surface, fundo, relogio, cronometro)
|
|
// sao acessados pela primeira pagina (resumo), pra que o user
|
|
// veja as alteracoes em tempo real no proprio canvas.
|
|
{
|
|
key: 'conta',
|
|
label: 'Conta',
|
|
desc: 'Perfil, plano, negócio e segurança.',
|
|
icon: 'pi pi-user',
|
|
items: [
|
|
{ key: 'perfil', label: 'Meu Perfil', desc: 'Identidade, contato, bio, redes — gamificação no aside.', icon: 'pi pi-user' },
|
|
{ key: 'plano', label: 'Meu Plano', desc: 'Assinatura, recursos liberados e histórico de mudanças.', icon: 'pi pi-credit-card' },
|
|
{ key: 'negocio', label: 'Meu Negócio', desc: 'Identidade, fiscal, endereço, contato, redes.', icon: 'pi pi-briefcase' },
|
|
{ key: 'seguranca', label: 'Segurança', desc: 'Trocar senha + boas práticas + estado da sessão.', icon: 'pi pi-shield' }
|
|
]
|
|
},
|
|
{
|
|
key: 'agenda',
|
|
label: 'Agenda',
|
|
desc: 'Horários, bloqueios e agendador público.',
|
|
icon: 'pi pi-calendar',
|
|
items: [
|
|
{ key: 'agenda-config', label: 'Configurações da Agenda', desc: 'Jornada (dias e horários), ritmo das sessões e agendamento online.', icon: 'pi pi-calendar' },
|
|
{ key: 'bloqueios', label: 'Bloqueios e Feriados', desc: 'Feriados nacionais (auto), municipais e bloqueios manuais.', icon: 'pi pi-ban' },
|
|
{ key: 'online-scheduling', label: 'Agendador Online', desc: 'Link público, identidade visual, fluxo, pagamento e textos.', icon: 'pi pi-calendar-clock' }
|
|
]
|
|
},
|
|
{
|
|
key: 'financeiro',
|
|
label: 'Financeiro',
|
|
desc: 'Formas de pagamento, valores, descontos e convênios.',
|
|
icon: 'pi pi-wallet',
|
|
items: [
|
|
{ key: 'pagamento', label: 'Formas de Pagamento', desc: 'Pix, depósito, dinheiro, cartão e convênio.', icon: 'pi pi-wallet' },
|
|
{ key: 'cfg-precificacao', label: 'Precificação', desc: 'Valor padrão da sessão e preços por tipo de compromisso.', icon: 'pi pi-tag' },
|
|
{ key: 'cfg-descontos', label: 'Descontos por Paciente', desc: 'Descontos recorrentes aplicados automaticamente.', icon: 'pi pi-percentage' },
|
|
{ key: 'cfg-excecoes', label: 'Exceções Financeiras', desc: 'O que cobrar em faltas, cancelamentos e situações excepcionais.', icon: 'pi pi-exclamation-triangle' },
|
|
{ key: 'cfg-convenios', label: 'Convênios', desc: 'Cadastre os convênios que você atende e seus valores.', icon: 'pi pi-id-card' }
|
|
]
|
|
},
|
|
{
|
|
key: 'whatsapp',
|
|
label: 'WhatsApp & Conversas',
|
|
desc: 'Canal, tags, auto-reply, lembretes e créditos.',
|
|
icon: 'pi pi-whatsapp',
|
|
items: [
|
|
{ key: 'cfg-wa', label: 'Canal WhatsApp', desc: 'Escolha o canal (oficial AgenciaPSI ou pessoal) e configure a integração.', icon: 'pi pi-whatsapp' },
|
|
{ key: 'cfg-wa-templates', label: 'Templates WhatsApp', desc: 'Personalize os textos enviados ou volte ao padrão da plataforma.', icon: 'pi pi-file-edit' },
|
|
{ key: 'cfg-conversas-tags', label: 'Tags de Conversa', desc: 'Etiquetas custom pra classificar threads no CRM (urgente, remarcação…).', icon: 'pi pi-tag' },
|
|
{ key: 'cfg-conversas-autoreply', label: 'Auto-reply WhatsApp', desc: 'Resposta automática quando paciente escreve fora do horário.', icon: 'pi pi-reply' },
|
|
{ key: 'cfg-conversas-optouts', label: 'Opt-outs (LGPD)', desc: 'Números que pediram pra não receber mensagens. Direito de oposição LGPD.', icon: 'pi pi-ban' },
|
|
{ key: 'cfg-conversas-sla', label: 'SLA de resposta', desc: 'Tempo máximo pra responder. Alerta quando estourar.', icon: 'pi pi-stopwatch' },
|
|
{ key: 'cfg-conversas-bots', label: 'Bot de triagem', desc: 'Coleta nome e motivo via WhatsApp antes do fluxo humano.', icon: 'pi pi-android' },
|
|
{ key: 'cfg-lembretes', label: 'Lembretes de Sessão', desc: 'WhatsApp automático 24h e 2h antes das sessões agendadas.', icon: 'pi pi-bell' },
|
|
{ key: 'cfg-creditos-wa', label: 'Créditos WhatsApp', desc: 'Compre pacotes de mensagens, veja saldo e extrato.', icon: 'pi pi-credit-card' }
|
|
]
|
|
},
|
|
{
|
|
key: 'comunicacao',
|
|
label: 'Comunicação',
|
|
desc: 'SMS e templates de e-mail enviados aos pacientes.',
|
|
icon: 'pi pi-send',
|
|
items: [
|
|
{ key: 'cfg-sms', label: 'SMS', desc: 'Gerencie créditos SMS e personalize as mensagens enviadas.', icon: 'pi pi-comment' },
|
|
{ key: 'cfg-email-templates', label: 'Templates de E-mail', desc: 'Personalize os e-mails enviados aos pacientes.', icon: 'pi pi-envelope' }
|
|
]
|
|
},
|
|
{
|
|
key: 'documentos',
|
|
label: 'Documentos',
|
|
desc: 'Modelos, assinaturas e configurações da geração de documentos.',
|
|
icon: 'pi pi-file',
|
|
items: [
|
|
{ key: 'documentos-templates', label: 'Modelos de documentos', desc: 'Cadastre e edite templates de recibos, atestados, laudos, TCLE, LGPD e mais.', icon: 'pi pi-file-edit' }
|
|
]
|
|
},
|
|
{
|
|
key: 'plataforma',
|
|
label: 'Plataforma',
|
|
desc: 'Recursos extras e auditoria.',
|
|
icon: 'pi pi-server',
|
|
items: [
|
|
{ key: 'cfg-recursos-extras', label: 'Recursos Extras', desc: 'Amplíe as funcionalidades com recursos adicionais.', icon: 'pi pi-box' },
|
|
{ key: 'cfg-recursos-extras-extrato', label: 'Extrato de Recursos Extras', desc: 'Histórico de débitos e créditos exportável (CSV/PDF).', icon: 'pi pi-list' },
|
|
{ key: 'cfg-auditoria', label: 'Auditoria', desc: 'Registro imutável de operações (LGPD Art. 37).', icon: 'pi pi-shield' }
|
|
]
|
|
}
|
|
];
|
|
|
|
// Set de slugs que sao "config routes" — mostram o sidebar de config
|
|
export const MELISSA_CONFIG_SLUGS = new Set(
|
|
MELISSA_CONFIG_GRUPOS.flatMap((g) => g.items.map((i) => i.key))
|
|
);
|
|
|
|
export function isMelissaConfigSlug(slug) {
|
|
return MELISSA_CONFIG_SLUGS.has(slug);
|
|
}
|
|
|
|
// Acha o item por slug (pra destacar ativo)
|
|
export function findMelissaConfigItem(slug) {
|
|
for (const g of MELISSA_CONFIG_GRUPOS) {
|
|
const item = g.items.find((i) => i.key === slug);
|
|
if (item) return { grupo: g, item };
|
|
}
|
|
return null;
|
|
}
|