# PRD + SDD + Plano de Implementação — Grupo JB Pescados
# 1. Protocolo obrigatório para o agente implementador
Este documento é a fonte de verdade do projeto. O agente deverá trabalhar em uma etapa por vez e não iniciar a próxima antes de cumprir o respectivo critério de saída.
# Ordem das fontes de verdade
- Decisões registradas neste plano.
- Dados oficiais fornecidos pelo Grupo JB.
- Direção visual escolhida pelo usuário.
- PRD e SDD atualizados no repositório.
- Código e testes existentes.
- Suposições, somente quando explicitamente autorizadas.
# Regras contra alucinação
- Nunca inventar endereço, telefone, WhatsApp, horário, filial, domínio, e-mail, perfil social, link do Google, ATS ou credencial.
- Usar dados fictícios apenas no ambiente de desenvolvimento, identificados com
DEMOouTODO_CONTENT. - Impedir a publicação em produção enquanto existirem conteúdos
TODO_CONTENT. - Não criar e-commerce, estoque, CRM, protocolo de SAC, recrutamento interno, IA ou fluxo de aprovação.
- Não criar novas funcionalidades apenas porque parecem úteis.
- Não substituir logo, fotografias ou materiais oficiais por desenhos aproximados.
- Não avançar quando faltar uma decisão que altere experiência, banco de dados, segurança ou operação.
- Não criar contas, projetos externos, domínios ou deployments públicos sem autorização.
- Ao final de cada etapa, registrar: alterações, testes executados, resultado, pendências e entrada necessária para a etapa seguinte.
# Documentos que deverão ser mantidos
docs/PRD.md: requisitos, escopo, regras e critérios de aceite.docs/SDD.md: arquitetura, dados, segurança, interfaces e decisões técnicas.docs/PROJECT_STATUS.md: etapa atual, testes, decisões, bloqueios e próximo trabalho permitido.
# 2. PRD — Product Requirements Document
# 2.1 Visão do produto
Criar uma plataforma digital própria do Grupo JB Pescados para representar institucionalmente o grupo, conectar clientes às quatro lojas, divulgar ofertas, direcionar contatos e registrar as principais interações digitais.
A primeira versão será uma plataforma operacional, composta por:
- Site institucional.
- Quatro hubs mobile-first, um por filial.
- Encartes em imagem/PDF.
- Catálogo de ofertas cadastradas.
- Painel administrativo personalizado.
- Links rastreáveis e QR Codes.
- Dashboard próprio integrado a GA4 e Meta.
- SAC por formulário e e-mail.
- Trabalhe Conosco direcionado a um ATS externo.
# 2.2 Públicos
# Clientes
Pessoas que desejam consultar ofertas, encontrar uma loja, falar pelo WhatsApp, entrar no Grupo VIP ou avaliar uma unidade.
# Marketing
Equipe responsável por encartes, ofertas, campanhas, links, conteúdo, SEO e métricas de todas as lojas.
# Gestores das lojas
Responsáveis por atualizar e acompanhar exclusivamente sua unidade.
# Administração geral
Responsável por usuários, permissões, configurações, auditoria e toda a plataforma.
# 2.3 Resultado esperado
- O visitante deve alcançar uma ação prioritária em no máximo dois toques após entrar na página de uma loja.
- Todas as ações comerciais relevantes devem ser rastreáveis por filial, campanha e origem.
- Marketing deve atualizar encartes e ofertas sem alterar código.
- Cada gestor deve acessar somente os dados da própria loja.
- A plataforma deve gerar páginas indexáveis e otimizadas para SEO local.
- A operação não deve depender de planilhas para publicar ofertas ou links.
# 2.4 Escopo funcional
# FR-01 — Site institucional
- Página inicial com marca, proposta, ofertas vigentes, lojas e ações principais.
- Página institucional com história, posicionamento e informações oficiais.
- Listagem das quatro lojas.
- Rodapé com contatos, políticas e redes oficiais.
# FR-02 — Página da loja
Cada /lojas/[slug] deverá apresentar:
- Encarte/ofertas vigentes.
- Como chegar.
- WhatsApp.
- Grupo VIP.
- Avaliação no Google.
- Horários e contatos.
- Instagram, quando informado.
- Trabalhe Conosco.
- SAC.
A página deverá possuir conteúdo, metadados e Schema LocalBusiness próprios.
# FR-03 — Encartes
- Upload de imagem, PDF ou ambos.
- Associação a uma ou várias lojas.
- Data e hora de início e término.
- Programação automática.
- Destaque de um encarte principal por loja.
- Arquivo de encartes encerrados.
- Contagem de visualizações e aberturas.
- Publicação direta por usuário autorizado.
# FR-04 — Ofertas cadastradas
Cada oferta deverá conter:
- Nome.
- Categoria.
- Imagem.
- Preço.
- Unidade de medida.
- Texto complementar opcional.
- Período de vigência.
- Lojas participantes.
- Estado ativo/inativo.
- Destaque e ordem de exibição.
Não haverá estoque, carrinho, pagamento ou reserva.
# FR-05 — Painel administrativo
Módulos:
- Dashboard.
- Lojas.
- Conteúdo institucional.
- Encartes.
- Ofertas.
- Categorias.
- Campanhas.
- Links e QR Codes.
- SEO.
- Usuários.
- Logs.
- Configurações.
# FR-06 — Usuários e permissões
- Login individual.
- Recuperação segura de acesso.
- Perfil Administrador, Marketing ou Gestor de Loja.
- Gestor associado obrigatoriamente a uma filial.
- Toda alteração administrativa relevante gera log.
- Alterações são publicadas diretamente, sem aprovação.
# FR-07 — Campanhas, UTMs e QR Codes
- Cadastro de campanha, período, canais e lojas.
- Geração de links rastreáveis.
- Geração de QR Code para um link rastreável.
- Redirecionamento somente para destinos permitidos.
- Possibilidade de desativar um link sem perder histórico.
- Associação dos eventos à campanha, loja e origem.
# FR-08 — Analytics
O painel deverá medir:
- Visitas ao site.
- Visitas por loja.
- Visualizações e aberturas de encarte.
- Cliques em WhatsApp, Maps, VIP, avaliação, Instagram e ATS.
- Aberturas e envios do SAC.
- Origem, campanha, dispositivo e período.
- Comparação entre lojas.
- Conversões por CTA, sem afirmar que o clique representa uma venda.
Os eventos também serão enviados ao GA4 e Meta quando houver consentimento aplicável.
# FR-09 — SAC
- Página com nome, contato, loja, categoria, assunto, mensagem e consentimento.
- Proteção contra spam.
- Envio ao e-mail configurado para a loja.
- Fallback para e-mail central quando a loja não possuir destinatário.
- Confirmação visual de envio.
- Não gerar protocolo.
- Não criar painel de atendimento.
- Não persistir conteúdo da mensagem após entrega; manter apenas log técnico sem mensagem ou dados pessoais.
# FR-10 — Trabalhe Conosco
- Página explicativa com CTA para ATS externo.
- ATS configurável no painel.
- Possibilidade de URL global e URL específica por loja.
- Registro do clique de saída.
- Nenhum currículo ou dado de candidato será armazenado.
# FR-11 — SEO
- Título, descrição e imagem de compartilhamento editáveis.
- URLs amigáveis.
- Canonical.
- Sitemap XML.
- Robots.txt.
- Open Graph.
- Schema
OrganizationeLocalBusiness. - Páginas de loja renderizadas no servidor.
- Bloqueio de indexação de painel, APIs e ambientes de teste.
# FR-12 — LGPD e consentimento
- Política de privacidade.
- Política de cookies.
- Banner de consentimento por categoria.
- GA4 e Meta bloqueados até o consentimento exigido.
- Formulários com consentimento explícito.
- Mecanismo documentado para solicitação de exclusão.
- Eventos sem nome, telefone, e-mail ou endereço IP bruto.
# 2.5 Fora do escopo
- E-commerce, carrinho e pagamentos.
- Estoque ou integração com PDV/ERP.
- Fidelidade, cupons transacionais e CRM.
- Gestão interna de candidatos.
- Armazenamento de currículos.
- SAC com protocolo, status ou histórico.
- Inteligência artificial e recomendações automáticas.
- Aplicativo móvel nativo.
- Aprovação editorial antes da publicação.
# 3. SDD — Software Design Document
# 3.1 Arquitetura escolhida
- Frontend e backend web: Next.js com App Router e TypeScript.
- Estilos: Tailwind CSS com tokens próprios da marca.
- Banco: PostgreSQL gerenciado pelo Supabase.
- Autenticação: Supabase Auth.
- Arquivos: Supabase Storage.
- Autorização: Row Level Security mais validação no servidor.
- Hospedagem: Vercel.
- E-mail: Resend.
- Validação: Zod.
- Formulários: React Hook Form.
- Testes unitários: Vitest.
- Testes de jornada: Playwright.
- Monitoramento: logs estruturados e ferramenta de erros configurável por ambiente.
- Gerenciador de pacotes: pnpm com lockfile versionado.
As versões deverão ser estáveis, fixadas no lockfile e registradas no SDD durante a Etapa 1.
# 3.2 Estrutura de rotas
# Públicas
//sobre/lojas/lojas/[storeSlug]/ofertas/lojas/[storeSlug]/encartes/[flyerSlug]/trabalhe-conosco/sac/privacidade/cookies/r/[trackingCode]
# Administrativas
/admin/login/admin/admin/lojas/admin/encartes/admin/ofertas/admin/campanhas/admin/links/admin/analytics/admin/seo/admin/usuarios/admin/logs/admin/configuracoes
# 3.3 Modelo de dados
# stores
Identidade, slug, descrição, endereço estruturado, coordenadas, contatos, horários, links externos, imagens, dados de SEO, destinatário do SAC e estado de publicação.
# user_profiles
Referência ao usuário autenticado, nome, perfil, filial associada e estado ativo.
# flyers e flyer_stores
Título, slug, imagem, PDF, período, estado, destaque, ordem e associação com filiais.
Regra: uma filial poderá ter vários encartes vigentes, mas apenas um marcado como principal.
# offer_categories
Nome, slug, ordem e estado.
# offers e offer_stores
Produto, categoria, preço decimal, unidade, imagem, descrição, período, destaque, ordem e lojas participantes.
# campaigns
Nome, slug, período, canais, UTMs padrão, observações e estado.
# tracked_links
Código único, tipo, destino, filial, campanha, estado e datas.
# interaction_events
Evento, filial, encarte, oferta, campanha, link, sessão anônima, página, origem, UTMs, dispositivo, versão do consentimento, horário e metadados sanitizados.
# audit_logs
Autor, ação, entidade, filial, resumo anterior/posterior, horário e identificador técnico da requisição.
# sac_delivery_logs
Filial, categoria, provedor, identificador do envio, resultado e horário. Não armazenará nome, contato, assunto ou mensagem.
# site_settings
Configurações globais como ATS, e-mail central, redes, identidade, consentimento e integrações.
# 3.4 Matriz de permissões
| Recurso | Administrador | Marketing | Gestor |
|---|---|---|---|
| Configurações globais | Editar | Consultar | Não acessar |
| Usuários | Gerenciar | Não acessar | Não acessar |
| Todas as lojas | Gerenciar | Gerenciar | Não acessar |
| Própria loja | Gerenciar | Gerenciar | Gerenciar |
| Encartes e ofertas | Todas | Todas | Própria loja |
| Campanhas e QR Codes | Todas | Todas | Própria loja |
| SEO | Todas | Todas | Própria loja |
| Dashboard geral | Acessar | Acessar | Não acessar |
| Dashboard da loja | Acessar | Acessar | Própria loja |
| Logs | Todos | Próprias ações | Próprias ações |
A restrição deverá existir no banco e no servidor; ocultar botões não será considerado segurança.
# 3.5 Interfaces
# POST /api/events
Recebe somente eventos de uma lista permitida. Valida e remove metadados não reconhecidos. Aplica limitação de requisições e não aceita PII.
# GET /r/[trackingCode]
Valida código ativo, registra qr_redirect ou tracked_link_redirect e redireciona para a URL cadastrada.
# POST /api/sac
Valida campos, consentimento e desafio antispam, envia o e-mail e grava somente o resultado técnico da entrega.
# Operações administrativas
O CRUD interno deverá usar Server Actions ou serviços de servidor tipados. Nenhuma alteração administrativa deverá ser feita diretamente pelo navegador no banco sem RLS.
# 3.6 Eventos padronizados
page_viewstore_viewflyer_viewflyer_openoffer_viewclick_mapsclick_whatsappclick_vipclick_reviewclick_instagramclick_atssac_opensac_submit_successsac_submit_failuretracked_link_redirectqr_redirect
A atribuição usará, nesta ordem:
- UTMs da URL.
- Metadados do link/QR Code.
- Referrer conhecido.
- Acesso direto.
A atribuição não direta mais recente será mantida na sessão por até 30 dias, respeitando o consentimento.
# 3.7 Regras operacionais
- Conteúdo futuro permanece indisponível até o início da vigência.
- Conteúdo expirado sai das áreas atuais e permanece no histórico quando permitido.
- Slugs publicados não podem ser reutilizados para outra entidade.
- Exclusões com histórico serão lógicas, não físicas.
- Alterar o destino de um link não remove eventos anteriores.
- Publicações administrativas invalidam somente o cache relacionado.
- Uploads aceitos: JPEG, PNG, WebP e PDF.
- O servidor deverá validar MIME, extensão e tamanho antes do armazenamento.
- Segredos existirão somente nas configurações seguras da hospedagem.
- Ambiente de desenvolvimento nunca enviará eventos para propriedades reais do GA4 ou Meta.
# 3.8 Segurança e retenção
- HTTPS obrigatório.
- Cookies seguros,
HttpOnlyquando aplicável e políticaSameSite. - Proteção CSRF nas operações autenticadas.
- Rate limiting em login, eventos, redirecionamentos e SAC.
- RLS em todas as tabelas administrativas.
- Backups automáticos do banco.
- Analytics anônimo: retenção configurável, padrão de 395 dias.
- Logs de auditoria: padrão de 730 dias.
- Logs técnicos do SAC: padrão de 90 dias.
- Alterações dos prazos deverão ser aprovadas antes do go-live.
# 4. Plano de implementação por etapas
# Etapa 0 — Fechamento de insumos
# Entradas obrigatórias
- Nomes oficiais das quatro lojas.
- Endereços, coordenadas, telefones, WhatsApps e horários.
- Links de Maps, Instagram, VIP e avaliação.
- Logo e materiais de identidade disponíveis.
- Domínio pretendido.
- E-mails do SAC.
- URL do ATS.
- Responsáveis e perfis administrativos.
- Contas ou decisão sobre GA4, Meta, Supabase, Vercel e Resend.
# Trabalho
- Criar matriz de conteúdo.
- Marcar cada dado como confirmado, pendente ou inexistente.
- Atualizar PRD e registrar decisões.
- Não instalar nem programar funcionalidades nesta etapa.
# Critério de saída
PRD aprovado e nenhuma informação estrutural marcada como ambígua. Dados ainda ausentes podem permanecer pendentes, mas devem possuir responsável e bloquear apenas a publicação, não o desenvolvimento.
# Etapa 1 — Fundação técnica
# Trabalho
- Inicializar Next.js, TypeScript, Tailwind e pnpm.
- Configurar lint, formatação, typecheck, Vitest e Playwright.
- Criar variáveis de ambiente documentadas.
- Separar configurações de desenvolvimento, homologação e produção.
- Criar layout mínimo e página de diagnóstico sem identidade final.
- Configurar CI para instalar, validar tipos, testar e compilar.
# Testes
- Instalação reproduzível pelo lockfile.
- Typecheck, lint, testes e build aprovados.
- Nenhum segredo versionado.
# Critério de saída
Projeto executa localmente e o pipeline passa sem avisos críticos.
# Etapa 2 — Direção visual obrigatória
# Trabalho
- Usar logo e materiais oficiais disponíveis.
- Criar exatamente três opções mobile-first dentro da direção “varejo forte”.
- Mostrar em cada opção: página inicial, página de loja e bloco de oferta.
- Apresentar as três opções ao usuário.
- Registrar a opção escolhida, tokens, tipografia, espaçamentos, botões, cards, fotografia e comportamento responsivo.
# Regra
Nenhum frontend definitivo deverá ser implementado antes da escolha visual.
# Critério de saída
Uma única direção visual aprovada e documentada com referências suficientes para impedir interpretações do agente.
# Etapa 3 — Banco, autenticação e permissões
# Trabalho
- Criar migrations do modelo definido no SDD.
- Implementar autenticação, recuperação de acesso e perfis.
- Implementar RLS e escopo por loja.
- Criar seed exclusivamente demonstrativo.
- Implementar layout administrativo e navegação conforme perfil.
- Implementar log de auditoria.
# Testes
- Gestor não consegue consultar ou alterar outra filial, inclusive por requisição direta.
- Marketing não gerencia usuários.
- Administrador possui acesso integral.
- Usuário desativado perde acesso.
# Critério de saída
Autenticação, permissões e migrations validadas por testes automatizados.
# Etapa 4 — Site público e páginas das lojas
# Trabalho
- Implementar design selecionado.
- Criar página inicial, institucional, lojas e página individual.
- Implementar horários, contatos e links externos.
- Criar estados de ausência de conteúdo sem inventar dados.
- Implementar responsividade e acessibilidade básica.
- Implementar cache e revalidação por entidade.
# Testes
- Jornadas em celular e desktop.
- Navegação por teclado.
- Links externos corretos.
- Loja inativa retorna página não encontrada.
- Nenhum conteúdo administrativo aparece publicamente.
# Critério de saída
Site público funcional com dados DEMO claramente identificados e fidelidade visual aprovada.
# Etapa 5 — Encartes e catálogo de ofertas
# Trabalho
- CRUD administrativo de categorias, ofertas e encartes.
- Upload seguro de imagens e PDFs.
- Agendamento, expiração, destaque e arquivo.
- Associação com uma ou várias lojas.
- Página pública de ofertas com filtros.
- Página de visualização de encarte.
- Preview administrativo antes de publicar.
# Testes
- Vigência antes, durante e depois do período.
- Um único encarte principal por loja.
- Preços formatados em BRL.
- Upload inválido rejeitado.
- Gestor limitado à própria loja.
- Conteúdo expirado removido das áreas atuais.
# Critério de saída
Marketing e gestores conseguem publicar e remover ofertas sem alterar código.
# Etapa 6 — Campanhas, rastreamento e QR Codes
# Trabalho
- Implementar campanhas e links rastreáveis.
- Implementar redirecionador
/r/[trackingCode]. - Gerar QR Codes a partir de links registrados.
- Implementar captura de UTMs e atribuição.
- Implementar todos os eventos padronizados.
- Integrar GA4 e Meta por ambiente e consentimento.
# Testes
- Eventos rejeitam campos não permitidos.
- QR Code desativado não redireciona.
- Destinos inválidos são bloqueados.
- Ambiente local não contamina analytics de produção.
- Eventos carregam loja e campanha corretas.
# Critério de saída
Matriz de eventos validada com evidência de cada ação prioritária.
# Etapa 7 — Dashboard
# Trabalho
- Criar filtros por período, loja, campanha, origem e dispositivo.
- Implementar audiência, engajamento e conversões.
- Criar comparativo entre lojas.
- Exibir claramente que conversões significam ações digitais, não vendas.
- Criar estados sem dados e erros de consulta.
# Testes
- Totais conferidos contra eventos de teste conhecidos.
- Gestor vê somente sua loja.
- Filtros combinados retornam resultados consistentes.
- Horários exibidos no fuso de São Paulo.
# Critério de saída
Os números do painel são reproduzíveis a partir do banco de eventos.
# Etapa 8 — SAC, ATS e consentimento
# Trabalho
- Implementar formulário do SAC.
- Configurar destinatário por loja e fallback central.
- Implementar antispam e limitação.
- Implementar página e links para ATS.
- Criar banner e preferências de cookies.
- Bloquear tags de marketing sem consentimento.
- Publicar políticas aprovadas pelo Grupo JB.
# Testes
- SAC entrega ao destinatário correto.
- Falha de entrega informa erro sem perder rastreabilidade técnica.
- Mensagem e dados pessoais não permanecem no banco.
- Clique no ATS é registrado.
- Rejeição de cookies impede GA4 e Meta.
# Critério de saída
Fluxos validados com e-mails e URLs de homologação.
# Etapa 9 — SEO, acessibilidade e performance
# Trabalho
- Implementar metadados, canonical, sitemap, robots e schemas.
- Revisar semântica, contraste, foco e textos alternativos.
- Otimizar imagens, fontes, scripts e cache.
- Bloquear indexação de ambientes não produtivos.
- Validar compartilhamento social.
# Critérios de aceite
- Sem erros críticos de acessibilidade automatizada.
- LCP alvo até 2,5 s, CLS até 0,1 e INP até 200 ms em páginas representativas.
- Nenhuma página administrativa indexável.
- Schema válido para grupo e filiais.
- Sitemap contém somente páginas públicas ativas.
# Etapa 10 — Conteúdo real e homologação
# Trabalho
- Substituir todos os dados DEMO pelos dados validados.
- Revisar as quatro lojas individualmente.
- Testar todos os WhatsApps, Maps, VIPs, avaliações e ATS.
- Executar testes completos em celular e desktop.
- Realizar homologação com Administração, Marketing e um Gestor.
- Corrigir apenas defeitos e divergências do PRD; novas ideias viram backlog.
# Bloqueio automático
O build de produção deverá falhar caso encontre TODO_CONTENT, credenciais de teste ou links demonstrativos.
# Critério de saída
Checklist de homologação assinado e zero defeitos críticos ou altos.
# Etapa 11 — Publicação e acompanhamento
# Trabalho
- Criar ou conectar os serviços gerenciados autorizados.
- Aplicar migrations de produção.
- Configurar variáveis e domínio.
- Publicar primeiro em homologação.
- Executar smoke tests.
- Publicar em produção somente após autorização.
- Configurar backups, alertas e monitoramento.
- Acompanhar erros, entregas do SAC e eventos nos primeiros dias.
# Critério de saída
Site público acessível no domínio oficial, painel protegido, analytics recebendo eventos e plano de reversão testado.
# 5. Testes globais obrigatórios
- Unitários para regras de vigência, permissões, URLs e atribuição.
- Integração para banco, RLS, uploads, e-mail e eventos.
- E2E para visitante, Marketing, Gestor e Administrador.
- Segurança para acesso cruzado entre lojas.
- Testes de formulário, spam e falhas externas.
- Testes visuais nos principais tamanhos de celular e desktop.
- SEO e dados estruturados.
- Acessibilidade.
- Build limpo e sem conteúdo demonstrativo antes da produção.
# 6. Formato de entrega entre agentes
Ao concluir uma etapa, o agente deverá entregar:
Contents
- Etapa concluída e critério de saída.
- Comportamentos implementados.
- Migrations e variáveis adicionadas.
- Testes executados com resultado.
- Evidências visuais quando houver interface.
- Pendências reais, sem sugestões especulativas.
- Riscos identificados.
- Próxima etapa permitida.
- Pergunta objetiva ao usuário somente quando existir um bloqueio decisório.
# Premissas finais
- Idioma: português do Brasil.
- Moeda: BRL.
- Fuso: America/Sao_Paulo.
- Um domínio central e quatro filiais.
- Publicação direta conforme perfil.
- Hospedagem gerenciada.
- SAC somente por formulário/e-mail.
- Recrutamento somente por ATS externo.
- Catálogo sem venda ou estoque.
- Dados reais e credenciais serão fornecidos antes da homologação final.
A primeira ação do agente implementador deverá ser executar somente a Etapa 0 e devolver a matriz de informações confirmadas, pendentes e bloqueadoras.