Sempre
O Sempre é o produto de cartão de benefícios do veículo: a venda gera um cartão (chave = chassi, o CPF é só o titular atual), entregue por QR/link para Apple Wallet e Google Wallet, com a marca da concessionária. O superapp cobre a operação da concessionária: catálogo, venda, clientes, cancelamento e administração. Escopo completo no milestone MVP Sempre (TEC-1144).
Esta página documenta a estrutura base (TEC-1248). As regras de negócio de cada módulo ficam nas tasks de feature.
Modelo de tenant
1 conta (accounts) = 1 grupo, marcada com public_data.product = 'sempre'.
Concessionárias e lojas serão tabelas filhas da conta (TEC-1195).
Estrutura de pastas
app/[locale]/sempre/
├── _lib/
│ ├── sempre-nav.ts # catálogo de navegação (key, label, ícone, grupo)
│ └── create-module-layout.tsx # layout com enforceModuleAccess por módulo
├── _components/sempre-module-page.tsx # placeholder "em construção"
└── home/[account]/
├── layout.tsx # createTeamWorkspaceLayout(AppSidebar, { product: 'sempre' })
├── page.tsx # Início (placeholder)
├── _components/app-sidebar.tsx
├── pacotes/ clientes/ nova-venda/ concessionarias/ usuarios/
└── billing/ settings/ members/ # reexport de _shared/team-workspace
Módulos e ativação
O catálogo de módulos vive em products.modules (migration
20260930120000_products_sempre.sql). Só inicio é core; os demais têm
defaultEnabled: false e aparecem na sidebar como Em breve (desabilitados).
Acessar a URL de um módulo inativo redireciona para o Início
(enforceModuleAccess).
Para ativar um módulo em uma conta, sem deploy:
update public.accounts
set public_data = jsonb_set(public_data, '{modules,clientes}', 'true')
where slug = '<slug-da-conta>';
Para ativar por padrão em todas as contas, remova defaultEnabled: false do
módulo no jsonb (nova migration).
Adicionar um módulo novo
- Incluir o módulo em
products.modules(migration) comdefaultEnabled: false. - Incluir o item em
SEMPRE_NAV_ITEMS(_lib/sempre-nav.ts) com a mesmakey. - Criar
home/[account]/<slug>/layout.tsxcomcreateSempreModuleLayout('<key>')epage.tsx.
Ambiente local
seed.sql cria a conta Sempre Demo (sempre-demo), com o usuário
desenvolvimento@meresolve.com.br como owner. Acesse
/sempre/home/sempre-demo.
Fora do escopo da estrutura base
Tabelas de negócio (venda, cartão, pacote, concessionária/loja), perfis e permissões, integração DMS/Fandi, Wallet, WhatsApp, domínio/login próprio e tema visual próprio.