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.
|
// 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.
|
// Mantém o user dentro do overlay Melissa em vez de navegar pra fora.
|
||||||
const COMPONENT_MAP = {
|
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-bloqueios' removido — virou pagina nativa MelissaBloqueios em /melissa/bloqueios
|
||||||
// 'cfg-agendador' removido — virou pagina nativa MelissaAgendador em /melissa/online-scheduling
|
// 'cfg-agendador' removido — virou pagina nativa MelissaAgendador em /melissa/online-scheduling
|
||||||
'cfg-pagamento': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesPagamentoPage.vue')),
|
'cfg-pagamento': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesPagamentoPage.vue')),
|
||||||
@@ -145,17 +145,10 @@ const grupos = [
|
|||||||
},
|
},
|
||||||
// Grupo "Conta" inteiro saiu — todos os 4 items (Perfil/Plano/
|
// Grupo "Conta" inteiro saiu — todos os 4 items (Perfil/Plano/
|
||||||
// Negocio/Seguranca) viraram paginas nativas no /melissa/<slug>.
|
// Negocio/Seguranca) viraram paginas nativas no /melissa/<slug>.
|
||||||
{
|
// Grupo "Agenda" inteiro saiu — todos os 3 items viraram paginas nativas:
|
||||||
key: 'agenda',
|
// - "Agenda" → /melissa/agenda-config (MelissaAgendaConfig)
|
||||||
label: 'Agenda',
|
// - "Bloqueios" → /melissa/bloqueios (MelissaBloqueios)
|
||||||
desc: 'Horários, bloqueios e agendador público para pacientes.',
|
// - "Agendador Online" → /melissa/online-scheduling (MelissaAgendador)
|
||||||
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)
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
key: 'financeiro',
|
key: 'financeiro',
|
||||||
label: 'Financeiro',
|
label: 'Financeiro',
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import MelissaAlterarPlano from './MelissaAlterarPlano.vue';
|
|||||||
import MelissaSeguranca from './MelissaSeguranca.vue';
|
import MelissaSeguranca from './MelissaSeguranca.vue';
|
||||||
import MelissaBloqueios from './MelissaBloqueios.vue';
|
import MelissaBloqueios from './MelissaBloqueios.vue';
|
||||||
import MelissaAgendador from './MelissaAgendador.vue';
|
import MelissaAgendador from './MelissaAgendador.vue';
|
||||||
|
import MelissaAgendaConfig from './MelissaAgendaConfig.vue';
|
||||||
import MelissaEmbed from './MelissaEmbed.vue';
|
import MelissaEmbed from './MelissaEmbed.vue';
|
||||||
import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue';
|
import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue';
|
||||||
import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.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.' },
|
seguranca: { label: 'Segurança', icon: 'pi pi-shield', descricao: 'Trocar senha + boas praticas + estado da sessao.' },
|
||||||
// Pagina nativa de bloqueios (MelissaBloqueios) — saiu do MelissaConfiguracoes
|
// 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.' },
|
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
|
// 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.' },
|
'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)
|
// 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',
|
'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos',
|
||||||
'documentos', 'documentos-templates', 'relatorios',
|
'documentos', 'documentos-templates', 'relatorios',
|
||||||
'perfil', 'plano', 'negocio', 'seguranca', 'bloqueios', 'alterar-plano',
|
'perfil', 'plano', 'negocio', 'seguranca', 'bloqueios', 'alterar-plano',
|
||||||
'online-scheduling',
|
'online-scheduling', 'agenda-config',
|
||||||
...MELISSA_EMBED_KEYS
|
...MELISSA_EMBED_KEYS
|
||||||
]);
|
]);
|
||||||
// Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes.
|
// Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes.
|
||||||
@@ -2258,6 +2261,11 @@ function onKeydown(e) {
|
|||||||
@close="fecharSecao"
|
@close="fecharSecao"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<MelissaAgendaConfig
|
||||||
|
v-if="layoutReady && secaoAberta === 'agenda-config'"
|
||||||
|
@close="fecharSecao"
|
||||||
|
/>
|
||||||
|
|
||||||
<MelissaConfiguracoes
|
<MelissaConfiguracoes
|
||||||
v-if="layoutReady && isMelissaConfigRoute(secaoAberta)"
|
v-if="layoutReady && isMelissaConfigRoute(secaoAberta)"
|
||||||
:secao-rota="secaoAberta"
|
:secao-rota="secaoAberta"
|
||||||
|
|||||||
Reference in New Issue
Block a user