--- name: feriados-overrides-por-data description: "Cada feriado/recesso tem seus próprios 3 toggles (pausar_lembretes, pausar_cobrancas, marcar_aulas). Configuração global removida." metadata: node_type: memory type: project originSessionId: e41195c3-9cad-46c0-aa7c-2a7fba7c3815 --- Refactor em 12/mai/2026: removida a configuração global de "pausar em feriados". Agora **cada feriado individual** tem seus 3 toggles. ## Schema Colunas em `feriados` (migration `2026-05-12-160000_AddOverridesFeriados`): - `pausar_lembretes` ENUM('herdar','sim','nao') DEFAULT 'sim' - `pausar_cobrancas` ENUM('herdar','sim','nao') DEFAULT 'sim' - `marcar_aulas` ENUM('herdar','sim','nao') DEFAULT 'sim' Migration de seed `2026-05-12-170000_ConverterHerdarEmSim` converteu todos os existentes de 'herdar' → 'sim' (default ativo, mantendo comportamento anterior). **Why:** O modelo original tinha config global única (`pausar_em_feriados`) na `configuracoes_lembrete`. O usuário pediu controle granular por feriado para cenários como "este recesso pause lembretes mas continue cobranças". Inicialmente foi implementado com hierarquia "global como default + override por feriado", mas o usuário pediu remoção do global — cada feriado decide tudo sozinho. ## API simplificada `FeriadoModel::deveBloquearAutomacoesHoje(?string $chave)`: - $chave: `pausar_lembretes_em_feriados` | `pausar_cobrancas_em_feriados` | `marcar_aulas_em_feriados` (mantém nome antigo por compat com Service layer) - Pega `getFeriadoNaData()` → mapa pra coluna do feriado → retorna `($feriado[coluna] ?? 'sim') !== 'nao'` - Sem `'herdar'`: tratado como `'sim'` por compat com legados ## UI - **Header da tela `/direcao/feriados`**: NÃO TEM mais toggles globais (removidos). Só mostra status do dia. - **Modal de criar/editar feriado**: 3 checkboxes simples (sim/não): - 🔔 Pausar lembretes de aula (24h / 4h) - 💰 Pausar cobranças automáticas - ✅ Marcar aulas como concluídas (paga comissão ao professor) - Default ao criar novo = todos marcados - **Tabela de feriados**: cada linha mostra 3 ícones (🔔💰✅). Verde = ativo nesse feriado, cinza claro = desativado. Tooltip com label. ## Modal responsivo - `flex items-end sm:items-center p-0 sm:p-4` → bottom sheet em mobile - `rounded-t-2xl sm:rounded-2xl` → cantos arredondados só topo no mobile - `grid-cols-1 sm:grid-cols-2` → datas empilham em mobile - Inputs `text-base sm:text-sm` → evita zoom do iOS - Botões `flex-col-reverse sm:flex-row` → Salvar acima de Cancelar em mobile, com `w-full sm:w-auto` - Scrollbar fina customizada (CSS no `