Resumo técnico
Esta entrega implementa no front a camada pública de identificação e apresentação do parceiro. Isso significa que o Site consegue resolver uma configuração pública a partir do host, aplicar marca, limitar produtos visíveis e encaminhar um contexto de início de jornada. Esta entrega não implementa a identificação operacional definitiva do lojista. Essa parte depende do backend, porque envolve allowlist de domínio, credenciais, códigos FortCard, persistência, auditoria e validação contra a API.Fluxo operacional esperado
O fluxo abaixo é o contrato recomendado para produção. Ele separa apresentação pública no navegador de decisão operacional no backend.- A requisição chega por um domínio ou subdomínio.
- O navegador usa o host apenas para resolver uma configuração pública de apresentação.
- O Site aplica
PublicTenantConfig, exibe a marca pública permitida e filtraenabledProducts. - Ao iniciar uma jornada, o front envia
PublicFlowContextcom origem pública, produto escolhido e valores do formulário. - O backend observa o host real recebido pelo servidor ou proxy confiável.
- O backend normaliza o host, valida uma allowlist e resolve o parceiro comercial vigente.
- O backend confirma se o produto público está habilitado para essa origem.
- O backend mapeia
selectedProductIdpara os códigos operacionais FortCard. - O backend persiste a correlação entre origem, lead, produto e proposta.
- Se houver divergência entre host observado e contexto recebido, o backend registra auditoria e bloqueia a operação.
O que já existe no front
Arquivos envolvidos
src/shared/marca/publicTenantRuntime.ts
Define o contrato público de tenant usado pelas páginas públicas.
Campos principais:
Também contém:
fortcardPublicTenant: fallback FORT para ambiente local ou host sem configuração.fictitiousPublicTenant: exemplo demonstrativo usado na rota/exemplo-white-label.resolvePublicTenant(hostname): função que normaliza o host e retorna a configuração pública correspondente.
strLojista, strLoja, código interno de produto ou qualquer valor operacional.
src/site/LandingEntryRoute.tsx
É a entrada das páginas públicas.
Fluxo executado:
- Localiza o conteúdo da rota pública com
findLandingEntryContent(route.publicPath). - Resolve o tenant público com
resolveLandingEntryTenant(content, window.location.hostname). - Converte o tenant em marca visual com
brandForPublicTenant(tenant). - Verifica se o produto está habilitado com
isLandingEntryEnabled(content, tenant). - Renderiza home, landing de produto ou estado seguro de produto indisponível.
src/site/PublicBrandScope.tsx
Aplica a marca pública nas páginas públicas por CSS variables.
Variáveis principais:
Esse escopo deve ser usado somente no Site, nas páginas de produto e nas páginas institucionais. Fluxos de Empréstimos e Área Logada continuam com marca FortCard.
src/site/landingEntryContent.ts
Centraliza o conteúdo das páginas públicas e a fronteira de início de jornada.
Funções importantes:
O evento disparado por
beginPublicFlow usa o nome:
Campos visíveis e campos operacionais
Checklist para backend
Antes de aceitar a criação ou retomada de uma proposta, o backend deve confirmar:- o host observado está na allowlist;
- o parceiro comercial está ativo;
- o produto público está habilitado para o parceiro;
- o produto público foi mapeado para um código operacional válido;
- campos FortCard operacionais foram resolvidos fora do navegador;
- CPF, valor, prazo e dados informados foram validados;
- a proposta foi vinculada a uma origem comercial auditável;
- mensagens técnicas foram convertidas para erros seguros de tela.
src/site/pagina-inicial/HomeLandingView.tsx
Usa tenant.enabledProducts para:
- filtrar os cards de solução exibidos na home;
- filtrar banners vinculados a produtos;
- usar banners públicos do tenant quando existirem;
- manter um banner genérico FORT como apoio visual.
src/site/landings/ProductLandingView.tsx
Nas páginas de produto, o formulário inicial coleta CPF e valor desejado. Ao enviar, chama beginPublicFlow com:
tenantId;partnerId;sourceDomain;selectedProductId;cpf;requestedAmount;targetPath.
O que o backend precisa assumir
O backend deve tratar o contexto público como uma dica de origem, não como fonte de verdade. Ao receber uma intenção de jornada, o backend deve:- observar o host real recebido pelo servidor ou proxy confiável;
- normalizar o host;
- validar o host em allowlist;
- resolver o parceiro comercial vigente;
- confirmar se o produto está habilitado para o parceiro;
- mapear
selectedProductIdpara o código operacional FortCard; - resolver
strLojista,strLoja,strProduto,strPlanoe demais campos exigidos pela API; - persistir origem comercial, produto escolhido e vínculo com a proposta;
- registrar auditoria quando houver divergência entre host observado e contexto recebido.
Relação com a API FortCard
O front trabalha com IDs públicos estáveis:
A API FortCard pode exigir campos operacionais como
strLojista, strLoja, strProduto e strPlano. Esses campos devem ser resolvidos pelo backend a partir da configuração comercial validada.
Não exponha esses códigos no front. Se algum deles precisar aparecer em logs, use logs de backend com controle de acesso.
Cenários esperados
Como evoluir para produção
O front atual tem uma resolução local suficiente para demonstração e contrato técnico. Para produção, a recomendação é substituir a fonte local por uma configuração pública controlada pelo backend ou por arquivo gerado no deploy. Opções aceitáveis:
Independentemente do modelo, o contrato visual pode continuar igual: o Site recebe
PublicTenantConfig, aplica marca pública e envia PublicFlowContext ao iniciar uma jornada.
Exemplo de configuração pública
Este exemplo mostra o formato conceitual de uma configuração pública. Ele pode vir do backend, de um arquivo gerado no deploy ou de configuração por build.sourceDomain pelo host observado. O exemplo acima não substitui allowlist, configuração operacional ou credenciais.