MelissaAgendaConfig: pagina nativa 2-col com Jornada + Ritmo + Online
Tira "Agenda" do MelissaConfiguracoes (era embed cfg-agenda -> ConfiguracoesAgendaPage.vue, 1714 linhas). Cria a /melissa/agenda-config nativa Melissa. Sidebar (mac-side): - Card "Status do setup" — 3 status items clicaveis (Jornada/Ritmo/ Online) com icone verde se OK ou amber se pendente + resumo dinamico + chevron pra ancora - Card "Como funciona" — FAQ 3-passos (1/2/3) explicando o fluxo Main (1-col stacked, denso demais pra 50/50): - Jornada: fuso (timezone Select) + dias da semana (chips toggleaveis) + modo igual/diferente (toggle bonito) + horarios (DatePickers timeOnly, weekdays + sab + dom separados em modo igual; por dia em modo diferente) + pausas (PausasChipsEditor reaproveitado, globais ou por dia) - Ritmo: 5 presets de duracao (30/45/50/60/90 min com gap) + custom collapse com 2 DatePickers (duracao + intervalo) - Online: aviso de slots orfaos (dias com slots mas sem jornada) + toggle ativo + tabs de dia + periodos quick actions (Manha/Tarde/ Noite/Todos/Limpar) + slot chips individuais + info contagem Cada card com Salvar proprio (saveJornada/saveRitmo/saveOnline). DB: agenda_configuracoes + agenda_regras_semanais + agenda_online_slots. Logica de igual/diferente com snapshot preservation, geracao de slots respeitando jornada+pausas, limpeza automatica de slots orfaos ao salvar jornada — tudo espelhado do original. SKIPPED: FullCalendar preview (visite /melissa/agenda real). Wire-up: - MelissaLayout: import + render `<MelissaAgendaConfig>` quando secaoAberta === 'agenda-config' - 'agenda-config' adicionado em SECOES + MELISSA_NON_CONFIG_SLUGS - MelissaConfiguracoes: cfg-agenda removido de COMPONENT_MAP + grupo Agenda inteiro removido (Agenda/Bloqueios/Agendador todos viraram nativos agora) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -71,7 +71,7 @@ function secaoToRota(key) {
|
||||
// Usa defineAsyncComponent pra lazy-load — só carrega quando o user clica.
|
||||
// Mantém o user dentro do overlay Melissa em vez de navegar pra fora.
|
||||
const COMPONENT_MAP = {
|
||||
'cfg-agenda': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesAgendaPage.vue')),
|
||||
// 'cfg-agenda' removido — virou pagina nativa MelissaAgendaConfig em /melissa/agenda-config
|
||||
// 'cfg-bloqueios' removido — virou pagina nativa MelissaBloqueios em /melissa/bloqueios
|
||||
// 'cfg-agendador' removido — virou pagina nativa MelissaAgendador em /melissa/online-scheduling
|
||||
'cfg-pagamento': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesPagamentoPage.vue')),
|
||||
@@ -145,17 +145,10 @@ const grupos = [
|
||||
},
|
||||
// Grupo "Conta" inteiro saiu — todos os 4 items (Perfil/Plano/
|
||||
// Negocio/Seguranca) viraram paginas nativas no /melissa/<slug>.
|
||||
{
|
||||
key: 'agenda',
|
||||
label: 'Agenda',
|
||||
desc: 'Horários, bloqueios e agendador público para pacientes.',
|
||||
icon: 'pi pi-calendar',
|
||||
items: [
|
||||
{ key: 'cfg-agenda', label: 'Agenda', desc: 'Horários semanais, exceções, duração e intervalo padrão.', icon: 'pi pi-calendar' }
|
||||
// "Bloqueios" virou pagina nativa em /melissa/bloqueios (MelissaBloqueios)
|
||||
// "Agendador Online" virou pagina nativa em /melissa/online-scheduling (MelissaAgendador)
|
||||
]
|
||||
},
|
||||
// Grupo "Agenda" inteiro saiu — todos os 3 items viraram paginas nativas:
|
||||
// - "Agenda" → /melissa/agenda-config (MelissaAgendaConfig)
|
||||
// - "Bloqueios" → /melissa/bloqueios (MelissaBloqueios)
|
||||
// - "Agendador Online" → /melissa/online-scheduling (MelissaAgendador)
|
||||
{
|
||||
key: 'financeiro',
|
||||
label: 'Financeiro',
|
||||
|
||||
@@ -40,6 +40,7 @@ import MelissaAlterarPlano from './MelissaAlterarPlano.vue';
|
||||
import MelissaSeguranca from './MelissaSeguranca.vue';
|
||||
import MelissaBloqueios from './MelissaBloqueios.vue';
|
||||
import MelissaAgendador from './MelissaAgendador.vue';
|
||||
import MelissaAgendaConfig from './MelissaAgendaConfig.vue';
|
||||
import MelissaEmbed from './MelissaEmbed.vue';
|
||||
import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue';
|
||||
import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.vue';
|
||||
@@ -180,6 +181,8 @@ const SECOES = {
|
||||
seguranca: { label: 'Segurança', icon: 'pi pi-shield', descricao: 'Trocar senha + boas praticas + estado da sessao.' },
|
||||
// Pagina nativa de bloqueios (MelissaBloqueios) — saiu do MelissaConfiguracoes
|
||||
bloqueios: { label: 'Bloqueios e Feriados', icon: 'pi pi-ban', descricao: 'Feriados nacionais (auto), municipais e bloqueios manuais.' },
|
||||
// Pagina nativa de configs da agenda (MelissaAgendaConfig) — saiu do MelissaConfiguracoes
|
||||
'agenda-config': { label: 'Configurações da Agenda', icon: 'pi pi-calendar', descricao: 'Jornada (dias e horários), ritmo das sessões e agendamento online.' },
|
||||
// Pagina nativa de alterar plano (MelissaAlterarPlano) — substitui /therapist/upgrade
|
||||
'alterar-plano': { label: 'Alterar Plano', icon: 'pi pi-arrow-up-right', descricao: 'Escolha um plano pessoal pra ativar todos os recursos.' },
|
||||
// Onda 1 — pages embedadas via MelissaEmbed (1-coluna, hero glass)
|
||||
@@ -207,7 +210,7 @@ const MELISSA_NON_CONFIG_SLUGS = new Set([
|
||||
'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos',
|
||||
'documentos', 'documentos-templates', 'relatorios',
|
||||
'perfil', 'plano', 'negocio', 'seguranca', 'bloqueios', 'alterar-plano',
|
||||
'online-scheduling',
|
||||
'online-scheduling', 'agenda-config',
|
||||
...MELISSA_EMBED_KEYS
|
||||
]);
|
||||
// Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes.
|
||||
@@ -2258,6 +2261,11 @@ function onKeydown(e) {
|
||||
@close="fecharSecao"
|
||||
/>
|
||||
|
||||
<MelissaAgendaConfig
|
||||
v-if="layoutReady && secaoAberta === 'agenda-config'"
|
||||
@close="fecharSecao"
|
||||
/>
|
||||
|
||||
<MelissaConfiguracoes
|
||||
v-if="layoutReady && isMelissaConfigRoute(secaoAberta)"
|
||||
:secao-rota="secaoAberta"
|
||||
|
||||
Reference in New Issue
Block a user