Central de Novidades & Updates
Transparência e inovação constante. Veja em primeira mão todos os novos recursos, aprimoramentos de interface e melhorias disponibilizados na plataforma The One Seguros.
🔧Correção & Build
Inclusão da diretiva `'use client'` no componente orquestrador `EventDetailView.tsx`. Durante o build de produção no Docker/Coolify com o compilador Next.js Turbopack, a ausência da diretiva fazia com que o Next.js tentasse compilar o módulo como Server Component, gerando falha fatal no build ao encontrar hooks de estado do cliente (`useState`, `useToast`, `useCallback`). A diretiva foi explicitada e o build de produção validado localmente com sucesso total (código de saída 0).
Build de produção do Next.js via Docker no Coolify concluído com 100% de sucesso.
✨Feature & UI / Abas de Feedbacks & Depoimentos, Indicações VIP e Disparos de Pesquisa de Satisfação
Evolução do Gestor de Eventos para gerenciar o pós-evento completo dos encontros corporativos: 1. **Navegação por Abas Principais (`EventDetailView.tsx`)**: - Inclusão do seletor segmentado com 3 abas principais: **"Convidados & RSVP"**, **"Feedbacks & Depoimentos"** e **"Indicações VIP"**. 2. **Aba Feedbacks & Depoimentos (`EventFeedbacksTab.tsx`)**: - Métricas de nota média, satisfação geral, total de feedbacks e depoimentos aprovados. - Filtros por status de moderação (`publicado`, `pendente`, `oculto`) e busca rápida. - Moderação com ação de 1-clique para publicar ou ocultar depoimentos do mural público com feedback via Toast. 3. **Aba Indicações VIP (`EventReferralsTab.tsx`)**: - Visualização de leads recomendados pelos participantes (Nome, WhatsApp, Quem Indicou, Data). - Botão de acionamento imediato via WhatsApp com mensagem personalizada para prospecção comercial. 4. **Disparos de Pesquisa de Satisfação**: - Inclusão do modelo nos menus individuais (`GuestActionDropdown.tsx`) e ações em lote de convidados para envio via E-mail corporativo (Microsoft Graph) e WhatsApp.
- Centralização completa do ciclo pós-evento no painel administrativo, unindo moderação de autoridade e prospecção ativa de novos negócios.
🔧Correção & Lógica de Negócio
Normalização do tratamento de status de eventos entre o Sanity CMS e a camada de interface pública. O Sanity Studio registra eventos finalizados com o valor `'finished'` (`{ title: 'Concluído / Encerrado', value: 'finished' }`). Os componentes públicos estavam comparando estritamente com `'concluido'`, fazendo com que o formulário de confirmação de presença (RSVP) continuasse aberto indevidamente. Criamos o helper `isEventFinished()` cobrindo ambas as variações (`finished`, `concluido`, `encerrado`) e aplicamos nas páginas, cards e endpoint de RSVP.
Quando o evento estiver marcado como concluído no Sanity, o formulário de RSVP é desabilitado e a página exibe a mensagem de "Inscrições Encerradas" com botão direto para o Mural de Testemunhos.
✨Feature & UI / Catálogo Público, Landing Page Institucional e Confirmação de Presença VIP
Implementação das páginas públicas institucionais para visualização de eventos da The One Seguros, conectando a vitrine pública ao Sanity CMS e ao banco de dados Supabase: 1. **Catálogo & Agenda de Eventos (`/eventos`)**: - Hero institucional de alta autoridade para encontros de planejamento patrimonial e consórcios. - Filtros de navegação por status: *Todos*, *Próximos & Inscrições Abertas* e *Realizados & Resultados*. - Busca preditiva em tempo real por nome, local ou descrição. - Cards informativos (`PublicEventCard`) com imagem oficial, data, horário, local e CTAs contextuais (*Conhecer & Participar*, *Ver Resultados* ou *Avaliar*). - Banner de inscrição para a Lista VIP de Investidores. - Otimização para mecanismos de busca (SEO) com OpenGraph e Schema.org (`ItemList` de `Event`). 2. **Landing Page Oficial do Evento (`/eventos/[slug]`)**: - Breadcrumb de navegação e Hero com banner em alta definição. - Grade prática de informações com Data, Horário e Localização com link direto para o Google Maps. - Seções detalhadas de "Sobre o Encontro", "Tópicos & Estratégias em Pauta" e diferenciais executivos da The One Seguros. - Formulário de Confirmação de Presença / RSVP (`EventRsvpForm`) com validação de WhatsApp, quantidade de acompanhantes e gravação em tempo real na tabela `public.confirmacoes` (com integração direta à aba de convidados no Admin). - Suporte a eventos já realizados com redirecionamento em destaque para o Mural de Testemunhos. - Metadados SEO dinâmicos com OpenGraph dedicado por evento e Schema.org (`Event`). 3. **Endpoint de Confirmação (`POST /api/eventos/[slug]/rsvp`)**: - Validação dos dados do participante, prevenção de duplicidade por WhatsApp e envio automático de e-mail de confirmação via Microsoft Graph API. 4. **Navegação Global**: - Adição do link "Eventos" no menu principal (`Header.tsx`) e rodapé (`Footer.tsx`).
Os visitantes e investidores agora podem acessar a agenda completa de eventos da The One Seguros em `/eventos`, conhecer a proposta de valor e confirmar sua presença online em `/eventos/[slug]`.
📱UI & Responsividade Mobile / Escala de 5 Estrelas e Badges Semânticas
Ajuste de responsividade mobile e simplificação do componente de avaliação na Etapa 2 do Wizard de Feedback (`Step2RatingHighlights.tsx`): - **Eliminação de Overflow em Telas Estreitas:** Redução da escala de 10 estrelas para 5 estrelas interativas de toque amplo (touch targets adequados de 44px com ícone de 36px), eliminando o corte lateral em smartphones. - **Remoção de Seletor Numérico Redundante:** O seletor de números inferiores foi removido, priorizando a interação tátil direta nas estrelas. - **Novas Badges de Percepção:** - 1: `1 - Ruim` - 2: `2 - Ok` - 3: `3 - pode melhorar` - 4: `4 - Bom` - 5: `5 - Excelente` - **Harmonização do Mural:** Atualização dos cards de testemunhos (`TestimonialCard.tsx`) e métricas (`EventTestimonialsView.tsx`) para exibição proporcional na escala de 5 estrelas (`/5`).
Experiência de avaliação 100% confortável e fluida em smartphones, sem overflow horizontal e com percepção qualitativa imediata.
🎨UI & UX
Transformação do card métrico de "Depoimentos no Mural" em um elemento interativo com âncora direta (`href="#depoimentos"`), permitindo que o usuário clique no card para deslizar a página com scroll suave e compensação de cabeçalho (`scroll-mt-24`) diretamente para o grid de depoimentos. Foram adicionados efeitos visuais ao pairar o mouse (micro-interações com borda destacada em dourado `primary/40`, ícone animado com `translate-x` e feedback textual "Ver depoimentos abaixo").
Navegação mais intuitiva e ágil para visitantes que queiram ir diretamente dos indicadores consolidados para a leitura individual dos depoimentos.
🔧Correção
Correção do ciclo de auto-redirecionamento no componente `Step5Success`. Anteriormente, a chamada `router.push()` estava sendo disparada internamente dentro do updater de estado de `setCountdown((prev) => ...)`. No React e Next.js App Router, essa prática dispara a advertência e erro em tempo de execução *"Cannot update a component (`Router`) while rendering a different component (`Step5Success`)"*. A lógica foi refatorada para um timer desacoplado gerenciado por `useEffect` com dependência em `countdown`, executando o redirecionamento com segurança no ciclo de vida correto do componente.
O participante conclui o envio do formulário e é redirecionado suavemente e sem erros no console para o mural de resultados e testemunhos (`/eventos/[slug]/testemunhos`).
✨Feature & UI / Sistema Completo de Feedback, Mural de Testemunhos e Gestor de Indicações
Implementação de ponta a ponta do ecossistema de avaliação pós-evento para os participantes dos encontros da The One Seguros: 1. **Wizard de Feedback Público (`/eventos/[slug]/feedback`)**: - Desenvolvido no padrão de Wizard em 4 etapas fluidas com barra de progresso em gradiente dourado (`primary` / `accent`): - **Etapa 1 (Identificação)**: Combobox inteligente com busca preditiva na lista de convidados confirmados do evento (ou digitação livre), telefone formatado e checkbox de consentimento LGPD para o mural público. - **Etapa 2 (Avaliação & Destaques)**: Seletor interativo de nota de 1 a 10 com estrelas, seleção múltipla dos tópicos que mais chamaram atenção (com opção "Outro" personalizada) e avaliação de indicação (Sim/Não). - **Etapa 3 (Testemunho & Melhorias)**: Campo de texto longo para depoimento/testemunho destinado ao mural público e campo aberto para críticas construtivas/sugestões internas. - **Etapa 4 (Indicações VIP)**: Formulário para recomendação opcional de até 3 pessoas especiais (Nome + WhatsApp) para conhecerem as estratégias patrimoniais. - **Etapa 5 (Sucesso)**: Tela comemorativa com contagem regressiva e auto-redirecionamento para o mural público de resultados. 2. **Mural Público de Resultados & Testemunhos (`/eventos/[slug]/testemunhos`)**: - Hero com capa/informações do evento e cards métricos em destaque (Nota Média Geral, Taxa de Indicação e Total de Depoimentos no Mural). - Nuvem/barras de frequência dos temas mais votados pelos convidados. - Grid responsivo de cards de testemunhos (`TestimonialCard`) com nota, autor, data e design luxuoso em tema escuro/dourado. - Botões de compartilhamento social (WhatsApp com texto pré-configurado, Copiar Link) e CTA para avaliação. - Dados estruturados JSON-LD Schema.org (`Event` com `AggregateRating`). 3. **Persistência no Supabase**: - Migration `20260910124000_create_event_feedbacks_table.sql` criando a tabela `public.event_feedbacks` com índices, restrições e políticas de RLS. 4. **Integração com Sanity CMS**: - Schema de evento (`eventType.ts`) enriquecido com campos: `feedbackActive`, `feedbackTitle`, `feedbackSubtitle`, `feedbackHighlightsOptions` e `testimonialsDisplayMode`. 5. **Central Administrativa (`/admin/eventos/[slug]`)**: - Adicionada navegação por abas principais no topo: **"Convidados & RSVP"**, **"Feedbacks & Depoimentos"** e **"Indicações VIP"**. - **Aba Feedbacks**: Métricas consolidadas, filtros por status de moderação e tabela com toggle de 1-clique para publicar ou ocultar depoimentos do mural público. - **Aba Indicações VIP**: Prospecção de leads recomendados pelos convidados com atalho para iniciar conversa comercial no WhatsApp com 1 clique. 6. **Motor de Notificações**: - Templates executivos de e-mail corporativo (`pesquisa_satisfacao` via Microsoft Graph) e WhatsApp adicionados ao disparador para envio manual ou em lote pós-evento.
- Experiência completa de pós-evento com coleta de feedback, exibição de autoridade e satisfação em mural público, prospecção ativa de indicações e controle total pelo gestor de eventos.
🔧Correção
Tokenização da altura do header fixo. O offset de conteúdo do site vivia como magic number inline (`paddingTop: '90px'`) no `<main>`, dessincronizado da altura real do `<header>` (`h-20 sm:h-24`, ou seja 80px/96px). Em `sm+` o header cobria 6px do conteúdo, e o hero somava um `pt` próprio sobre esse offset — origem do corte vertical descrito em [hero.md](./hero.md) `[1.2.0]`.
- Altura do header deixa de ser magic number duplicado entre layout e seções. - Seções full-height podem descontar o offset com `calc(100dvh - var(--spacing-header))`.
🐛Fix (Responsividade)
Correção do corte dos CTAs (`Simular Cotação` / `Falar com Especialista`) e da onda inferior em viewports de **altura reduzida** (notebooks pequenos, janelas restauradas, landscape de celular e zoom elevado). A restrição real do layout era vertical, não horizontal.
- CTAs e onda visíveis sem scroll em todas as alturas testadas, de 360px a 1440px. - Overlay gradiente cobre integralmente a seção, inclusive quando o conteúdo a expande. - Recorte de conteúdo eliminado: excesso passa a gerar crescimento da seção, nunca corte.
🛡️UX & UI / Componente Primitivo ConfirmModal nas Tabelas Administrativas
Substituição de todos os diálogos de confirmação síncronos nativos do navegador (`window.confirm(...)`) por instâncias do novo componente primitivo [`ConfirmModal`](file:///c:/Projetos/site/src/components/ui/ConfirmModal/ConfirmModal.tsx): 1. **Criação do Componente Primitivo `ConfirmModal`**: - Desenvolvido em `src/components/ui/ConfirmModal/` com suporte a variantes `danger`, `warning` e `info`. - Ícone temático, realce do registro a ser excluído (`itemHighlight`), botão de cancelar (`ghost`) e botão de confirmação (`danger`) com feedback de carregamento (`isLoading`). 2. **Aplicação na Gestão de Eventos**: - Exclusão individual de convidado via modal elegante com nome e contatos destacados. - Exclusão em lote com lista resumida dos convidados selecionados. 3. **Aplicação na Central de Templates (`/admin/templates`)**: - Exclusão de modelos de e-mail/WhatsApp via `ConfirmModal`.
- Eliminação completa de caixas nativas e intrusivas do navegador, garantindo experiência moderna, imersiva e consistente.
✨Feature & UI / Habilitação de Seleção Múltipla, Ações em Lote e Correção de Contraste
Habilitação completa do ecossistema de seleção de linhas e ações em lote no módulo de Eventos, além da correção de contraste do menu de ações: 1. **Correção de Contraste e Acessibilidade (WCAG AA)**: - Os botões e cabeçalho da seção **Web Push** em [`GuestActionDropdown.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/GuestActionDropdown.tsx) e [`GuestDetailsModal.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/GuestDetailsModal.tsx) foram corrigidos para utilizarem `text-purple-400` / `text-text-muted hover:text-base-content`, eliminando o texto apagado sobre fundo escuro. 2. **Seleção Múltipla & Barra Flutuante de Ações em Lote (`DataTableBulkBar`)**: - [`GuestTable.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/GuestTable.tsx) e [`EventDetailView.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/EventDetailView.tsx) agora habilitam `enableRowSelection={true}`, exibindo checkboxes discretos por linha e seleção geral no cabeçalho. - Adicionada a barra de ações em lote com 7 operações suportadas: - **Confirmar Presença em Lote** - **Marcar como Desmarcado em Lote** - **Disparo de E-mail (Lembrete 5 Dias)** - **Disparo de E-mail (Lembrete É Hoje)** - **Disparo de Web Push (5 Dias)** - **Disparo de Web Push (É Hoje)** - **Exclusão de Convidados em Lote** (com diálogo de confirmação seguro)
- Experiência unificada e idêntica à gestão de candidatos, com ações em lote imediatas e contraste visual impecável.
🏗️Arquitetura & UI / Harmonização da Tabela de Convidados com o Primitivo DataTable
Refatoração da tabela de convidados da Gestão de Eventos para aderir 100% às regras de componentização ([`02-ui-architecture.md`](file:///c:/Projetos/site/.agents/rules/02-ui-architecture.md)) e governança de temas ([`04-theme-governance.md`](file:///c:/Projetos/site/.agents/rules/04-theme-governance.md)): 1. **Adoção do Padrão Schema-Driven (`ColumnDef<Guest>[]`)**: - Criado o arquivo [`GuestTableColumns.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/GuestTableColumns.tsx) com a definição estrita e desacoplada das colunas. - Utilização dos componentes primitivos [`Badge`](file:///c:/Projetos/site/src/components/ui/Badge/Badge.tsx) e [`IconButton`](file:///c:/Projetos/site/src/components/ui/IconButton/IconButton.tsx). 2. **Consumo do Primitivo Genérico `DataTable`**: - [`GuestTable.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/GuestTable.tsx) agora consome exclusivamente [`DataTable<Guest>`](file:///c:/Projetos/site/src/components/ui/DataTable/DataTable.tsx), eliminando cascas HTML duplicadas. 3. **Zero Hard-Code de Cores & Compatibilidade com Theme Creator**: - Substituição de todas as classes fixas (`bg-navy-accent`, `text-gold`, `border-white/10`) por tokens semânticos (`bg-base-200`, `border-border`, `text-base-content`, `text-text-muted`, `bg-primary`, `bg-success`). - [`GuestActionDropdown.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/GuestActionDropdown.tsx) e [`GuestDetailsModal.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/GuestDetailsModal.tsx) atualizados para tokens semânticos. 4. **Remoção de Código Duplicado**: - Removido o arquivo legado `GuestTableRow.tsx`.
- Conformidade total com a arquitetura de UI pura vs domínio e integração 100% dinâmica com o Theme Creator.
🔧Correção / Unificação de Schema e Dados em `public.confirmacoes`
Centralização e unificação de todas as consultas e mutações da Gestão de Eventos na tabela canônica `public.confirmacoes`: 1. **Causa Raiz da Divergência**: - As landing pages e formulários públicos gravavam as confirmações na tabela `public.confirmacoes` (com `event_slug = 'theone360'`). - O painel administrativo possuía uma regra herdada que desviava requisições do evento `theone360` para o schema isolado `theone360.confirmacoes` (que continha apenas 2 registros antigos). - Como consequência, os 9 convidados ativos mais recentes cadastrados no evento `theone360` não eram exibidos no painel. 2. **Correção e Padronização**: - Removido o desvio para o schema `theone360` em todas as rotas administrativas (`/admin`, `/admin/eventos`, `/api/admin/eventos`, `/api/admin/eventos/[slug]/convidados`, `/api/admin/eventos/[slug]/status` e `/api/admin/eventos/[slug]/enviar`). - Todas as operações de leitura, paginação, filtros, exclusão e disparos (WhatsApp, E-mail, Push) agora operam exclusivamente sobre a tabela relacional `public.confirmacoes` com filtro `event_slug`.
- Exibição em tempo real de 100% dos 9 convidados confirmados do evento `THE ONE 360°`. - Eliminação definitiva de discrepâncias entre formulários públicos e o painel administrativo.
🛡️UX & UI / Integração do ConfirmModal para Candidaturas e Oportunidades
Substituição dos diálogos de confirmação síncronos (`confirm(...)`) pelo novo componente primitivo [`ConfirmModal`](file:///c:/Projetos/site/src/components/ui/ConfirmModal/ConfirmModal.tsx): 1. **Exclusão de Candidaturas (Individual e em Lote)**: - No [`RecruitmentView.tsx`](file:///c:/Projetos/site/src/features/recrutamento/components/RecruitmentView.tsx), a exclusão unitária e em lote agora exibe modal estruturado com destaque do nome, protocolo e vaga dos candidatos selecionados. 2. **Exclusão de Oportunidades/Vagas**: - No [`JobPositionsView.tsx`](file:///c:/Projetos/site/src/features/recrutamento/components/vagas/JobPositionsView.tsx), a exclusão de vagas do Sanity Studio passa a ser confirmada via `ConfirmModal` com indicação do slug e localização.
- Experiência visual rica, sem travamentos síncronos da thread do navegador e alinhada às diretrizes de governança de UI.
🛡️Segurança & Qualidade (Hardening de Funções PostgreSQL e Tipagem Estrita Database)
🔧Segurança / Otimização (Proxy de Sessão Next.js 16 + Supabase SSR e Geração de Tipos)
🔧Otimização / Arquitetura
🔧Correção / Otimização
🎛️Arquitetura & UI / Unificação das Barras de Filtros com o Primitivo DataViewToolbar
Harmonização das barras de filtros de Eventos para utilizarem o componente primitivo global [`DataViewToolbar`](file:///c:/Projetos/site/src/components/ui/DataViewToolbar/DataViewToolbar.tsx): 1. **Evolução do Primitivo `DataViewToolbar`**: - Adicionada a propriedade `tabs?: ReactNode`, `leftContent?: ReactNode` e `className?: string`. - Permite a composição direta de abas de status (`Tabs`) com o input de busca rápida em uma casca unificada e responsiva. 2. **Refatoração dos Filtros de Eventos**: - [`EventsFiltersBar.tsx`](file:///c:/Projetos/site/src/features/eventos/components/EventsFiltersBar.tsx) e [`EventDetailFilters.tsx`](file:///c:/Projetos/site/src/features/eventos/components/detail/EventDetailFilters.tsx) agora consomem [`DataViewToolbar`](file:///c:/Projetos/site/src/components/ui/DataViewToolbar/DataViewToolbar.tsx) como casca visual padronizada.
- Padronização visual e estrutural de 100% das barras de ferramentas do painel administrativo.
🏗️Arquitetura & UI / Desduplicação de Componentes e Harmonização no DataCard
Refatoração e desduplicação dos cards e filtros da Gestão de Eventos, aderindo estritamente ao Princípio da Casca Visual Agnóstica do Design System: 1. **Evolução do Primitivo `DataCard` (`src/components/ui/DataCard/`)**: - Adicionada a propriedade `layout?: 'vertical' | 'horizontal'` e suporte ao slot `sideContent` e efeito `glow`. - Agora atende tanto à visualização em grid (como em Vagas) quanto à visualização em lista horizontal/banner (como em Eventos). 2. **Refatoração do `EventCard.tsx`**: - Eliminada a casca visual customizada duplicada. - O componente agora consome exclusivamente os primitivos [`DataCard`](file:///c:/Projetos/site/src/components/ui/DataCard/DataCard.tsx) (`layout="horizontal"`), [`Badge`](file:///c:/Projetos/site/src/components/ui/Badge/Badge.tsx) e [`Button`](file:///c:/Projetos/site/src/components/ui/Button/Button.tsx). 3. **Padronização de Abas e Badges da Tabela**: - `EventDetailFilters.tsx` refatorado para utilizar o componente primitivo [`Tabs`](file:///c:/Projetos/site/src/components/ui/Tabs/Tabs.tsx). - `GuestTableRow.tsx` atualizado para utilizar [`Badge`](file:///c:/Projetos/site/src/components/ui/Badge/Badge.tsx) semântico (`approved` e `rejected`).
- Zero duplicações visuais, 100% de conformidade com o design system do projeto e reaproveitamento perfeito entre módulos.
✉️Correção / Remetente de E-mail de Eventos (evento@theoneseguros.com.br)
Correção do endereço de remetente dos disparos de e-mail de eventos: 1. **Remetente Dedicado para Eventos (`AZURE_EVENTS_SENDER_EMAIL`)**: - Atualizado o serviço [`microsoftEmail.ts`](file:///c:/Projetos/site/src/lib/microsoftEmail.ts) para utilizar o remetente oficial `evento@theoneseguros.com.br` (via `AZURE_EVENTS_SENDER_EMAIL`), em vez de recorrer ao remetente padrão de cotações (`AZURE_SENDER_EMAIL`). 2. **Configuração de Ambiente**: - Cadastrada a variável `AZURE_EVENTS_SENDER_EMAIL="evento@theoneseguros.com.br"` no [`.env.local`](file:///c:/Projetos/site/.env.local) e documentada no [`.env.example`](file:///c:/Projetos/site/.env.example).
- Todos os e-mails de confirmação, lembretes de 5 dias, véspera e dia do evento são enviados com o remetente `evento@theoneseguros.com.br`.
🔔Correção & Infraestrutura / Configuração de Chaves VAPID e Disparo de Web Push
Diagnóstico e correção completa da infraestrutura de Web Push Notifications e subscrições: 1. **Configuração das Chaves VAPID (`.env.local` e `.env.example`)**: - Inseridas as chaves `NEXT_PUBLIC_VAPID_PUBLIC_KEY`, `VAPID_PRIVATE_KEY` e `VAPID_EMAIL`, que estavam ausentes no ambiente local e forçavam o disparador a rodar em modo simulação silenciosa. 2. **Preservação e Sincronização de Subscrições (`push_subscriptions`)**: - Os registros de subscrição de Web Push dos convidados permanecem 100% preservados no banco de dados. - Criada a tabela unificada `public.push_subscriptions` (`20260828120000_create_public_push_subscriptions.sql`) sincronizada com o schema legado para suporte multievento. 3. **Disparo Robusto com Fallback Multidispositivo (`enviar/route.ts`)**: - A rota de envio agora itera por todos os dispositivos cadastrados do convidado, garantindo a entrega mesmo quando um aparelho anterior tiver a subscrição expirada (410 Gone) e limpando subscrições antigas automaticamente.
- Disparos de notificações Web Push pelo painel administrativo enviando em tempo real com sucesso para os aparelhos inscritos (Status 201).
🗄️Banco de Dados & Infraestrutura / Tabela Multievento de Convidados e RSVP no Supabase
Aplicação de migration no banco de dados Supabase e suporte nativo a múltiplos eventos sem necessidade de criação manual de schemas ou tabelas: 1. **Migration (`20260828113000_create_public_confirmacoes_table.sql`)**: - Criação da tabela unificada `public.confirmacoes` com coluna indexada `event_slug`. - Índices em `event_slug`, `status` e `created_at` para máxima performance. - Sincronização e migração dos dados históricos existentes de `theone360.confirmacoes` para a tabela unificada. - RLS ativo e protegido com acesso exclusivo via `service_role`. 2. **Consultas e Métricas Parametrizadas**: - As rotas `/api/admin/eventos/[slug]/convidados` e `/api/admin/eventos` agora filtram por `event_slug = slug` no schema `public`. - Qualquer evento novo criado no Sanity passa a ter sua lista de presença pronta para receber convidados e disparar comunicações imediatamente.
- Todo e qualquer evento novo cadastrado no sistema passa a ter gestão de RSVP, lista de convidados e disparos multicanal disponíveis instantaneamente.
🌟Integração & Arquitetura / Migração do Catálogo de Eventos para Sanity CMS com RSVP no Supabase
Implementação da arquitetura híbrida para Gestão de Eventos, unificando o gerenciamento de conteúdo no **Sanity CMS** e a persistência transacional de convidados/RSVP no **Supabase**: 1. **Schema de Eventos no Sanity (`eventType.ts`)**: - Criação do documento `event` no Sanity Studio com campos estruturados: Nome (`name`), URL Amigável (`slug`), Data formatada (`date`), Horário (`time`), Local (`location`), Descrição (`description`), Status (`status: active/upcoming/finished`), Schema do Supabase (`schema`), Imagem de Capa (`coverImage`) e Ordem (`order`). 2. **Camada de Integração & Persistência (`sanityEvents.ts`)**: - Utilitários `getSanityEvents()` e `createOrUpdateSanityEvent()` para consulta GROQ e gravação via `writeClient`, incluindo rotina de fallback e seed automático dos eventos padrão. 3. **API Centralizada de Eventos (`/api/admin/eventos`)**: - `GET`: Recupera o catálogo do Sanity e calcula as métricas dinâmicas de convidados em tempo real no Supabase em paralelo. - `POST`: Cria novos eventos no Sanity diretamente pelo painel administrativo (ou pelo Sanity Studio), validando a sessão de autenticação do Supabase. 4. **Modal e Painel Intuitivos**: - O formulário [`EventCreateModal.tsx`](file:///c:/Projetos/site/src/features/eventos/components/EventCreateModal.tsx) agora persiste novos eventos imediatamente no Sanity e atualiza o hub em tempo real com toasts de confirmação.
- Usuários leigos podem criar e editar eventos pelo painel ou pelo Sanity Studio, mantendo o controle operacional e formulários de convidados no Supabase.
☁️Arquitetura & Nova Feature (Persistência em Nuvem no Supabase, Separação de Escopos Site/Admin e Tabela de Profiles)
Implementação completa da persistência remota multidispositivo no Supabase, separação de escopos entre o Site Público e o Painel Administrativo, criação de biblioteca de presets compartilhados em nuvem e injeção SSR com **Zero FOUC**: 1. **Estrutura de Banco de Dados (`supabase/migrations/20260828180000_create_profiles_and_theme_tables.sql`)**: - **Tabela `public.profiles`**: Perfis completos de usuários com suporte a usuários internos/externos, roles (`superadmin`, `admin`, `operator`, `recruiter`, `viewer`, `client`, `partner`), permissões em JSONB, status ativo e preferências pessoais de tema (`theme_preset_id`, `theme_config`). - **Tabela `public.site_theme_settings`**: Configuração central do tema oficial do site público, com leitura aberta para visitantes e escrita protegida para administradores. - **Tabela `public.theme_presets`**: Biblioteca em nuvem de temas cadastrados (com os 5 presets oficiais embutidos e suporte a novos presets salvos por administradores). 2. **Rotas de API REST**: - `GET/POST /api/theme/public`: Leitura pública e publicação oficial do tema do site. - `GET/POST/DELETE /api/theme/presets`: Consulta, criação e exclusão de presets na nuvem. - `GET/POST /api/theme/user`: Leitura e atualização do tema pessoal do administrador em seu profile no Supabase. 3. **Renderização Híbrida SSR (Zero FOUC)**: - `src/app/(site)/layout.tsx`: Lê o tema público no servidor antes do envio do HTML e injeta os tokens CSS diretamente no cabeçalho e na tag `<html data-theme="...">`, eliminando qualquer piscada de tela branca ou escura. - `src/app/admin/layout.tsx`: Configurado com escopo isolado `admin`. 4. **Interface do Theme Creator (`/admin/tema`)**: - **Seletor de Escopo de Edição**: Permite alternar entre editar o *Tema do Site Público (Global)* e o *Tema do Painel Administrativo (Meu Perfil)*. - **Ações Cloud**: Botão para publicar oficialmente no site, botão para salvar no perfil do usuário e modal para salvar presets na biblioteca compartilhada do Supabase.
- Os temas agora são salvos na nuvem (Supabase) e persistem entre diferentes dispositivos. O site público e a área autenticada possuem temas totalmente independentes, com carregamento instantâneo no servidor sem FOUC.
🎨Nova Feature & Melhoria (Controle de Espaçamentos, Escala Tipográfica e Tamanhos DaisyUI)
Implementação completa dos controles de **Espaçamento e Tamanhos (Sizes & Spacing - DaisyUI Style)** no Theme Creator: 1. **Tokens de Espaçamento e Tipografia (`src/app/globals.css`)**: - `--font-size-root`: Escala base da fonte de toda a aplicação (14px, 15px, 16px, 17px, 18px). - `--spacing-card-padding`: Padding interno de cartões, modais e superfícies (12px a 36px). - `--spacing-grid-gap`: Distância e lacunas entre módulos, colunas e cards (8px a 32px). - `--btn-text-case`: Transformação de texto em botões (`uppercase`, `normal-case`, `capitalize`). - `--btn-focus-scale`: Feedback tátil ao pressionar botões (`0.95`, `0.97`, `1.0`). - `--animation-btn`: Duração da transição e feedback interativo (`0.15s`, `0.25s`, `0.4s`). 2. **Interface do Theme Creator (`/admin/tema`)**: - Adicionada a 3ª aba dedicada: **"Espaçamento & Tamanhos"** (`SpacingAndSizesGroup.tsx`). - Controles visuais com preview em tempo real de escala de texto, expansão/contração de padding de cards e botão de teste de feedback tátil.
- Sistema de temas completo com controle total sobre paleta de cores (com WCAG), raios de borda (radius), iluminação/glow, escala tipográfica, padding de cards, gaps de grid e comportamento de botões.
🎨Melhoria & Correção de UI (Aviso de Contraste WCAG e Previews de Glow, Bordas e Inputs)
Aprimoramento do **Theme Creator** para incorporar o sistema de validação de contraste WCAG (estilo DaisyUI Theme Generator) e correção da reatividade dos previews em tempo real: 1. **Aviso de Contraste WCAG (DaisyUI Style)**: - Implementado utilitário `src/features/theme/utils/contrast.ts` com cálculo de luminância relativa e taxa de contraste (1:1 até 21:1) conforme a norma WCAG 2.1. - Cada cartão de cor agora exibe o selo com a taxa de contraste (`AAA`, `AA`, `AA Grande` ou `⚠️ Baixo Contraste`) contra o texto correspondente (`primaryContent`, `secondaryContent`, `accentContent`, `neutralContent`, `baseContent`, `textMuted`). - Adicionado alerta global no topo do seletor avisando caso qualquer cor do tema ativo apresente contraste insuficiente (< 4.5:1). 2. **Correção do Preview do Efeito Glow**: - `DataCard` e `RadiusSlidersGroup` agora utilizam a variável CSS `--glow-intensity` de forma dinâmica no `boxShadow` e na camada radial de iluminação. 3. **Correção do Preview das Bordas dos Botões**: - O componente `Button` agora aplica dinamicamente `borderWidth: var(--border-btn)` reagindo instantaneamente às escolhas de espessura (0px, 1px, 2px, 3px). - O `RadiusSlidersGroup` exibe uma amostra real de botão com a espessura e raio configurados. 4. **Correção do Preview de Radius Input**: - Corrigido `DataViewToolbar` para utilizar `.rounded-input` em vez de classe estática. - Adicionada seção dedicada de "Campos de Formulário & Inputs" no `ComponentShowcase` e amostra ao vivo com `<input>` real no slider de `--radius-input`.
- O Theme Creator agora possui validação de contraste visual completa com avisos WCAG e todos os controles (glow, bordas de botão e radius input) reagem com precisão em tempo real.
🎨Nova Feature & Design System / Theme Creator (Estilo DaisyUI) e Refatoração Global de UI
Implementação completa de um motor dinâmico e flexível de criação e personalização de temas inspirado no **DaisyUI Theme Generator**, integrado exclusivamente à área autenticada do painel administrativo (`/admin/tema`) e acompanhado da refatoração de todos os 15 componentes primitivos da biblioteca de UI pura (`src/components/ui/`): 1. **Tokens de Design Semânticos & CSS Variables (`src/app/globals.css`)**: - **Paleta de Cores**: `primary`, `primary-focus`, `primary-content`, `secondary`, `secondary-focus`, `accent`, `neutral`, `base-100` (canvas), `base-200` (cards/surfaces), `base-300` (toolbars/dropdowns), `base-content` (texto principal), `text-muted` (texto secundário), `status-approved`, `status-analyzing`, `status-interview`, `status-rejected`. - **Tokens de Radius**: `--radius-box` (cards, containers e modais), `--radius-btn` (botões), `--radius-badge` (selos e tags), `--radius-input` (campos de texto). - **Efeitos & Traços**: `--border-btn` (espessura de contorno) e `--glow-intensity` (iluminação ambiente). - **Utilitários de Layout**: `.rounded-box`, `.rounded-btn`, `.rounded-badge`, `.rounded-input`. 2. **Módulo de Tema (`src/features/theme/`)**: - **5 Presets Oficiais Embutidos**: - *The One Official (Dark Gold)*: Ouro Nobre & Azul Marinho Profundo. - *Midnight Luxury (Black & Gold)*: Fundo preto absoluto com contrastes em ouro refinado. - *Corporate Slate (Executive Blue)*: Tons de ardósia, azul tecnológico e cinza aço. - *Emerald Prestige (Wealth & Trust)*: Verde esmeralda e dourado suave. - *Light Executive (Clean & Crisp)*: Fundo claro corporativo com alto contraste. - **ThemeProvider Reativo**: Injeta as variáveis diretamente no `:root` / `html[data-theme]` em tempo real e persiste temas personalizados no `localStorage`. - **Exportador**: Exporta os temas instantaneamente em sintaxe CSS compatível com DaisyUI ou formato JSON. 3. **Interface do Theme Creator (`/admin/tema`)**: - **ThemePresetsSelector**: Grid de seleção de temas com mini-paletas coloridas. - **ColorPickerGroup**: Controles interativos para edição de cores da marca, superfícies e status. - **RadiusSlidersGroup**: Sliders em tempo real para controle de raios de borda em pixels/rems. - **ComponentShowcase**: Vitrine com preview ao vivo de botões, badges, stat cards, toolbars, modais e data cards. 4. **Refatoração dos 15 Componentes de UI (`src/components/ui/`)**: - Todos os componentes primitivos (`Button`, `Badge`, `DataCard`, `DataViewToolbar`, `Modal`, `Tabs`, `StatCard`, `ActionMenu`, `Checkbox`, `IconButton`, `PageHeader`, `Toast`, `DataTable`, `DataKanban`, `RichTextEditor`) foram migrados de classes estáticas para tokens semânticos e classes de radius dinâmicas.
- Sistema de temas 100% dinâmico e flexível, permitindo que toda a UI da aplicação seja personalizada em tempo real pelo administrador, com 5 presets de alto padrão visual e exportação em CSS/JSON.
✨Feature & UI / Ação de Exclusão de Convidado e Menu de Ações no Modal de Detalhes
Implementação da exclusão de inscrições e enriquecimento de ações no modal de detalhes: 1. **Exclusão de Convidado (`DELETE /api/admin/eventos/[slug]/convidados?id=...`)**: - Criação do handler `DELETE` na API de convidados com remoção segura no banco de dados. - Adicionada a ação "Excluir Convidado" com confirmação no menu de 3 pontinhos (`GuestActionDropdown.tsx`) e no rodapé do modal de detalhes. 2. **Menu de Ações e Disparos no Modal de Ficha do Convidado (`GuestDetailsModal.tsx`)**: - Barra superior de ações no modal com: - Botão de alternar status de presença (*"Marcar como Desmarcado"* / *"Reconfirmar Presença"*). - Menu dropdown de disparos de notificações (E-mail, WhatsApp e Web Push). - Botão de exclusão rápida da inscrição.
- O gestor tem total autonomia para excluir cadastros e disparar comunicações multicanal tanto pela tabela quanto pelo modal de ficha do convidado.
🏗️Arquitetura & Componentização / Fatiamento da Tela de Gestão de Convidados & RSVP (/admin/eventos/[slug])
Refatoração e componentização completa da tela de detalhes e gestão de convidados de eventos específicos ([`/admin/eventos/[slug]`](file:///c:/Projetos/site/src/app/admin/eventos/%5Bslug%5D/page.tsx)), preservando 100% da identidade visual, interatividade e disparos multicanal: 1. **Hook Customizado de Domínio (`useEventGuests.ts`)**: - Centraliza o ciclo de vida de busca (`fetchConvidados`), paginação, busca por texto, filtros de status (`todos`, `confirmados`, `desmarcados`), alternância de presença e disparos de notificações. 2. **Componentização Modular em `src/features/eventos/components/detail/`**: - `EventDetailHeader.tsx`: Cabeçalho com link de retorno, título do evento, badge "Gestão de RSVP" e botão com spinner de atualização. - `EventDetailMetrics.tsx`: 3 StatCards para Total Registrados, Presença Confirmada e Desmarcados com taxa percentual. - `EventDetailFilters.tsx`: Abas de status com contadores reativos e campo de pesquisa. - `GuestTableRow.tsx` & `GuestTable.tsx`: Tabela com renderização de convidados, status semânticos, acompanhantes, badges de canais de comunicação e paginação. - `GuestActionDropdown.tsx`: Menu contextual flutuante para disparos manuais de E-mail (5 modelos), WhatsApp (3 modelos), Web Push (2 modelos) e toggle de confirmação. - `GuestDetailsModal.tsx`: Modal de auditoria com ficha cadastral do convidado e histórico de notificações. - `EventDetailView.tsx`: Orquestrador principal da tela de detalhes. 3. **Página de Rota Enxuta**: - [`src/app/admin/eventos/[slug]/page.tsx`](file:///c:/Projetos/site/src/app/admin/eventos/%5Bslug%5D/page.tsx) reduzida a ~10 linhas, delegando a responsabilidade visual para `<EventDetailView slug={slug} />`.
- Arquitetura 100% modular, desacoplada e tipada, mantendo fidelidade visual idêntica (pixel-perfect) e funcionamento perfeito dos disparos multicanal.
🏗️Arquitetura & UI / Componentização do Hub de Gestão de Eventos (/admin/eventos)
Refatoração e componentização completa da tela principal de **Gestão de Eventos & RSVP** (`/admin/eventos`), estruturando a camada de domínio desacoplada em `src/features/eventos/`: 1. **Métricas Consolidadas no Topo (`EventsMetricsBar.tsx`)**: - Barra superior com 4 indicadores globais: Total de Eventos, Convidados Inscritos, Presenças Confirmadas e Taxa Média de Conversão (RSVP). 2. **Barra de Filtros e Busca Rápida (`EventsFiltersBar.tsx`)**: - Abas dinâmicas com contadores por status: `Todos os Eventos`, `Ativos / Próximos`, `Em Planejamento` e `Concluídos`. - Campo de busca instantânea por título, localidade, slug e descrição. 3. **Card Rico de Evento (`EventCard.tsx`)**: - Exibição de metadados completos (Data, Horário, Local com ícones dourados). - Barra de progresso visual de confirmação proporcional ao total de inscritos. - Botão direto de acesso ao painel de convidados e disparos multicanal (`/admin/eventos/[slug]`). 4. **Modal de Cadastro de Eventos (`EventCreateModal.tsx`)**: - Formulário com geração automática de slug, definição de data, horário, local, status e objetivo. 5. **Orquestração e Tipagem Desacoplada**: - Criação de `src/features/eventos/` (`EventsHubView.tsx`, `EventsHubHeader.tsx`, `Event.types.ts`). - Transformação de [`/admin/eventos/page.tsx`](file:///c:/Projetos/site/src/app/admin/eventos/page.tsx) em um Server Component limpo.
- O Hub de Eventos agora é 100% modular, filtrável, interativo e pronto para suportar múltiplos eventos corporativos com alta fidelidade visual.
🎨UI & Correção / Ajuste de Largura Automática (w-fit) para Badges em PageHeader
Correção do comportamento de expansão horizontal dos badges em cabeçalhos de página: 1. **Contenção Estrita de Largura no `PageHeader`**: - Ajustado o container do slot `badge` em [`PageHeader.tsx`](file:///c:/Projetos/site/src/components/ui/PageHeader/PageHeader.tsx) para `<div className="flex items-center gap-2 mb-2 w-fit">`, garantindo que qualquer badge injetado envolva perfeitamente apenas o seu conteúdo textual. 2. **Uso de `inline-flex w-fit` nos Cabeçalhos de Módulo**: - Atualizados [`DashboardHeader.tsx`](file:///c:/Projetos/site/src/features/dashboard/components/DashboardHeader.tsx) e [`JobPositionsHeader.tsx`](file:///c:/Projetos/site/src/features/recrutamento/components/vagas/JobPositionsHeader.tsx).
- O badge agora possui visual elegante e compacto em formato de cápsula ajustada ao tamanho exato do texto e ícone, sem esticar horizontalmente.
🏗️Arquitetura & UI / Componentização da Visão Geral (Dashboard) com Cards Clicáveis e Separação de Ferramentas
Refatoração e componentização completa da tela de **Visão Geral** (`/admin`): 1. **Cards de Métricas Numéricas Reais & Clicáveis (`DashboardStatCard`)**: - Remoção dos cards não-numéricos (Sanity CMS e Importador) do grid de estatísticas superiores. - O grid superior agora exibe exclusivamente 4 métricas reais e dinâmicas: - 🎫 *THE ONE 360° (Eventos)*: Total de convidados e confirmados → Link para `/admin/eventos`. - 👥 *Candidaturas RH*: Total de inscritos no banco → Link para `/admin/candidatos`. - 💼 *Vagas no Portal*: Total de vagas ativas no Sanity → Link para `/admin/candidatos`. - ✉️ *Central de Templates*: Total de templates de e-mail/WhatsApp → Link para `/admin/templates`. - Todos os cartões de estatísticas são links navegáveis inteiros com efeito hover sofisticado (`ArrowUpRight`, elevação e glow decorativo). 2. **Separação de Módulos Operacionais e Ferramentas**: - Criação da seção **"Módulos Administrativos"** com cartões detalhados para Eventos, Recrutamento e Templates. - Criação da seção dedicada **"Ferramentas & Integrações"** para *Sanity Studio (CMS)*, *Central de Artigos (JSON/IA)* e *Portal Trabalhe Conosco (Página Pública)*. 3. **Desacoplamento Arquitetural (`src/features/dashboard/`)**: - Isolamento de componentes: `AdminDashboardView.tsx`, `DashboardHeader.tsx`, `DashboardStatCard.tsx`, `DashboardMetricsGrid.tsx`, `DashboardModuleCard.tsx`, `DashboardToolCard.tsx` e `DashboardModulesSection.tsx`. - A página `/admin/page.tsx` foi transformada em um Server Component limpo com buscas concorrentes via Supabase e Sanity.
- Visão Geral 100% modular, navegável e intuitiva, com clara distinção entre métricas em tempo real e ferramentas de conteúdo.
📐UI & Layout / Expansão Edge-to-Edge do Painel Administrativo
Ajuste na ocupação espacial e largura lateral de todas as visualizações do Hub Administrativo: 1. **Ocupação Lateral Total (`w-full`)**: - Remoção das restrições de largura máxima (`max-w-7xl`, `max-w-6xl`) nas telas de Recrutamento (Pipeline de Candidatos e Gestão de Vagas), Central de Eventos, Central de Templates e Dashboard Geral. 2. **Ajuste de Padding no Layout Global (`AdminLayout`)**: - Transição do container `<main>` para preenchimento lateral otimizado (`p-4 sm:p-6 lg:p-8 w-full min-w-0`), aproveitando 100% da área útil disponível entre a barra lateral (Sidebar) e a borda da tela.
- O quadro Kanban, a tabela de candidatos e todas as telas administrativas agora utilizam todo o espaço horizontal disponível, proporcionando excelente visibilidade e conforto operacional.
✨Feature & UI Pura / Menu de Ações no Kanban e Personalizador Avançado de Cards (Campo, Destaque e Local)
Implementação completa da personalização dinâmica dos cards do quadro Kanban e do menu de ações contextuais para candidatos: 1. **Menu de Ações no Card do Kanban (`ActionMenu`)**: - Cada card do Kanban agora conta com o botão de menu de 3 pontinhos (`MoreVertical`) no canto superior direito. - Disponibiliza 5 ações diretas: - 👁️ *Ver Detalhes / Currículo* - 🔄 *Alterar Etapa (com registro de parecer)* - 💬 *Enviar WhatsApp (Central de Mensagens)* - ✉️ *Enviar E-mail* - 🗑️ *Excluir Candidatura (com confirmação)* - O clique no menu interrompe a propagação para evitar abrir o card ou disparar arrasto. 2. **Personalizador Avançado de Cards (`CardCustomizerModal.tsx`)**: - Modal acessível pela Toolbar no botão **"Personalizar Cards"**. - Matriz completa de customização permitindo definir para cada campo (`Nome`, `Protocolo`, `Vaga`, `Data`, `E-mail`, `Telefone`, `WhatsApp`, `Currículo`): - **Visibilidade**: Exibir ou Ocultar. - **Local no Card**: `Header` (Topo), `Body` (Corpo) ou `Footer` (Rodapé). - **Nível de Destaque**: `Identidade` (Tamanho e peso proeminente), `Destaque` (Badge dourado / Ênfase de cor) ou `Comum` (Texto discreto e muted com ícone). 3. **Persistência no `localStorage`**: - As escolhas de visualização do usuário são gravadas no navegador (`theone_kanban_card_config`) e restauradas automaticamente em novas sessões, com botão de "Restaurar Padrão".
- O usuário tem controle total sobre quais informações deseja ver em cada área do card (Header, Body, Footer) com diferentes pesos visuais, além de acesso instantâneo às ações de gestão de candidatos no Kanban.
🏗️Arquitetura, Componentização & UI Pura / Refatoração Completa do Ecossistema de Recrutamento
Refatoração e desacoplamento arquitetural completo de todo o domínio de Recrutamento & Seleção (Admin e Portal Público), mantendo 100% de paridade visual (pixel-perfect) e integridade funcional: 1. **Primitivo de UI Pura (`Toast`)**: - Criação de `src/components/ui/Toast/` (`Toast.tsx`, `Toast.types.ts`, `useToast.ts`), eliminando marcações duplicadas inline e padronizando notificações com suporte a variantes (`success`, `error`, `warning`, `info`). 2. **Modularização de Filtros e Métricas do Pipeline (`RecruitmentView`)**: - Criação de `RecruitmentMetricsBar.tsx` para os 6 cartões de status e contadores. - Criação de `JobFilterPopover.tsx` e `StatusFilterPopover.tsx` em `filters/`, isolando a lógica de portais flutuantes. 3. **Desacoplamento Completo da Gestão de Vagas (`vagas/` e `useJobPositions`)**: - Criação do hook `useJobPositions.ts` para orquestração de CRUD, toggles e loading. - Fatiamento de `JobPositionsManager` em `JobPositionsHeader.tsx`, `JobPositionCard.tsx`, `JobPositionsGrid.tsx`, `JobPositionModal.tsx` e `JobPositionsView.tsx`. - `JobPositionsManager.tsx` agora atua como casca de compatibilidade reexportadora. 4. **Componentização do Wizard Público de Candidatura (`wizard/`)**: - Fatiamento de `JobWizardForm.tsx` em `JobWizardHeader.tsx`, `JobWizardStepContact.tsx`, `JobWizardStepQuestions.tsx`, `JobWizardStepReview.tsx`, `JobWizardStepSuccess.tsx` e `JobWizardFooter.tsx`. 5. **Componente de Card Público de Vagas (`PublicJobCard.tsx`)**: - Criação de `PublicJobCard.tsx` em `src/features/recrutamento/components/public/` e integração na rota pública `/trabalhe-conosco`.
- Arquitetura 100% desacoplada e modular, zero componentes monolíticos e conformidade total com os padrões de design system e UI Pura do projeto.
🔄Fluxo & Governança / Abertura de Modal de Parecer ao Mover Cards no Kanban
Aprimoramento do fluxo de governança e histórico no quadro Kanban: 1. **Confirmação com Parecer Obrigatório**: - Ao arrastar um candidato para outra coluna de status, o sistema agora abre automaticamente o modal `CandidateStageModal` pré-configurado com a etapa de destino. - O avaliador/RH deve inserir o parecer/justificativa da decisão antes de confirmar a transição. 2. **Registro e Rastreabilidade**: - O parecer é gravado no histórico de auditoria do candidato no banco de dados e a tela é atualizada com notificação de sucesso.
- Toda mudança de etapa realizada por drag & drop no Kanban passa pelo registro obrigatório de parecer técnico do RH.
🔗Navegação & UI / Inclusão do Link "Trabalhe Conosco" no Rodapé (Footer)
Inclusão do atalho de navegação pública para o portal de carreiras e recrutamento: 1. **Link no Rodapé Global (`Footer.tsx`)**: - Adicionado o link `/trabalhe-conosco` na seção "Navegação" do rodapé institucional.
- Os visitantes e candidatos agora têm acesso direto ao portal de vagas e candidaturas a partir de qualquer página pública do site.
🎨UI & Layout / Altura Uniforme das Colunas do Kanban e Scrollbar Oculta
Ajuste fino no layout estrutural do quadro Kanban: 1. **Alinhamento e Altura Uniforme**: - Todas as 5 colunas agora possuem a mesma altura fixa e responsiva (`h-[calc(100vh-280px)] min-h-[580px] max-h-[850px]` com `items-stretch`), eliminando a distorção visual onde apenas a coluna com muitos cards se expandia. 2. **Scroll Invisível / Oculto (`no-scrollbar`)**: - A rolagem vertical dos cards permanece 100% funcional (via scroll do mouse, trackpad ou touch), porém com a barra de rolagem visualmente oculta para uma estética limpa e moderna. 3. **Área de Soltura em Colunas Vazias**: - Container centralizado preenchendo toda a altura da coluna vazia para drop intuitivo.
- O quadro Kanban permanece perfeitamente nivelado, alinhado e elegante, sem que nenhuma coluna quebre a harmonia visual da tela.
📐Layout & UI / Integração da Central de Artigos no Layout do Painel Administrativo (/admin/artigos)
Migração da Central de Artigos para o interior do layout administrativo corporativo: 1. **Integração no Layout com Sidebar (`AdminLayout`)**: - Criação da rota oficial [`/admin/artigos`](file:///c:/Projetos/site/src/app/admin/artigos/page.tsx) dentro do grupo de rotas administrativas. - A página agora é renderizada com a **Barra Lateral (Sidebar)** do Admin e sem o cabeçalho e rodapé do site público. 2. **Redirecionamento Automático**: - A rota legada [`/subir-artigos`](file:///c:/Projetos/site/src/app/%28site%29/subir-artigos/page.tsx) foi convertida em um redirecionamento seguro para `/admin/artigos`. - Atualizados os links de navegação na Sidebar (`/admin/artigos`) e nos cards da Visão Geral.
- Experiência visual 100% integrada e coerente com o restante do Hub Administrativo.
🏗️Arquitetura & Segurança / Remoção de Login Secundário e Componentização Modular da Central de Artigos
Refatoração da **Central de Artigos** ([`/subir-artigos`](file:///c:/Projetos/site/src/app/%28site%29/subir-artigos/page.tsx)), eliminando a tela de login secundária e desacoplando a lógica de importação na camada `src/features/artigos/`: 1. **Eliminação do Login Secundário**: - A rota já é estritamente protegida no nível de infraestrutura pelo Supabase Auth (`src/proxy.ts`). Foi removido o formulário de senha local e o token de `localStorage`. - A API de importação ([`/api/artigos/import`](file:///c:/Projetos/site/src/app/api/artigos/import/route.ts)) agora valida a sessão de usuário autenticado do Supabase via cookies de servidor (`createServerSupabase`), mantendo fallback de senha de ambiente apenas para scripts CLI. 2. **Hook de Domínio (`useArticleImport.ts`)**: - Centraliza o processamento de múltiplos arquivos `.json`, leitura com `FileReader`, parsing de Portable Text, validação de tags de SEO, controle de fila e submissão em lote. 3. **Componentes Modulares em `src/features/artigos/components/importador/`**: - `ArticleImportHeader.tsx`: Cabeçalho com PageHeader, badge `IA & Lote` e atalho para o Sanity Studio. - `ArticleDropzone.tsx`: Área de upload e arrasto (*drag and drop*) com feedback visual interativo. - `ArticleQueueCard.tsx`: Card de pré-visualização individual do artigo (título, subtítulo, resumo, categoria, tags, contagem de palavras e botão de exclusão da fila). - `ArticleQueueGrid.tsx`: Grid da fila de artigos com botões "Limpar Fila" e "Importar Artigos no Sanity" com spinner de carregamento. - `ArticleImportResults.tsx`: Painel de relatório com links diretos para os artigos criados no portal. - `ArticleImportView.tsx`: Orquestrador principal da tela de importação. 4. **Página de Rota Enxuta**: - [`src/app/(site)/subir-artigos/page.tsx`](file:///c:/Projetos/site/src/app/%28site%29/subir-artigos/page.tsx) reduzida a uma casca limpa de renderização de `<ArticleImportView />`.
- Experiência fluida e unificada de autenticação com o ecossistema The One, código 100% componentizado e sem travas manuais de senha desnecessárias.
✨Feature & UI Pura / Kanban com Drag & Drop, Ordenação por Coluna e Seletor de Campos do Card
Implementação completa da experiência interativa do **Quadro Kanban de Recrutamento & Seleção**: 1. **Arrasta e Solta (Drag & Drop) Nativo**: - Transição de status ao arrastar cards entre colunas com atualização otimista instantânea no estado e persistência no Supabase. - Feedback visual moderno: opacidade de arraste (`opacity-40 scale-[0.98] border-dashed border-gold/60`), destaque da coluna alvo e indicador de inserção. 2. **Ordenação por Coluna**: - Botão de ordenação independente em cada cabeçalho de coluna (`Mais Recentes`, `Mais Antigos`, `Nome A-Z`, `Nome Z-A`) com ícones dinâmicos de direção (`ArrowUp`/`ArrowDown`). 3. **Seletor de Campos do Card na Toolbar (`DataViewToolbar`)**: - No modo Kanban, o botão **"Campos do Card"** permite alternar em tempo real a visibilidade de dados como *Protocolo*, *Data*, *Vaga*, *WhatsApp*, *Currículo*, *E-mail* e *Telefone*. 4. **Card Componentizado (`KanbanCard.tsx`)**: - Refatoração do componente de UI pura para a nova linguagem visual (`rounded-xl`), cursor dinâmico `cursor-grab active:cursor-grabbing`, elevação suave e slots desacoplados.
- O gestor de RH agora pode gerenciar candidatos arrastando cards entre etapas, ordenar colunas individualmente e personalizar quais informações aparecem nos cards.
🔧Correção & Schema / Persistência e Edição de Perguntas Dinâmicas da Vaga (Etapa 3)
Correção do salvamento, recuperação e edição de perguntas personalizadas do questionário de candidatura: 1. **Schema do Sanity (`jobPositionType.ts`)**: Adicionado o campo oficial `questions` (array de objetos com `questionKey`, `title`, `subtitle`, `type`, `isRequired`, `options`) diretamente no documento de cada vaga. 2. **Consultas e Modelagem (`jobs.ts`)**: Atualizada a interface `JobPosition` e projeções GROQ (`fetchJobPositions` e `fetchJobPositionBySlug`) para carregar o array `questions`. 3. **API Administrativa (`api/admin/vagas/route.ts`)**: - `GET`: Retorna o array `questions` de cada vaga. - `POST` & `PUT`: Sanitizam e persistem as perguntas vinculadas ao documento da vaga com chaves únicas (`_key` e `questionKey`). 4. **Painel Administrativo (`JobPositionsManager.tsx`)**: - `handleOpenEditModal`: Carrega as perguntas existentes da vaga no formulário (Aba 4). - Suporte a múltiplos tipos de resposta (`input_text`, `textarea`, `yes_no`, `select` com opções separadas por vírgula). 5. **Formulário de Inscrição (`JobWizardForm.tsx`)**: Prioriza as perguntas específicas cadastradas para a vaga com fallback para as perguntas globais do RH.
- Perguntas customizadas configuradas na Aba 4 são salvas no Sanity, recarregadas ao editar a vaga e exibidas aos candidatos na Etapa 3 do formulário.
🎨Correção / UI & Layout / Ajuste de Deslocamento Sticky na Página de Detalhes da Vaga
Correção de sobreposição visual do card flutuante de resumo da vaga pelo menu de navegação global (`Header`): 1. **Compensação de Altura do Header Fixo**: - Ajustado o recuo superior da página (`pt-28 sm:pt-32`) para acomodar a altura do cabeçalho fixo (`h-20 sm:h-24`). 2. **Deslocamento do Card Lateral (*Sticky Offset*)**: - Atualizada a classe de fixação de `lg:top-8` para `lg:top-28 z-20`, garantindo uma folga visual perfeita abaixo do cabeçalho durante a rolagem completa da página.
- O card de resumo da vaga desliza suavemente e para abaixo do cabeçalho sem nenhuma sobreposição ou corte de texto.
🎨UI Pura & Layout / Expansão de Largura Dinâmica no Primitivo `Modal` (`4xl`, `5xl`, `6xl`, `full`)
Aprimoramento da flexibilidade de dimensionamento do componente primitivo `Modal` e ampliação do modal de vagas: 1. **Suporte a Novas Larguras (`Modal.types.ts` & `Modal.tsx`)**: - `sm` (384px), `md` (448px), `lg` (512px), `xl` (576px), `2xl` (672px), `3xl` (768px), **`4xl` (896px)**, **`5xl` (1024px)**, **`6xl` (1152px)** e **`full` (95vw)**. 2. **Modal de Vagas Ampliado (`JobPositionsManager.tsx`)**: - Atualizado para `maxWidth="5xl"` (1024px), proporcionando maior amplitude, legibilidade e conforto visual para preenchimento de formulários longos e uso do editor de texto rico.
- Modal de vagas significativamente mais espaçoso e confortável para edição, mantendo 100% de responsividade em telas menores.
🎨UI Pura & Componentização / Componente `RichTextEditor` & `RichTextToolbar`
Criação e integração do componente genérico de UI Pura `RichTextEditor` para edição rica de textos, descrições e conteúdos estruturados: 1. **Arquitetura de UI Desacoplada (`src/components/ui/RichTextEditor/`)**: - `RichTextToolbar.tsx`: Barra de ferramentas modular com suporte a H2, H3, H4, Negrito, Itálico, Listas (com marcadores e numeradas), Citações, Links, Código e Limpeza. - `RichTextEditor.tsx`: Editor com manipulação precisa de cursor, suporte a atalhos de teclado (`Ctrl+B`, `Ctrl+I`, `Tab`), alternador entre abas *Editar* e *Pré-visualizar*, além de contagem em tempo real de palavras e caracteres. - `RichTextEditor.types.ts` e `index.ts`: Contrato de tipos reutilizável e fortemente tipado. 2. **Integração no Painel (`JobPositionsManager.tsx`)**: Substituição da implementação inline pela instância do `<RichTextEditor />` na aba de descrição de vagas. 3. **Compatibilidade Sanity Studio (`jobPositionType.ts`)**: Adicionados estilos `h4` e `blockquote` ao schema de Portable Text para evitar erros de renderização no Studio.
- Interface de edição de texto rica, padronizada no Design System, reutilizável e com pré-visualização em tempo real.
🔧Correção / Build Turbopack / Isolamento de Client Component para o Sanity Studio
Resolução do erro de bundling no Turbopack / Next.js (*"Export default doesn't exist in target module swr/react-server.mjs"*): 1. **Isolamento de Camada Client (`Studio.tsx`)**: Criado o componente com diretiva `'use client'` para encapsular a importação do `sanity.config.ts` e do `NextStudio`. Isso impede que o compilador do Next.js processe dependências exclusivas de cliente (como `swr` e plugins de estrutura do Sanity) no contexto de React Server Components (`app-rsc`). 2. **Camada Server de Rota (`page.tsx`)**: Mantém a exportação estática de metadados, viewport e instanciação do `<Studio />`.
- Compilação e carregamento instantâneos do Sanity Studio sem conflito de módulos Server/Client no Turbopack.
🔧Correção / Sanity Studio / Resolução de Conflito de Hook no `NextStudio`
Correção do erro de React Hooks no Sanity Studio (*"The final argument passed to useMemo changed size between renders"*): 1. **Padronização do `NextStudio`**: Removido o import dinâmico com `ssr: false` que causava divergência de hidratação nos arrays de dependência de `useMemo`. 2. **Exportação Oficial Next.js App Router**: Atualizado `src/app/studio/[[...tool]]/page.tsx` para o padrão oficial da biblioteca `next-sanity/studio` com `export const dynamic = 'force-static'` e metadata nativa.
- O Sanity Studio (`/studio`) carrega sem erros de console ou incompatibilidade de hooks no React / Turbopack.
🎨UI & UX / Ocultação do Botão Flutuante "Simular Agora" nas Páginas de Candidatura
Remoção e ocultação global do botão flutuante de simulação (*"Simular Agora"* / `FloatingCta`) em todas as rotas do funil de recrutamento: 1. **Regra de Rota no Componente Flutuante (`FloatingCta.tsx`)**: O componente agora verifica automaticamente a rota via `usePathname()` e se oculta de forma transparente em `/trabalhe-conosco`, `/trabalhe-conosco/[slug]`, `/trabalhe-conosco/[slug]/candidatar` e no painel `/admin`. 2. **Limpeza de Componentes**: Removidas chamadas residuais de `<FloatingCta />` nas páginas de listagem e detalhes de vagas.
- Experiência focada exclusivamente no processo seletivo e envio de currículo sem distrações de simulação comercial.
✨Feature & Schema / Suporte ao Campo de Remuneração e Faixa Salarial
Implementação do campo opcional de remuneração / salário para divulgação de vagas: 1. **Flexibilidade de Formato**: O campo aceita valor fixo único (ex.: *R$ 4.500,00*), faixa salarial (ex.: *R$ 3.500 a R$ 5.000,00*), termos flexíveis (ex.: *A combinar*) ou pode ser deixado em branco. 2. **Schema do Sanity (`jobPositionType.ts`)**: Adicionado campo `salary` (string opcional) com validação e descrição no estúdio. 3. **Painel Administrativo (`JobPositionsManager.tsx`)**: Campo integrado na aba *Informações Gerais* e exibição da remuneração no `meta` dos cards (`DataCard`). 4. **Páginas Públicas (`/trabalhe-conosco` e `/trabalhe-conosco/[slug]`)**: Exibição da remuneração com destaque visual através de badge verde semântico (`bg-status-approved/15`) e no resumo lateral da oportunidade.
- Transparência salarial configurável para cada vaga com suporte a valores fixos, faixas ou omissão.
🎨UI & UX / Limpeza de Jargões Técnicos no Painel Administrativo
Revisão e substituição de todos os termos e jargões técnicos de infraestrutura (`Sanity`, `Portable Text`, `Graph API`, etc.) por terminologias amigáveis de negócios voltadas para o usuário final: 1. **Abas e Modais**: - De *"Descrição Completa (Sanity)"* para **"Descrição da Vaga"**. - De *"Editor de Descrição Completa (Portable Text)"* para **"Editor de Descrição da Oportunidade"**. - De *"URL Amigável (Slug)"* para **"URL Amigável (Link da Vaga)"**. 2. **Mensagens e Notificações (Toasts)**: - De *"Vaga publicada com sucesso no Sanity Studio!"* para **"Vaga publicada com sucesso no portal!"**. - De *"Carregando vagas do Sanity Studio..."* para **"Carregando oportunidades cadastradas..."**. 3. **Módulos de Eventos e Disparos**: - De *"Enviar E-mail (Graph API)"* para **"Enviar E-mail Oficial"**.
- Interface 100% humanizada, intuitiva e amigável para a equipe de Gente & Gestão e administradores não técnicos.
🔧Correção / UI & Primitivos / Renderização de Abas e Formulários no `Modal`
Correção na renderização do componente primitivo `Modal`: 1. **Renderização de `children` com Abas**: O primitivo `Modal` agora renderiza a barra de abas (`Tabs`) no cabeçalho e garante a renderização contínua do conteúdo/formulário recebido via `children`. 2. **Scroll Responsivo (`max-h-[92vh]`)**: Adicionado controle de altura máxima e overflow com rolagem suave no corpo do modal para evitar cortes em formulários longos.
- O modal de edição/criação de vagas agora exibe todos os formulários e campos das 4 abas perfeitamente.
✨Feature & Schema / Compatibilidade Total com Schema do Sanity, Editor de Descrição Completa e Adaptação da Página Pública
Total compatibilidade entre o formulário/modal do painel administrativo, o schema do Sanity Studio e a página pública da vaga (`/trabalhe-conosco/[slug]`): 1. **Modal de Vagas com Abas Declarativas (`JobPositionsManager.tsx`)**: - **Aba 1 (Informações Gerais)**: Título, Slug customizável, Departamento, Localização/Modelo, Contrato, Nível de Senioridade, Resumo (*excerpt*), Toggles de Vaga Ativa e Destaque (*featured*) e Ordem de exibição. - **Aba 2 (Descrição Completa / Portable Text)**: Editor amplo com conversão bidirecional Markdown ↔ Portable Text e botões de atalho (`## H2`, `### H3`, `- Lista`, `**Negrito**`, `> Citação`). - **Aba 3 (Requisitos & Benefícios)**: Gerenciamento dinâmico de itens com adição/remoção em tempo real. - **Aba 4 (Questionário)**: Configuração de campos e perguntas dinâmicas para a etapa 3 do formulário público. 2. **Conversor Bidirecional (`src/lib/portableTextHelpers.ts`)**: - `portableTextToMarkdown`: Converte blocos do Sanity Portable Text para edição legível no painel. - `markdownToPortableText`: Converte texto formatado de volta em blocos nativos do Sanity (`h2`, `h3`, `normal`, `bullet`, `strong`, etc.). 3. **Página Pública da Vaga (`src/app/(site)/trabalhe-conosco/[slug]/page.tsx`)**: - Layout moderno com grid de 2 colunas: - Renderização da **Descrição Completa** via `PortableTextRenderer`. - Seção dedicada de **Requisitos & Qualificações** com marcadores estilizados. - Seção dedicada de **Benefícios & Diferenciais The One** em grid de cards. - Painel lateral *sticky* com resumo da vaga (Área, Local, Regime, Senioridade) e botão de candidatura rápida. - Banner final de CTA para submissão direta.
- Sincronização 100% fiel com o schema do Sanity Studio, permitindo ao RH redigir descrições completas e detalhadas que são refletidas com alta fidelidade visual na página pública da vaga.
✨Feature & UX / Dropdown no Card de Vagas, Card Clicável e Modal de Edição
Implementação do menu de ações dropdown no card de vagas, tornando o card clicável e permitindo edição completa diretamente pelo painel: 1. **Dropdown de Ações no `DataCard` (`ActionMenu`)**: - 👥 **Ver Candidatos**: Filtra a tabela de candidatos automaticamente pelo slug da vaga e alterna para a aba *"Candidatos & Pipeline"*. - ✏️ **Editar Vaga**: Abre o modal com os dados da vaga pré-carregados para alteração de título, departamento, localização, contrato, nível, resumo, requisitos e benefícios. - 🗑️ **Excluir Vaga**: Opção com confirmação e exclusão no Sanity Studio. 2. **Card Clicável**: Ao clicar em qualquer área do card da vaga, abre o modal de visualização e edição. 3. **Endpoint PUT em `/api/admin/vagas`**: Adicionado suporte para atualização de vagas no Sanity CMS com regeneração dos blocos formatados de Portable Text.
- Gestão ágil de vagas com acesso direto aos candidatos daquela posição e edição visual completa via modal.
🔧Correção / Sanity Schema & Rotas / Sincronização de Vagas & Resolução do 404
Diagnóstico e correção dos avisos de schema do Sanity Studio (*"Unknown fields found"*) e do erro 404 ao acessar vagas recém-criadas: 1. **Adição dos Campos `requirements` e `benefits` ao Schema (`jobPositionType.ts`)**: Inseridas definições explícitas de arrays de string no schema do Sanity para requisitos e benefícios da vaga. 2. **Unificação do Campo `active`**: Ajustado o endpoint `/api/admin/vagas` para gravar estritamente a propriedade oficial `active: true` do schema (removendo `isActive`), eliminando o aviso de campo desconhecido. 3. **Resolução do 404 na Página da Vaga (`/trabalhe-conosco/[slug]`)**: Atualizadas as consultas GROQ em `src/lib/jobs.ts` para buscar `active != false`, garantindo que vagas recém-criadas sejam encontradas e renderizadas imediatamente. 4. **Enriquecimento do Portable Text**: Requisitos e benefícios são automaticamente convertidos em blocos formatados de lista no `description` da vaga.
- Vagas criadas no painel abrem instantaneamente na página pública `/trabalhe-conosco/[slug]` sem erro 404 e sem warnings no Sanity Studio.
🏗️Design System & UI / Componentização da Aba de Gestão de Vagas (`JobPositionsManager`)
Padronização da aba **Gestão de Vagas (Sanity)** e criação da casca visual pura `DataCard`: 1. **Primitivo `DataCard` (`src/components/ui/DataCard/`)**: Casca visual genérica e agnóstica para cards de conteúdo com slots flexíveis para `badge`, `headerActions`, `title`, `description`, `meta`, `footerLeft` e `footerRight`. 2. **Header da Aba Padronizado (`PageHeader`)**: O cabeçalho interno da aba agora utiliza o primitivo `<PageHeader />` com título e descrição alinhados. 3. **Remoção do Atalho do Sanity Studio**: Removido o botão de atalho externo para o Sanity Studio da aba de gestão de vagas conforme solicitado. 4. **Botões e Ações Padrão (`Button` e `IconButton`)**: Botão de cadastro (*"Cadastrar Nova Vaga"*), botões do modal (*"Cancelar"* e *"Publicar no Portal"*) e botão de exclusão de vaga migrados para os primitivos de UI.
- Aba de gestão de vagas 100% componentizada com design system puro e sem links residuais externos desnecessários.
🏗️Design System & UI Pura / Primitivos `PageHeader`, `Button` e `StatCard`
Padronização e migração de todo o cabeçalho e cards de métricas do painel de recrutamento para componentes puros e reutilizáveis do Design System: 1. **Primitivo `PageHeader` (`src/components/ui/PageHeader/`)**: Casca visual desacoplada com slots flexíveis para `badge`, `title`, `description` e `actions`. 2. **Primitivo `Button` (`src/components/ui/Button/`)**: Componente polimórfico (botão ou link Next.js) com suporte a variantes do tema (`gold`, `primary`, `secondary`, `outline`, `ghost`, `danger`, `success`), tamanhos e ícones. 3. **Primitivo `StatCard` (`src/components/ui/StatCard/`)**: Card estatístico universal com suporte a variantes semânticas por status (`default`, `received`, `analyzing`, `interview`, `approved`, `rejected`, `gold`), ícones e subtextos. 4. **Refatoração do `RecruitmentView.tsx`**: O topo da página agora consome exclusivamente `<PageHeader />`, `<Badge />`, `<Button />` e `<StatCard />`, eliminando qualquer HTML ou estilo inline repetido.
- Topo do painel 100% componentizado, modular e reutilizável em qualquer módulo administrativo da plataforma.
🔧Correção / Deploy / Docker Build Args para Supabase Auth
Diagnóstico e correção do erro de autenticação em ambiente de produção Docker (*"Erro ao conectar com o serviço de autenticação"*): 1. **Causa Raiz**: No Next.js, variáveis com prefixo `NEXT_PUBLIC_*` são embutidas diretamente no bundle JavaScript do cliente durante o estágio de compilação (`npm run build`). No `dockerfile` e no `docker-compose.yml`, apenas as variáveis do Sanity estavam declaradas nos `args` de build, fazendo com que `NEXT_PUBLIC_SUPABASE_URL` e `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` fossem compiladas como `undefined` no frontend. 2. **Correção no Dockerfile & Compose**: Adicionados os `ARG` e `ENV` correspondentes a `NEXT_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` e `NEXT_PUBLIC_SITE_URL` no `dockerfile` e mapeados nos `args` do `docker-compose.yml` a partir do `stack.env`.
- O cliente de autenticação do Supabase no browser recebe os endpoints corretos compilados, permitindo o login sem falhas em produção.
🔧Correção / CMS / Exibição no Menu do Sanity Studio
Correção na navegação do Sanity Studio (`sanity.config.ts`): 1. **Inclusão no Menu Lateral**: Os tipos singleton `privacyPolicy` e `termsOfUse` estavam cadastrados no conjunto de exclusão `singletonTypes` da lista genérica, porém os botões diretos de navegação (`S.listItem()`) ainda não haviam sido declarados na barra lateral do Studio. 2. **Novas Entradas Visíveis**: Adicionados os itens **📜 Política de Privacidade & LGPD** e **⚖️ Termos e Condições de Uso** diretamente na barra lateral do Sanity Studio (`/studio`).
- Os documentos de Política de Privacidade e Termos de Uso agora aparecem diretamente no menu lateral esquerdo do Sanity Studio para edição visual direta.
📜Feature / Conteúdo & Legal / Política de Privacidade Meta & WhatsApp (LGPD)
Atualização integral do documento oficial de Política de Privacidade e Proteção de Dados Pessoais no Sanity CMS, incluindo todas as diretrizes de conformidade com a LGPD e integrações com WhatsApp Business, Meta Platforms e canais de atendimento: 1. **Seed no Sanity CMS (`scripts/seed_privacy_policy.mjs`)**: Extração e publicação automatizada das 22 seções do documento `docs/politica_privacidade_the_one_meta_whatsapp.md` diretamente no documento `privacyPolicy` do Sanity Studio. 2. **Renderização Aprimorada (`src/app/(site)/politica-de-privacidade/page.tsx`)**: Implementado formatador inteligente para subtítulos (`###`), listas com marcadores (`-`) e itens numerados, garantindo legibilidade e harmonia com o tema escuro/dourado da The One. 3. **Data e Metadados**: Última atualização registrada em 21 de Agosto de 2026.
- Política de privacidade atualizada em tempo real no Sanity e refletida na rota `/politica-de-privacidade`.
✨Feature / UX / Dropdown Interativo de Mudança de Status na Tabela
Implementação de menu dropdown interativo na célula de status da tabela de candidatos: 1. **Gatilho Visual no Badge (`CandidateStatusBadge.tsx`)**: O badge de status agora funciona como um gatilho de clique elegante com ícone de chevron giratório (`ChevronDown`) e feedback de hover. 2. **Menu Flutuante via Portal**: Ao clicar no badge, abre um menu flutuante renderizado via `createPortal` com posicionamento inteligente (*smart flip* para cima/baixo), listando todas as etapas disponíveis com marcadores coloridos e marcação de status ativo (`Check`). 3. **Fluxo Unificado com Justificativa do RH**: Ao selecionar uma nova etapa no dropdown, o sistema abre o modal `CandidateStageModal` com a nova etapa pré-selecionada para inserção do parecer obrigatório do RH.
- Mudança de etapa de candidatos rápida e intuitiva diretamente pela coluna de status da tabela.
🎨UI / Design System / Primitivo `Checkbox` com Cantos Suaves
Criação do componente primitivo de interface `Checkbox` (`src/components/ui/Checkbox/`) com controle preciso de raio de curvatura dos cantos, suporte a estado indeterminado e ícones vetoriais dourados: 1. **Primitivo `Checkbox`**: Substitui o checkbox nativo do navegador por um elemento estilizado com `rounded-[7px]`, transições fluidas e ícones SVG (`Check` e `Minus`) renderizados no tema oficial (`bg-gold` / `text-navy-darker`). 2. **Integração com `DataTable.tsx`**: Aplicado no cabeçalho e em todas as linhas da tabela de recrutamento.
- Checkboxes visualmente harmonizados com o design system, com bordas arredondadas suaves (`rounded-[7px]`) e animações de clique.
✨Feature / UX / Seleção Discreta em Lote & Ações Coletivas (Bulk Actions)
Implementação completa da funcionalidade de seleção de linhas em lote com comportamento visual discreto e barra de ações flutuante: 1. **Visual Discreto de Checkbox (`DataTable.tsx`)**: Os checkboxes permanecem invisíveis por padrão, surgindo suavemente (`opacity-0 group-hover:opacity-100`) ao passar o mouse sobre a linha. Assim que qualquer item é marcado, os checkboxes e a coluna permanecem visíveis e fixos (`opacity-100`) até a desmarcação. O cabeçalho possui suporte nativo a estado intermediário (*indeterminate*). 2. **Barra Flutuante de Ações em Lote (`DataTableBulkBar.tsx`)**: Surge com animação no topo da tabela quando há seleção ativa, exibindo o contador de itens selecionados, botão de desmarcar todos e botões/ações em lote permitidas. 3. **Propriedade `bulk` no `ActionMenuItem`**: Introduzida a prop `bulk?: boolean` (padrão `true`). Ações exclusivas de um único candidato (ex: *Exibir Detalhes*, *Enviar WhatsApp*, *Enviar E-mail*) utilizam `bulk: false` e são automaticamente omitidas do menu de lote. 4. **Execução em Lote com Histórico Unificado (`CandidateStageModal.tsx` & `/api/admin/candidatos`)**: As mudanças de etapa em lote (*Entrevista*, *Aprovar*, *Reprovar*) acionam o modal com título dinâmico para múltiplos candidatos e gravam o parecer do RH no histórico de cada candidato individualmente no banco de dados. Exclusão em lote com contagem e confirmação.
- Experiência de gestão em lote ultra-fluida, discreta e segura, permitindo triar dezenas de candidatos simultaneamente sem poluição visual na interface.
🔧Correção / API / Upload de Currículos no Supabase Storage
Diagnóstico e correção na rotina de processamento de anexos na API de candidatura (`/api/trabalhe-conosco`): 1. **Conversão de Buffer Node.js**: O payload do arquivo binário agora é convertido de `ArrayBuffer` para `Buffer.from(arrayBuffer)` antes do envio ao `@supabase/storage-js`, corrigindo a incompatibilidade de streaming no runtime do Node.js. 2. **Criação Automática de Bucket e Logs Detalhados**: Adicionada verificação/criação preventiva do bucket `curriculos` e logs de erro explícitos no console do servidor. 3. **Identificação da Chave `SUPABASE_SERVICE_ROLE_KEY`**: Identificado que o ambiente `.env.local` possuía apenas a chave pública (`sb_publishable_...`), sendo necessária a chave secreta (`sb_secret_...` / `SUPABASE_SERVICE_ROLE_KEY`) para que o servidor possa gravar arquivos no Storage contornando as políticas de RLS.
- Uploads de currículos preparados para envio direto à CDN do Supabase Storage com fallback para anexo de e-mail.
🏗️Design System & UI Pura / Primitivos `Tabs` e `IconButton` / Abas Dinâmicas no `Modal`
Criação e padronização dos primitivos agnósticos de interface `Tabs` e `IconButton`, com suporte a abas dinâmicas declarativas no componente `Modal`: 1. **Primitivo `Tabs` (`src/components/ui/Tabs/`)**: Componente genérico e desacoplado orientado a esquema (`TabItem<T>[]`), com suporte a ícones, contadores numéricos de badge, variantes visuais (`underline`, `pills`, `segmented`) e controle autônomo ou controlado de abas ativas. 2. **Primitivo `IconButton` (`src/components/ui/IconButton/`)**: Componente genérico de botão exclusivo de ícone com suporte a variantes semânticas do tema (`approved`, `interview`, `rejected`, `gold`, `ghost`, `outline`, `default`), tamanhos padronizados (`xs`, `sm`, `md`, `lg`) e acessibilidade com `aria-label`/`title`. 3. **Abas Dinâmicas no `Modal` (`src/components/ui/Modal/`)**: O modal agora aceita nativamente a prop `tabs?: TabItem[]`, eliminando a necessidade de reescrever lógica de abas dentro de cada modal específico. 4. **Refatoração do `CandidateDetailsModal.tsx`**: Migrado para declarar apenas seu esquema de abas (`TabItem[]`) e utilizar `IconButton` em suas ações de cabeçalho. 5. **Refatoração do `RecruitmentView.tsx`**: As abas superiores da tela principal ("Candidatos & Pipeline" e "Gestão de Vagas") agora utilizam o componente `<Tabs />`.
- Arquitetura 100% aderente ao Design System, zero duplicação de lógica de abas nos modais e botões de ícone unificados em toda a plataforma.
✨Feature / UX / Central de Templates WhatsApp
Integração direta de todos os pontos de contato telefônico do painel com o modal de mensagens e templates: 1. **Clique no Telefone da Tabela (`CandidateContactCell.tsx`)**: Ao clicar no número do candidato, abre diretamente o modal com os templates oficiais do WhatsApp pré-carregados e personalizados (`{nome}`, `{vaga}`, `{protocolo}`). 2. **Clique no WhatsApp do Kanban (`RecruitmentView.tsx`)**: No rodapé de cada card do Kanban, o link "WhatsApp" agora aciona a Central de Templates com o candidato em contexto. 3. **Clique no WhatsApp do Modal de Detalhes (`CandidateDetailsModal.tsx`)**: O número de telefone no painel de dados agora também redireciona para a seleção de templates.
- Experiência unificada onde qualquer clique de WhatsApp leva o recrutador diretamente para a seleção de templates com mensagens pré-formatadas para disparo.
🔧Correção / 🎨 UI & UX / Posicionamento Inteligente (Smart Flip)
Implementação de posicionamento inteligente com detecção de colisão de borda de tela (*Smart Flip Positioning*) para todos os menus suspensos e modais flutuantes: 1. **Menu de Ações (`ActionMenu.tsx`)**: Calcula a distância da linha em relação à borda inferior da tela. Se a linha estiver no final da tabela/viewport e o menu não couber abaixo, o menu inverte dinamicamente e abre **para cima** (`translateY(-100%)`), permanecendo 100% visível. 2. **Seletor de Colunas e Filtros (`DataViewToolbar.tsx` e `RecruitmentView.tsx`)**: Adicionada a mesma lógica de *Smart Flip* com rolagem segura (`max-height: calc(100vh - 24px)`) para evitar cortes em telas menores.
- Menus de ação das últimas linhas da tabela nunca mais são cortados ou escondidos pela borda inferior da tela.
📎Carga de Dados / Integração de Anexos
Vinculação dos anexos de currículos mapeados no manifesto (`source/curriculos/manifesto_curriculos.json`): 1. **Atalhos Diretos do Outlook Web**: Vinculados os links diretos de download/popout dos 9 anexos de currículos aos respectivos candidatos no Supabase. 2. **Acesso Imediato no Painel**: Ao clicar no botão **"CV"** na tabela ou **"Abrir Documento"** no modal de detalhes, o anexo original é aberto instantaneamente para visualização pelo time de RH.
- Candidatos agora possuem acesso direto e instantâneo aos seus currículos originais no painel.
🔧Correção / 🎨 UI & UX / 📥 Carga de Dados
Ajustes finos na interface do módulo de recrutamento e importação do histórico legado de candidatos: 1. **Filtros de Coluna sem Borda**: Removida a borda dos ícones de filtro nos cabeçalhos de "Vaga" e "Status" na tabela para um visual mais limpo e minimalista. 2. **Seleção Automática de Etapas via Menu de Ações**: Sincronização via `useEffect` no modal `CandidateStageModal`, garantindo que os botões rápidos do menu de ações ("Convidar para Entrevista", "Aprovar Candidato", "Reprovar Candidato") pré-selecionem automaticamente o status correspondente no formulário. 3. **Dropdown de Seleção de Colunas Imune a Sobreposição (`createPortal`)**: O menu de visibilidade de colunas agora utiliza `createPortal(..., document.body)` com `zIndex: 9999`, garantindo que nenhuma tabela, efeito de desfoque ou container irmão sobreponha o menu. 4. **Importação e Enriquecimento dos Candidatos Legados**: Inseridos e atualizados no Supabase os 11 candidatos recebidos por e-mail armazenados em `source/candidatos.json`, com protocolos originais, telefones reais formatados (WhatsApp) e datas históricas de recebimento registradas.
- Menus e dropdowns 100% livres de sobreposição, transição de etapas fluida e base de candidatos totalmente restaurada com telefones e histórico reais.
🏗️Design System & UI Pura / 🛡️ Regra de Cascas Visuais Agnósticas
Aplicação do **Princípio da Casca Visual Agnóstica** e consolidação de primitivos reutilizáveis: 1. **Regra de Engenharia Mestre (Seção 4.E)**: Adicionada diretriz obrigatória que proíbe cascas visuais por entidade e exige injeção de slots em primitivos de UI pura. 2. **`KanbanCard` (`src/components/ui/DataKanban/KanbanCard.tsx`)**: Primitivo genérico de card para qualquer quadro Kanban do sistema (Recrutamento, Eventos, Cotações, Leads). 3. **`Badge` (`src/components/ui/Badge/`)**: Componente semântico genérico para status, departamentos e categorias. 4. **`ActionMenu` (`src/components/ui/ActionMenu/`)**: Menu flutuante universal (`fixed z-50`) com cálculo de viewport e encerramento ao clicar fora. 5. **Remoção de Código Redundante**: Exclusão de `CandidateKanbanCard.tsx`, refatoração de `CandidateStatusBadge.tsx`, `CandidateActionCell.tsx` e `JobPositionsManager.tsx` para consumir os novos primitivos.
- Eliminação total de cascas visuais acopladas a entidades e reutilização de 100% dos componentes atômicos em todos os módulos.
🏗️Refatoração Arquitetural / ✨ Clean Code & Design System
Refatoração estrutural completa do módulo de **Recrutamento** para aderência de 100% às novas diretrizes de engenharia do projeto: 1. **Camada de UI Pura (`src/components/ui/`)**: Criação de componentes 100% genéricos, agnósticos e parametrizados por tipo `<TData>`: - `DataTable<TData>`: Tabela genérica orientada a esquema de colunas com ordenação, filtros e visibilidade dinâmica. - `DataKanban<TData>`: Quadro Kanban desacoplado com renderização customizada de cards. - `DataViewToolbar`: Barra de ferramentas genérica para busca, alternador de visualização e colunas. - `Modal`: Contêiner genérico de modais com blur reduzido e controles de cabeçalho. 2. **Camada de Feature / Domínio (`src/features/recrutamento/`)**: - `useCandidates`: Hook customizado para gerenciamento de estado, paginação, filtros, mutações e chamadas de API. - `CandidateTableColumns`: Esquema de dados declarativo (`ColumnDef<JobApplication>[]`). - Células atômicas com padrão *Events Up* (`CandidateActionCell`, `CandidateContactCell`, `CandidateResumeCell`, `CandidateStatusBadge`). - Modais dedicados desacoplados (`CandidateDetailsModal`, `CandidateStageModal`, `CandidateMessageModal`). - `RecruitmentView`: Container orquestrador da tela. 3. **Página Enxuta**: `src/app/admin/candidatos/page.tsx` reduzida a um entrypoint limpo que apenas renderiza `<RecruitmentView />`. 4. **Tokens Semânticos de Tema**: Adicionadas variáveis de estado no `@theme` do `globals.css` (`--color-status-received`, `--color-status-analyzing`, `--color-status-interview`, `--color-status-approved`, `--color-status-rejected`).
- Arquitetura 100% modular, desacoplada, fortemente tipada e com zero componentes inline.
🔧Correção / 🎨 UI & UX
Ajuste definitivo no posicionamento dos dropdowns flutuantes da tabela de candidatos: 1. **Dropdowns de Filtro de Vagas e Status Flutuantes (`fixed z-50`)**: Migração do posicionamento absoluto interno do `<th>` para posicionamento fixo (`fixed`) calculado via `getBoundingClientRect()`, escapando completamente do container com `overflow-x-auto` da tabela e impedindo que o menu fique oculto atrás das linhas da tabela. 2. **Dropdown de Seleção de Colunas Flutuante (`fixed z-50`)**: Posicionado de forma fixa sobre a barra de ferramentas e a tabela. 3. **Coluna de Ações Fixa e Incondicional**: Coluna de ações mantida permanentemente acessível à direita da tabela.
- Dropdowns de filtro e colunas abrem 100% livres e desimpedidos por cima de qualquer elemento ou rolagem da tabela.
✨Feature / Segurança / Arquitetura Next.js 16 / Multi-Eventos
Implementação da **Central Administrativa Unificada com Supabase Auth** e do módulo de **Gestão Multi-Eventos** (`/admin/eventos`), incorporando os conectores e o painel de convidados do **THE ONE 360°** (`theone360`). A interceptação e proteção de rotas foi arquitetada em conformidade estrita com o padrão oficial do **Next.js 16 (Turbopack)** via `src/proxy.ts` (substituindo a convenção legada de `middleware.ts`).
- Central Administrativa 100% operacional, protegida por Supabase Auth, com gestão de eventos (THE ONE 360°), módulo completo de gestão de candidaturas de RH e recuperação de histórico de candidaturas anteriores.
🔧Correção / 🎨 UI & UX
Ajuste nas camadas visuais e comportamento de sobreposição de menus na tabela de candidatos: 1. **Menu de Ações Flutuante (`fixed z-50`)**: Posicionado via coordenadas de viewport para flutuar livremente acima da tabela e do scroll horizontal, eliminando qualquer corte (`overflow-hidden` / `overflow-x-auto`). 2. **Elevação do Dropdown de Colunas (`z-50`)**: Correção do empilhamento (`stacking context`) no seletor de colunas ativas para não ficar sob a tabela. 3. **Filtros Multi-Select nos Cabeçalhos**: Substituição dos dropdowns nativos por botões compactos com ícone `<Filter />` que abrem popovers multi-select com checkboxes para **Vagas** e **Status**, permitindo selecionar múltiplos filtros simultaneamente com suporte a limpeza rápida.
- Navegação fluida, menus totalmente visíveis sem cortes e filtros multi-seleção modernos e intuitivos.
✨Feature / UI / Arquitetura & Workflow
Implementação completa da reestruturação do módulo de **Recrutamento** (`/admin/candidatos`), incluindo visualização híbrida (Tabela Dinâmica e Quadro Kanban), seletor de colunas visíveis, filtros inline nos cabeçalhos, ordenação interativa, menu de ações por linha, histórico de transições de etapa com parecer obrigatório, aba integrada para publicação de vagas no **Sanity Studio** e uma nova **Central de Templates de Mensagens** (`/admin/templates`) com suporte a variáveis dinâmicas e disparos via **E-mail (Microsoft Graph)** e **WhatsApp**.
- Módulo de Recrutamento completo, profissional e integrado, com gestão ágil de vagas, controle rigoroso de etapas por parecer e disparos multicanal com templates.
✨Feature / Módulo Completo / Sanity / Wizard UI
Criação do módulo completo **Trabalhe Conosco & Carreiras** na plataforma The One Seguros. O módulo possibilita a exibição e cadastro de vagas de emprego no Sanity Studio, visualização detalhada da vaga e formulário de candidatura multietapas com o **mesmo layout e UX do Wizard de Cotação** (`WizardForm.tsx`), com suporte a upload de currículo (PDF/DOCX) via Supabase Storage, gravação no banco de dados e notificação de candidatura por e-mail para a equipe de RH (`vagas@theoneseguros.com.br`) via Microsoft Graph API.
- Módulo Trabalhe Conosco 100% integrado ao Sanity Studio, Supabase e Microsoft Graph API, oferecendo uma experiência de candidatura rápida, elegante e totalmente responsiva.
✨Feature / UI / CMS / Embeds
Implementação do **Suporte NATIVO a Embeds de Sites e Redes Sociais** (Instagram Posts, Reels, Stories, vídeos do YouTube e iFrames genéricos) no leitor de artigos ([PortableTextRenderer.tsx](file:///c:/Projetos/site/src/components/PortableTextRenderer.tsx)) e no Sanity Studio ([articleType.ts](file:///c:/Projetos/site/src/sanity/schemaTypes/articleType.ts)). Agora é possível incorporar postagens e vídeos diretamente dentro dos artigos com tratamento responsivo, proporções configuráveis (`1:1` quadrado, `9/16` vertical reels/stories, `16/9` horizontal youtube/web) e botões de atalho com link direto para abrir na rede original.
- Artigos podem exibir postagens e Reels do Instagram, vídeos do YouTube e páginas integradas no meio do texto com design responsivo e refinado.
🔧Correção / Schema / UI
Ajuste no JSON Schema de validação ([article-output.schema.json](file:///c:/Projetos/site/.agents/skills/artigo-the-one/schemas/article-output.schema.json)) e no renderizador ([PortableTextRenderer.tsx](file:///c:/Projetos/site/src/components/PortableTextRenderer.tsx)) para permitir **links inline em parágrafos de texto**. Anteriormente, o schema restringia o array de `marks` do span a um enum fechado `["strong", "em", "code"]`, rejeitando qualquer `_key` de link declarado em `markDefs` (ex: `link-1`). O schema agora aceita chaves dinâmicas em `marks` e o `PortableTextRenderer` cruza as chaves dos spans com `markDefs`, renderizando os hiperlinks inline com estilo dourado e sublinhado (`<a href="..." target="_blank">`).
- Artigos com links no meio de parágrafos para portais oficiais (BCB, Planalto, ABAC, IBGE) passam 100% na validação de schema. - Hiperlinks inline são renderizados com estilo acessível e de destaque visual no leitor de artigos.
🎨Feature / Automação / Fallback IA
Atualização da skill `artigo-the-one` ([SKILL.md](file:///c:/Projetos/site/.agents/skills/artigo-the-one/SKILL.md)) adicionando a regra de **Fallback em Vetor SVG** como última alternativa para IAs que não possuem ferramentas nativas de geração de imagem bitmap (ex: **Claude** no Claude.ai ou LLMs sem DALL-E/Midjourney integrados). Quando não houver alternativa para gerar imagem raster, a IA cria um arquivo SVG vetorial (`viewBox="0 0 1600 900"`) com a paleta oficial da marca (Azul Marinho e Dourado), salva em `public/media/artigos/{slug}.svg` ou envia ao Supabase Storage CDN com `contentType: "image/svg+xml"`.
- Suporte total ao Claude e a assistentes de IA que só conseguem gerar código SVG, garantindo que o artigo sempre saia com uma capa pronta de alto padrão.
🔧Correção / Schema / UI
Suporte nativo ao bloco de fontes e referências oficiais (`_type: "reference"` / `_type: "officialReference"`) no Sanity Schema e no renderizador de Portable Text. Resolve o aviso *"Invalid Portable Text value: Block of type reference is not allowed by the schema"*. Os blocos de legislação, normas da SUSEP/ANS e citações legais agora são aceitos sem warnings no Sanity Studio e renderizados no leitor ([PortableTextRenderer.tsx](file:///c:/Projetos/site/src/components/PortableTextRenderer.tsx)) com um card estilizado com ícone de livro/lei, tipo de fonte, título, vigência e botão de atalho "Acessar Fonte".
- Eliminação de alertas de schema no Sanity Studio ao importar artigos com referências regulatórias ou leis (ex: Código Civil). - Destaque visual elegante para embasamentos legais nos artigos da The One Seguros.
✨Feature / UI / Schema
Implementação do campo opcional **"Revisado por" (`reviewedBy`)** em todos os artigos. O campo permite declarar o especialista ou consultor responsável pela revisão técnica do conteúdo (ex: "Rodrigo Motta"). Foi adicionado ao Sanity Schema ([articleType.ts](file:///c:/Projetos/site/src/sanity/schemaTypes/articleType.ts)), às consultas GROQ ([articles.ts](file:///c:/Projetos/site/src/lib/articles.ts)), às rotas de importação em lote e renderizado no leitor ([page.tsx](file:///c:/Projetos/site/src/app/(site)/artigos/[slug]/page.tsx)) ao lado do autor com selo de verificação visual (`CheckCircle2`). **Quando o campo está em branco ou omitido no JSON, ele é completamente oculto do layout.**
- Maior autoridade e rigor técnico para artigos revisados por especialistas da The One Seguros. - Zero impacto visual em artigos antigos ou não revisados (permanecem exibindo apenas o autor).
🎯Feature / UX / Automação
Reescrita completa do fluxo interativo da skill `artigo-the-one` ([SKILL.md](file:///c:/Projetos/site/.agents/skills/artigo-the-one/SKILL.md)) para integrar a metodologia da skill `grilling` (árvore de decisão com rodadas progressivas de perguntas fechadas + recomendação). O agente agora tem **liberdade total** para formular as perguntas que julgar necessárias (não uma lista fixa), com checkpoints obrigatórios de decisão mínima. Na Etapa 2, o agente propõe 3 conceitos visuais de capa e **gera 2 imagens reais** para aprovação visual antes da redação.
- Entrevista de alinhamento mais natural, completa e adaptável ao contexto de cada artigo. - Validação visual real das capas antes da redação, eliminando retrabalho.
✨Feature / Automação / UX
Integração do fluxo interativo de alinhamento (estilo `grill-me`) na skill de geração de artigos ([SKILL.md](file:///c:/Projetos/site/skills/artigo-the-one/SKILL.md)). O agente agora executa um processo estruturado em 3 etapas: (1) Entrevista inicial de alinhamento sobre a pauta e público; (2) Apresentação prévia de **3 opções de Títulos/Subtítulos** e **2 Conceitos visuais de Capa** para aprovação do usuário; (3) Geração da imagem aprovada, upload automático no Supabase Storage CDN e redação do artigo em Portable Text com entrega do JSON.
- Controle total do usuário sobre a linha editorial, títulos e estética das capas antes da geração completa do conteúdo.
✨Feature / Automação / Schema
Atualização da skill `artigo-the-one` ([SKILL.md](file:///c:/Projetos/site/skills/artigo-the-one/SKILL.md)) para suporte condicional de geração de imagem de capa: quando executado em ambiente com suporte a ferramentas (`generate_image`), a imagem é gerada e salva em `public/media/artigos/{slug}.png` com atribuição automática do atributo `imageUrl` no JSON. Em ambientes sem ferramentas ou uso por usuários finais em chat externo, o briefing completo de imagem é entregue no JSON. Suporte nativo ao campo `coverImageUrl` adicionado no Sanity Schema ([articleType.ts](file:///c:/Projetos/site/src/sanity/schemaTypes/articleType.ts)) e nas rotas de importação.
- Integração perfeita entre o gerador de artigos IA, salvamento local de imagens e publicação via importador `/subir-artigos`.
✨UX / Refatoração
Transformação do componente `ArticleCard.tsx` para que a área inteira do cartão seja interativa e clicável como um único link do Next.js (`<Link href="...">`), eliminando a necessidade do usuário precisar clicar especificamente no título ou no texto do rodapé.
- Navegação mais intuitiva e agradável para usuários em dispositivos móveis e desktop.
✨Feature / UI
Implementação de sistema de paginação server-side na Central Hub de Artigos (`/artigos`). Configurado limite de **9 artigos por página** (3 linhas completas de 3 cards), suporte a navegação por parâmetros na URL (`?categoria=...&pagina=2`), contador de itens ("Exibindo X a Y de Z artigos") e botões "Anterior", "Próxima" e numéricos atômicos.
- Navegação fluida em acervos grandes mantendo rápida velocidade de carregamento e suporte a SEO.
✨UX / Refatoração
Limitação da quantidade de artigos exibidos nas páginas institucionais das verticais (`/seguros`, `/consorcios` e `/saude`) aos **3 mais recentes** (`.slice(0, 3)`). Essa mudança deixa as páginas de produto enxutas, melhora a performance e dá um propósito claro ao botão **"Ver todos de [Categoria]"**, que direciona o usuário para a Central de Artigos completa em `/artigos?categoria=...`.
- Páginas de verticais mais rápidas e equilibradas visualmente. - O botão "Ver todos" agora cumpre sua função de direcionar para o acervo completo daquela categoria.
✨Feature / UX / Navegação
Implementação de **captura inteligente da rota de origem** no Cotador Multietapas ([WizardForm.tsx](file:///c:/Projetos/site/src/components/WizardForm.tsx)). Ao clicar no botão fechar (**X**), na opção **"Voltar para a página anterior"** da Etapa 1 ou na tela de conclusão de cotação, o formulário direciona o usuário de volta à rota de onde ele veio (ex: `/seguros`, `/consorcios`, `/saude`, `/artigos/[slug]`), em vez de forçar um retorno fixo para a home `/`.
- Experiência de navegação sem fricção: o usuário retorna exatamente para a página ou artigo em que estava antes de iniciar a cotação.
🔑Integração / Autenticação
Atualizado o utilitário `writeClient` ([src/sanity/client.ts](file:///c:/Projetos/site/src/sanity/client.ts)) e os scripts do importador para priorizarem o token com permissão de escrita `SANITY_API_WRITE_TOKEN`, mantendo fallback para `SANITY_API_READ_TOKEN`.
- Suporte nativo ao token de escrita de nível Editor no Sanity CMS para importação imediata via painel `/subir-artigos` ou CLI.
✨Feature / Admin / UI
Criação da rota restrita de administração `/subir-artigos` e do backend de publicação em lote (`/api/artigos/import`). A ferramenta permite selecionar ou arrastar múltiplos arquivos JSON com artigos formatados em Portable Text, exibe uma pré-visualização rica dos cartões (título, subtítulo, resumo, quantidade de palavras e tags) e publica tudo no Sanity CMS com 1 clique.
- Publicação de novos artigos em massa sem necessidade de digitação ou preenchimento de formulários manuais.
✨Feature / Infraestrutura / Storage / IA
Integração oficial do **Supabase** no ecossistema da **The One Seguros**, fornecendo infraestrutura para armazenamento de imagens de artigos em CDN pública de alta performance (Supabase Storage Bucket `artigos`), cliente de servidor (`supabaseAdmin`) e cliente público (`supabase`), além de preparar a base para autenticação (Supabase Auth) e futuras tabelas de banco de dados.
- Armazenamento em CDN global de alta velocidade para imagens de artigos. - Fluxo de trabalho automatizado para IAs: Geração de Imagem -> Upload no Supabase -> Injeção de URL da CDN no JSON -> Exibição imediata no Sanity e no site. - Fundação completa pronta para autenticação e tabelas no Supabase.
🔧Correção / UI
Ajuste da classe utilitária de largura máxima no componente de breadcrumbs da rota leitora de artigos (`src/app/(site)/artigos/[slug]/page.tsx`), substituindo a sintaxe arbitrária `max-w-[200px]` pelo padrão nativo do Tailwind CSS v4 `max-w-50`.
- Eliminação do alerta de sintaxe e total conformidade com as regras do Tailwind CSS v4.
✨Feature / SEO / UI
Criação e implementação completa da Central de Artigos & Conhecimento Tecnológico e das 3 novas rotas dedicadas por vertical de negócio: **Seguros** (`/seguros`), **Consórcios** (`/consorcios`) e **Planos de Saúde** (`/saude`). A estrutura conta com integração ao Sanity Studio (`articleType`), leitor de PortableText com estilização em Tailwind v4, cartões de conversão final para o simulador `/cotacao`, navegação por categorias, metadados de SEO avançado (Open Graph, Twitter Cards, `metadataBase`) e dados estruturados Schema.org (`BlogPosting`) em Português (`pt-BR`).
- Portal educativo e de autoridade técnica pronto para atração orgânica de clientes via SEO. - Experiência completa com navegação por categorias e conversão direta para o cotador multietapas.
🎨UI / Tipografia
Aplicação da fonte proprietária institucional `Brave Eightyone` (`/fonts/BRAVEEightyone-Regular.ttf`) ao texto "Simular Agora" do CTA flutuante, reforçando a identidade tipográfica oficial da marca.
- Alinhamento da tipografia institucional no botão flutuante de cotação.
🎨UI / Ajuste
Refinamento das dimensões do botão CTA flutuante para um formato mais compacto (`px-4 py-2`), substituição do ícone de estrela pela logo simplificada da empresa (`/media/logos/logo-simple.webp` em 20x20px) e simplificação do texto para "SIMULAR AGORA", adequando-se universalmente a todos os produtos de seguros, saúde e consórcios.
- Botão mais discreto, leve e perfeitamente harmonizado com o favicon e a identidade visual do site.
✨Feature / UI
Criação do componente de CTA Flutuante Pílula (`FloatingCta.tsx`) para direcionar o usuário diretamente para o simulador online em `/cotacao`. O botão fica centralizado na parte inferior da tela com efeito glassmorphism (fundo escuro translúcido e borda dourada), aparecendo com animação suave (*Fade In + Slide Up*) apenas quando o usuário rolar a página pelas seções intermediárias, ocultando-se no topo (seção Hero) e no rodapé (Footer).
- Elemento de chamada para ação elegante, acessível e não intrusivo. - Aumento da taxa de conversão sem poluição visual no topo e no footer.
🔗UI / Integração
Atualização do link do ícone do Google no rodapé para apontar diretamente para a caixa modal de avaliação de 5 estrelas do Google Meu Negócio (`https://www.google.com/search?q=the+one+seguros#lrd=0xa6c3000f850d15:0x786f23efbe5a9704,3`), facilitando o envio imediato de feedback pelos clientes.
- Ao clicar no botão do Google no rodapé, o visitante é direcionado diretamente para a janela pop-up de avaliação da The One Seguros no Google.
📋Regra de Projeto / Governança
Inclusão da Regra 6 nos arquivos de diretrizes do agente (`CLAUDE.md` e `AGENTS.md`). A diretriz obriga a aplicação contínua dos padrões de SEO, Open Graph, Twitter Cards, URLs Canônicas e Dados Estruturados Schema.org em Português (`pt-BR`) para todas as novas páginas/rotas públicas criadas no projeto.
- Garantia de que qualquer nova página desenvolvida no futuro pelo assistente atenda rigorosamente aos critérios de SEO, compartilhamento social e marcação estruturada.
✨Feature
Expansão da cobertura geográfica de atendimento para todo o território nacional (`areaServed: Brasil / BR`), inclusão de todos os 6 domínios do ecossistema The One (`theonenegocios.com.br`, `theonesolucoes.com.br`, `theonelegacy.com.br`, `theoneconsorcios.com.br`, `theonevida.com.br`, `theone360.com.br`) no parâmetro `sameAs` do Schema.org para unificação da autoridade de marca, e inclusão antecipada da vertical de **Planos de Saúde & Saúde Corporativa/Individual** e **Financiamentos & Crédito Imobiliário** no catálogo de serviços para indexação prévia no lançamento da nova marca.
- Consolidação da autoridade de marca do ecossistema The One no algoritmo do Google através do vínculo dos 6 domínios secundários. - Indexação prévia no Google para pesquisas de "Planos de Saúde", "Seguro Saúde", "Financiamentos" e "Crédito Imobiliário" preparando o terreno para o lançamento da marca esta semana. - Posicionamento de atendimento em todo o Brasil.
✨Feature
Expansão do objeto de dados estruturados Schema.org JSON-LD para um grafo de conhecimento interconectado (`@graph`). Incorporação das marcações simultâneas de `InsuranceAgency`, `FinancialService`, `WebSite`, `OfferCatalog` com a listagem detalhada dos serviços de seguros e consórcios em Português do Brasil, raio de atuação (`areaServed`: Betim, Belo Horizonte, Contagem, MG) e horário de atendimento.
- Indexação máxima no Google para pesquisas regionais e institucionais em Português ("corretora de seguros Betim", "seguro auto", "consórcio imobiliário"). - Reconhecimento dos serviços específicos do catálogo diretamente no painel de conhecimento do Google.
✨Feature
Implementação completa de otimizações de SEO avançado, dados estruturados (JSON-LD) e cartões de visualização social (Open Graph, Twitter Cards e WhatsApp Link Preview) para todas as rotas da aplicação. Criação do arquivo Web App Manifest (`site.webmanifest`) para suporte a PWA e favoritos em dispositivos móveis.
- Pré-visualização rica de links ao compartilhar no WhatsApp, Instagram, LinkedIn, Facebook e X (Twitter), com título, descrição e imagem de banner oficial. - Indexação otimizada no Google Search Engine com Schema.org JSON-LD para agência de seguros. - Suporte a instalação como Web App em dispositivos móveis.
✨Feature
Adição do campo `order` ("Ordem de Exibição") no schema de sócios no Sanity Studio (`memberType.ts`) e atualização da consulta GROQ em `page.tsx` para ordenar os cards numericamente (`order asc, _createdAt asc`). Permite ao cliente definir a sequência exata de apresentação dos sócios na Landing Page.
- Controle de ordem dos sócios editável diretamente pelo Sanity Studio (`/studio`).
🧹Refatoração / Limpeza
Remoção completa do layout alternativo de foto única compartilhada (`socios.jpeg`), eliminação do estado `layoutMode` e remoção do botão flutuante de alternância. A seção "Quem Somos" retornou ao padrão definitivo de **dois cards individuais**, preservando 100% da integração com o Sanity CMS (fotos, nomes, cargos e biografias dos sócios) e mantendo as classes responsivas do Tailwind CSS v4.
- Código-fonte limpo e sem redundâncias. - Padrão definitivo de 2 cards individuais estabelecido para os sócios. - Dados alimentados dinamicamente via Sanity CMS preservados.
🔑Integração / Validação
Homologação e validação com **sucesso de 100%** do fluxo de autenticação OAuth2 no Microsoft Entra ID (Azure AD) e disparo de e-mails transacionais com relatórios PDF em anexo via **Microsoft Graph API REST** (`POST /users/cotacao@theoneseguros.com.br/sendMail`).
- Autenticação OAuth2 no tenant da Microsoft 365 homologada com sucesso. - E-mails de notificação comercial com PDF anexo e e-mails de confirmação para o cliente prontos para produção.
✨Feature
Implementação da geração automática de Relatório PDF executivo em memória (`PDFKit`) e envio transacional de e-mails via **Microsoft Graph API (Office 365 / Exchange)** para o comercial (`cotacao@theoneseguros.com.br`) com o PDF anexo, além de e-mail de confirmação elegante ao cliente. Integração efetuada no Wizard e no Formulário da Landing Page.
- Todas as solicitações de cotação geram um relatório PDF executivo em memória. - E-mail com PDF anexo enviado para `cotacao@theoneseguros.com.br`. - E-mail de confirmação institucional enviado para o cliente. - Integração nativa com o Microsoft 365 / Exchange.
✨Feature
Inclusão do suporte ao parâmetro de URL `?dev=true` (ou modo de desenvolvimento) na rota `/novidades`. Por padrão, o público geral visualiza a linha do tempo limpa com novidades de produtos e UI. Ao acessar com `?dev=true` (ou ambiente dev local), a página desativa o filtro de segurança e exibe inclusive os patch notes técnicos armazenados em `patch-notes/protected/`.
- Usuários normais enxergam uma linha do tempo amigável e limpa. - Desenvolvedores podem visualizar todos os patch notes (inclusive arquivos técnicos e infraestrutura de dev) adicionando `?dev=true` na URL.
✨Feature
Implementação da rota de Novidades (`/novidades`) com linha do tempo interativa dos updates da plataforma, filtrando e ignorando patch notes técnicos restritos ao desenvolvedor (armazenados em `patch-notes/protected/`). Inclusão dos schemas `privacyPolicyType` e `termsOfUseType` no Sanity Studio para gerenciamento dos textos legais, com a criação das rotas `/politica-de-privacidade` e `/termos-de-uso`. Reorganização dos assets de fontes (`public/fonts/`) e logotipos (`public/media/logos/logo-simple.webp` e `public/media/logos/logo.png`).
- Linha do tempo de novidades em `/novidades` com filtragem automática de notas técnicas de desenvolvimento. - Textos legais de Política de Privacidade e Termos de Uso 100% gerenciáveis pelo Sanity Studio. - Estrutura de arquivos limpa com fontes em `public/fonts` e logos em `public/media/logos`.
✨Feature
Remoção da restrição de ambiente de desenvolvimento (`isDev`) do botão de alternar layout na seção "Quem Somos". O botão de alternância entre "Dois Cards" e "Card Único" agora está disponível publicamente para todos os usuários.
- Botão de alternância de visual da seção de sócios totalmente acessível no site em ambiente de produção.
🔧Correção
Atualização de sintaxe das classes utilitárias do Tailwind CSS no componente `TeamCarousel.tsx` para seguir o padrão da versão 4, eliminando todos os avisos do linter (substituição de sintaxe arbitrária `min-h-[px]`, `bg-gradient-to-b`, `z-[n]` e `bg-[center_15%]` por `min-h-120`/`140`/`180`, `bg-linear-to-b`, `z-1`/`z-2` e `bg-position-[center_15%]`).
- Eliminação total dos avisos de linting no arquivo `TeamCarousel.tsx`. - Código padronizado com as convenções mais recentes do Tailwind v4.
🎨Feature
Implementação de layout alternativo para a seção "Quem Somos" (sócios). A versão atual com dois cards individuais foi preservada, e uma nova versão com card único utilizando a foto conjunta dos sócios (`socios.jpeg`) foi adicionada. Um botão de toggle em modo dev (visível apenas em `NODE_ENV === 'development'`) permite alternar entre as duas versões para validação antes da adoção definitiva. **Motivação:** Solicitação de um dos sócios para unificar a apresentação em um único card com foto conjunta.
- Versão com dois cards (padrão) funciona exatamente como antes - Nova versão com card único disponível via toggle em modo dev - Botão de toggle **não aparece** em build de produção - Layout responsivo: em mobile as bios empilham verticalmente, em desktop ficam lado a lado
🔧Correção
Correção de bug crítico no drawer mobile do header. O menu abria corretamente no topo da página, mas ao rolar para baixo e tentar abrir, o drawer ficava "condensado" mostrando apenas os botões CTA do rodapé. A causa raiz era que o Backdrop e o Mobile Drawer estavam renderizados como filhos do `<header>` (que é `fixed` com altura limitada `h-20`/`h-24`). Navegadores mobile tratavam o overflow do pai de forma diferente quando havia scroll.
- Drawer mobile abre corretamente em qualquer posição de scroll da página. - Z-index hierárquico garante sobreposição consistente.
✨Feature
Reestruturação completa do Header: remoção do botão "Falar Conosco", alinhamento do menu à direita, inclusão do item "Simular" com dropdown personalizado (sub-itens editáveis via Sanity CMS). Integração com o novo campo `headerNavigation` no Sanity Studio.
- Menu do header totalmente gerenciável via Sanity Studio. - Dropdown "Simular" direciona para o wizard de cotação com tipo pré-selecionado. - Layout do menu alinhado à direita para melhor hierarquia visual.
🔧Correção
Correção do hover do botão opcional nos cards de Soluções. O texto ficava dourado sobre fundo dourado ao passar o mouse, tornando-o invisível. A classe base `text-gold` prevalecia na especificidade do Tailwind sobre o `hover:text-white`.
- Texto do botão alterna nitidamente para branco ao passar o mouse, destacando-se sobre o fundo dourado.
✨Feature
Inclusão de botão opcional no final de cada card de Soluções. Texto e link editáveis via Sanity CMS. Estilo "terceira variante" de botão: fundo dourado translúcido com texto dourado, preenchimento sólido e texto branco no hover.
- Botões opcionais nos cards de Soluções com estilo premium dourado. - Gerenciamento de texto e link via Sanity Studio.
✨Feature
Grid da seção de Soluções & Consórcios tornado 100% dinâmico e auto-adaptável. Ao adicionar ou excluir categorias no Sanity Studio, o layout reorganiza automaticamente as colunas com limite máximo de 4.
- Grid se reorganiza automaticamente sem "buracos" visuais ao alterar a quantidade de categorias.
✨Feature
Criação do botão flutuante (FAB - Floating Action Button) do WhatsApp. Posicionado fixo no canto inferior direito, acompanha a rolagem da tela com animação sutil de pulso e tooltip ao hover.
- Botão de WhatsApp sempre visível durante a navegação. - Animação de pulso atrai atenção do visitante sem ser invasiva. - Tooltip informa a ação antes do clique.
✨Feature
Inclusão da logo da The One no topo da página de cotação (entre botão "Voltar" e contador de etapas), adição de botão "X" para cancelar e retornar à landing page, e cards da primeira tela (segmentos) tornados editáveis via Sanity Studio.
- Logo visível no topo da cotação para reforço de marca. - Botão X para cancelamento rápido e retorno à landing page. - Primeira tela do wizard totalmente editável via Sanity Studio.
🔧Correção
Correção do erro `Missing <html> and <body> tags in the root layout` na rota `/cotacao`. No Next.js App Router, rotas fora do grupo `(site)` precisam de seu próprio layout raiz com tags `<html>` e `<body>`.
- Erro de runtime resolvido. Todas as rotas (`/`, `/cotacao`, `/studio`, `/api/cotacao`) compilam sem erros.
✨Feature
Criação do formulário multietapas (Wizard) avançado em rota dedicada `/cotacao`. Layout imersivo em fundo escuro premium sem Header/Footer. Fluxo condicional por árvore de produtos com 5 etapas e preenchimento automático via query params.
- Wizard avançado funcional com fluxo condicional e preenchimento automático via landing page. - Todas as etapas, perguntas e configurações gerenciáveis no Sanity Studio. - Endpoint de API pronto para integração com motor de cotação.
✨Feature
Seção Diferenciais mapeada para o Sanity CMS com schema dedicado. Cards de diferenciais são gerenciáveis via Studio com título, descrição, ícone (campo texto livre referenciando lucide.dev/icons) e ordem de exibição. Grid dinâmico auto-adaptável.
- Seção Diferenciais 100% editável via Sanity Studio. - Grid se adapta automaticamente à quantidade de cards cadastrados. - Qualquer ícone do Lucide pode ser utilizado via nome no campo texto.
✨Feature
Campo "Solução de Interesse" do formulário de contato tornado gerenciável via Sanity CMS. Opções do menu suspenso e textos da mensagem de sucesso (pós-envio) agora são editáveis no Sanity Studio, na aba `6. Formulário & Cotação`.
- Opções do formulário gerenciáveis diretamente pelo Sanity Studio. - Mensagem de sucesso personalizável sem editar código.
🔧Correção
Correção da responsividade do header em telas pequenas. Logo, menu e botões de ação estavam sobrepostos em smartphones de tela estreita (360px-390px).
- Header responsivo sem sobreposição em dispositivos móveis estreitos.
✨Feature
Publicação em massa de todas as 15 seguradoras parceiras via script automatizado (`seed-sanity.mjs`). Upload automático das logos para a CDN do Sanity e criação dos documentos de parceiros.
- 15 seguradoras parceiras cadastradas automaticamente no Sanity Studio em segundos. - Carrossel de parceiros alimentado em tempo real pelo CMS.
🎨UI
Simplificação da seção "Quem Somos": remoção de textos institucionais longos (Missão, Visão, Valores), mantendo apenas o título e os cards dos sócios lado a lado, estáticos (sem carrossel/transição).
- Seção limpa e focada nos perfis dos sócios sem distrações textuais.
🎨UI
Padronização da cor do ícone do WhatsApp no rodapé para dourado, alinhando-o visualmente com os ícones do Instagram e Google que já estavam em dourado.
- Todos os ícones de redes sociais no rodapé seguem o mesmo padrão visual dourado.
✨Feature
Instalação da biblioteca `react-icons` e substituição dos ícones genéricos (câmera, estrela, balãozinho) pelos ícones oficiais das marcas no rodapé.
- Ícones oficiais de marca (Instagram, Google, WhatsApp) exibidos no rodapé.
🎨UI
Substituição da logo de imagem do header pela logo oficial atualizada `The-One-Proposta-LOGO.png` (com o texto "Seguros e Consórcios"). Tentativa intermediária de montagem via código (HTML/CSS com fonte BRAVEEightyone + ícone solo + linhas horizontais douradas) foi substituída pela imagem definitiva.
- Logo oficial atualizada exibida no cabeçalho do site.
🔧Correção
Correção definitiva do carrossel de sócios: remoção de botões de seta e dots, correção da transição automática (fade de 0.8s a cada 5s) e clique na área inteira do card para avançar.
- Carrossel automático funcional com fade suave e clique para avançar.
🎨UI
Redesign do carrossel de sócios: foto como background do card, texto em estilo citação (blockquote itálico com ícone de aspas), remoção de fundo/borda rígida, carrossel automático (5.5s) e clicável.
- Visual premium com foto imersiva e texto tipo citação profissional.
✨Feature
Transformação da área dos sócios em carrossel interativo, exibindo um sócio por vez com setas de navegação, dots indicadores e alternância automática a cada 7s. Fotos ampliadas de 90px para 150px.
- Carrossel funcional alternando perfis dos sócios automaticamente.
✨Feature
Criação do componente Footer com informações institucionais completas, links de redes sociais e dados de contato da The One Seguros.
- Rodapé funcional com todas as informações institucionais da empresa.
✨Feature
Criação do formulário de cotação interativo na seção inferior da landing page. Sistema dinâmico que coleta nome, e-mail, telefone, solução de interesse e mensagem, com botão acelerador para WhatsApp comercial.
- Formulário de contato funcional com fluxo de envio e redirecionamento WhatsApp.
🔧Correção
Restauração da tipografia e espaçamento do menu do header. A fonte de títulos pesada (`Russo One`) foi substituída por `Montserrat` (via Google Fonts) para corrigir quebras de layout e manter proporcionalidade.
- Menu do cabeçalho sem quebras de linha e com navegação fluida.
✨Feature
Criação do componente Header com efeito vidro flutuante, menu responsivo para desktop e mobile, atalhos de cotação e WhatsApp.
- Header funcional com navegação completa e efeitos visuais premium.
🎨UI
Remoção do card lateral "Seguro Auto Premium" da Hero Section e substituição por uma imagem de fundo gerada por IA focada em planejamento financeiro, família e proteção de ativos. Aplicada camada de gradiente escuro (`heroOverlay`) para legibilidade.
- Hero Section com visual genérico voltado para seguros e planejamento de vida (não mais exclusivamente auto). - Excelente legibilidade dos CTAs e textos sobre a imagem de fundo.
✨Feature
Criação da Hero Section da landing page com apresentação premium da corretora, CTAs de impacto (Simular Cotação e Falar com Especialista) e card de destaque.
- Seção de destaque funcional com chamadas para ação direcionando para cotação e WhatsApp.
🎨UI
Aumento do tamanho e visibilidade dos logotipos no carrossel de parceiros. Download de todas as 19 logos e imagens do site original para a pasta `public/media`, eliminando dependência de links externos.
- Logos maiores e mais visíveis no carrossel. - Projeto 100% autônomo sem dependência de links externos para imagens.
✨Feature
Criação do componente PartnerCarousel com carrossel infinito em CSS puro exibindo as logomarcas oficiais das seguradoras parceiras em escala de cinza (com cores sob hover).
- Carrossel de seguradoras parceiras funcional com animação contínua.
✨Feature
Adição do perfil de Luiz Otávio (Sócio Diretor) e inclusão de fotos executivas geradas por IA para ambos os sócios (Bruno Miranda e Luiz Otávio) na seção Sobre Nós.
- Ambos os sócios apresentados com fotos profissionais e bios detalhadas.
✨Feature
Criação da grade de Soluções na landing page com 3 categorias: "Para Você" (Auto, Residencial, Embarcações, Vida), "Para Empresas" (Empresarial, Garantia, Responsabilidade Civil, Saúde) e "Consórcios" (Imóveis, Automóveis, Pesados, Serviços).
- Seção de soluções funcional com apresentação visual premium dos serviços da corretora.
