Adicionada compressão Brotli/Gzip, auto-import de Vue e PrimeVue, e análise visual do bundle para otimização de produção e Remove AppLayout duplicado de cada área (therapist, admin, configuracoes, account, supervisor, billing, features) e consolida sob um único pai no router/index.js. Adiciona RouterPassthrough para grupos de rota sem layout intermediário. Remove debug ativo (console.trace em router.push e queries Supabase em todo watch de rota) que degradava performance para todos os usuários.

This commit is contained in:
Leonardo
2026-03-25 12:14:43 -03:00
parent bfe148ef12
commit 0658e2e9bf
18 changed files with 979 additions and 991 deletions
+84 -92
View File
@@ -14,11 +14,13 @@
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
import AppLayout from '@/layout/AppLayout.vue';
const configuracoesRoutes = {
path: '/configuracoes',
component: AppLayout,
// ConfiguracoesPage já tem <router-view> próprio — serve de layout intermediário.
// Não precisa de RouterPassthrough.
export default {
path: 'configuracoes',
component: () => import('@/layout/ConfiguracoesPage.vue'),
redirect: { name: 'ConfiguracoesAgenda' },
meta: {
requiresAuth: true,
@@ -27,94 +29,84 @@ const configuracoesRoutes = {
children: [
{
path: '',
component: () => import('@/layout/ConfiguracoesPage.vue'),
redirect: { name: 'ConfiguracoesAgenda' },
children: [
{
path: 'agenda',
name: 'ConfiguracoesAgenda',
component: () => import('@/layout/configuracoes/ConfiguracoesAgendaPage.vue')
},
{
path: 'bloqueios',
name: 'ConfiguracoesBloqueios',
component: () => import('@/layout/configuracoes/BloqueiosPage.vue')
},
{
path: 'agendador',
name: 'ConfiguracoesAgendador',
component: () => import('@/layout/configuracoes/ConfiguracoesAgendadorPage.vue')
},
{
path: 'pagamento',
name: 'ConfiguracoesPagamento',
component: () => import('@/layout/configuracoes/ConfiguracoesPagamentoPage.vue')
},
{
path: 'precificacao',
name: 'ConfiguracoesPrecificacao',
component: () => import('@/layout/configuracoes/ConfiguracoesPrecificacaoPage.vue')
},
{
path: 'descontos',
name: 'ConfiguracoesDescontos',
component: () => import('@/layout/configuracoes/ConfiguracoesDescontosPage.vue')
},
{
path: 'excecoes-financeiras',
name: 'ConfiguracoesExcecoesFinanceiras',
component: () => import('@/layout/configuracoes/ConfiguracoesExcecoesFinanceirasPage.vue')
},
{
path: 'convenios',
name: 'ConfiguracoesConvenios',
component: () => import('@/layout/configuracoes/ConfiguracoesConveniosPage.vue')
},
{
path: 'email-templates',
name: 'ConfiguracoesEmailTemplates',
component: () => import('@/layout/configuracoes/ConfiguracoesEmailTemplatesPage.vue')
},
{
path: 'empresa',
name: 'ConfiguracoesMinhaEmpresa',
component: () => import('@/layout/configuracoes/ConfiguracoesMinhaEmpresaPage.vue')
},
{
path: 'canais',
name: 'ConfiguracoesCanais',
component: () => import('@/layout/configuracoes/ConfiguracoesCanaisPage.vue')
},
{
path: 'whatsapp',
name: 'ConfiguracoesWhatsapp',
component: () => import('@/layout/configuracoes/ConfiguracoesWhatsappPage.vue')
},
{
path: 'whatsapp-twilio',
name: 'ConfiguracoesWhatsappTwilio',
component: () => import('@/layout/configuracoes/ConfiguracoesTwilioWhatsappPage.vue')
},
{
path: 'sms',
name: 'ConfiguracoesSms',
component: () => import('@/layout/configuracoes/ConfiguracoesSmsPage.vue')
},
{
path: 'sms-canal',
name: 'ConfiguracoesSmsCanal',
component: () => import('@/views/pages/notifications/SmsChannelSetupPage.vue')
},
{
path: 'recursos-extras',
name: 'ConfiguracoesRecursosExtras',
component: () => import('@/layout/configuracoes/ConfiguracoesRecursosExtrasPage.vue')
}
]
path: 'agenda',
name: 'ConfiguracoesAgenda',
component: () => import('@/layout/configuracoes/ConfiguracoesAgendaPage.vue')
},
{
path: 'bloqueios',
name: 'ConfiguracoesBloqueios',
component: () => import('@/layout/configuracoes/BloqueiosPage.vue')
},
{
path: 'agendador',
name: 'ConfiguracoesAgendador',
component: () => import('@/layout/configuracoes/ConfiguracoesAgendadorPage.vue')
},
{
path: 'pagamento',
name: 'ConfiguracoesPagamento',
component: () => import('@/layout/configuracoes/ConfiguracoesPagamentoPage.vue')
},
{
path: 'precificacao',
name: 'ConfiguracoesPrecificacao',
component: () => import('@/layout/configuracoes/ConfiguracoesPrecificacaoPage.vue')
},
{
path: 'descontos',
name: 'ConfiguracoesDescontos',
component: () => import('@/layout/configuracoes/ConfiguracoesDescontosPage.vue')
},
{
path: 'excecoes-financeiras',
name: 'ConfiguracoesExcecoesFinanceiras',
component: () => import('@/layout/configuracoes/ConfiguracoesExcecoesFinanceirasPage.vue')
},
{
path: 'convenios',
name: 'ConfiguracoesConvenios',
component: () => import('@/layout/configuracoes/ConfiguracoesConveniosPage.vue')
},
{
path: 'email-templates',
name: 'ConfiguracoesEmailTemplates',
component: () => import('@/layout/configuracoes/ConfiguracoesEmailTemplatesPage.vue')
},
{
path: 'empresa',
name: 'ConfiguracoesMinhaEmpresa',
component: () => import('@/layout/configuracoes/ConfiguracoesMinhaEmpresaPage.vue')
},
{
path: 'canais',
name: 'ConfiguracoesCanais',
component: () => import('@/layout/configuracoes/ConfiguracoesCanaisPage.vue')
},
{
path: 'whatsapp',
name: 'ConfiguracoesWhatsapp',
component: () => import('@/layout/configuracoes/ConfiguracoesWhatsappPage.vue')
},
{
path: 'whatsapp-twilio',
name: 'ConfiguracoesWhatsappTwilio',
component: () => import('@/layout/configuracoes/ConfiguracoesTwilioWhatsappPage.vue')
},
{
path: 'sms',
name: 'ConfiguracoesSms',
component: () => import('@/layout/configuracoes/ConfiguracoesSmsPage.vue')
},
{
path: 'sms-canal',
name: 'ConfiguracoesSmsCanal',
component: () => import('@/views/pages/notifications/SmsChannelSetupPage.vue')
},
{
path: 'recursos-extras',
name: 'ConfiguracoesRecursosExtras',
component: () => import('@/layout/configuracoes/ConfiguracoesRecursosExtrasPage.vue')
}
]
};
export default configuracoesRoutes;