Pular para o conteúdo principal

Home, Indicadores e Engajamento — Visão Geral

Última atualização: 15 de julho de 2026

O que é este fluxo

A home é a primeira tela depois do login, montada como uma lista de seções que o próprio usuário pode ligar ou desligar. Este é o fluxo com a maior proporção de conteúdo ainda mockado entre todos os já documentados. Isso não é necessariamente um problema, dá para ler como um retrato de um produto em construção, com a estrutura visual e de navegação já pronta enquanto as fontes de dados reais ainda estão sendo conectadas uma a uma. O objetivo desta seção é deixar claro, sem rodeios, o que já está de fato ligado a dados reais e o que ainda é dado de exemplo.

Resumo: o que é real e o que é mock

ÁreaEstadoDocumentado em
Seções visíveis na home (flags + preferência do usuário)RealEste documento
Perfil vendedor/supervisor da homeMock (constante fixa no código)Este documento
Gauge de performance na homeMockMétricas e Indicadores
Tela de IndicadoresMock (todos os valores são zero fixo)Métricas e Indicadores
Detalhe de métricaMockMétricas e Indicadores
RankingMock (clientes de teste + tabela de pontos fixa)Ranking e Engajamento
Detalhe de engajamento de um clienteHíbrido: resumo real, evolução mensal mockRanking e Engajamento
Cortes de pedidoMockAvisos e Comunicação
Pesquisas pendentesMockAvisos e Comunicação
Mural de comunicaçãoReal (publicationService)Avisos e Comunicação
Novidades da versãoReal (versionService)Avisos e Comunicação
Painel de últimas mudanças de sincronizaçãoRealAvisos e Comunicação
Avaliação de satisfaçãoSó estado local, sem envioAvisos e Comunicação
Assistente virtual (chat)Entrada real, resposta é texto fixo (lorem ipsum)Este documento

Arquivos-chave

ArquivoResponsabilidade
features/home/home.tsx + home-controller.tsxScreen e hub de estado da home (mais de 1.800 linhas)
storage/home-management/home-management.storage.tsPreferência do usuário sobre quais seções mostrar
app/home/*Mais de duas dezenas de subtelas alcançáveis a partir da home

As seções da home são reais, controladas por flag e por preferência do usuário

A home é montada a partir de uma lista de seções possíveis (performance, shortcuts, feedback, quick-actions, communication, release), cada uma exigindo tanto uma flag de configuração da organização quanto uma preferência individual do usuário, gravada em storage/home-management/home-management.storage.ts:

// home-controller.tsx
const shouldShowFeedbackSection =
homeManagementPreferences.rating && isForceRatingEnabled && isFeedbackVisible;
const shouldShowCommunicationSection =
homeManagementPreferences["communication-wall"] && isCommunicationWallEnabled;
const shouldShowReleaseSection =
homeManagementPreferences["version-news"] && (isVersionNewsEnabled || isUsageTipsEnabled);
// storage/home-management/home-management.storage.ts
export const DEFAULT_HOME_MANAGEMENT_PREFERENCES: HomeManagementPreferences = {
performance: true,
engagement: false,
"quick-actions": true,
"communication-wall": true,
"dashboard-reports": true,
ranking: false,
"version-news": true,
rating: true,
};

Essa preferência é editável pelo próprio usuário numa tela de gerenciamento da home (dentro da área de perfil/loja), e persistida em MMKV, reativa via pub-sub, no mesmo padrão de outros storages já documentados.

O perfil da home (vendedor/supervisor) é uma constante fixa, não o usuário logado

Esse é o achado mais importante deste documento. A home pode se comportar como "vendedor" ou "supervisor", e decidir se mostra métricas de performance ou só um resumo de vendas finalizadas no mês, mas essa decisão não vem do usuário autenticado, vem de duas constantes fixas no topo do arquivo do controller, com um comentário explícito orientando a editar o código para trocar:

// home-controller.tsx
// Mock principal da Home: altere aqui para alternar entre vendedor/supervisor
// e entre fluxo com métricas ou com vendas finalizadas no mês.
const HOME_PROFILE: HomeProfile = "supervisor";
const HOME_HAS_METRICS = true;

// ...
const homeProfile = HOME_PROFILE;
const hasPerformanceMetrics = HOME_HAS_METRICS;
const isSupervisor = homeProfile === "supervisor";

Enquanto isso não for conectado ao perfil real do usuário autenticado, todo usuário que abrir o app vê a home no modo "supervisor com métricas", independente de quem ele seja de fato.

Mapa de subtelas (app/home/*)

A home é o ponto de partida de mais de 25 rotas de subtelas. Agrupando por tema:

GrupoRotas
Métricas e indicadoresindicadores, detalhes-metrica, detalhes-performance
Ranking e engajamentoranking, classificacao, detalhes-engajamento
Assistente virtual e IAassistente-virtual (+ -chat, -historico, -loading), sugestao-pedido-* (alertas/loading/parâmetros/resultado), analise-cliente
Comunicação e novidadesmural-comunicacao (+ detalhes), novidades (+ detalhes-versao, sugestoes-novidades), dicas-de-uso (+ detalhes), o-que-vem-por-ai (+ detalhes)
Avisos operacionaiscortes-de-pedidos, pesquisas-pendentes (+ responder-pesquisa)
Chat internochat-interno, iniciar-chat, abrir-chat

O assistente virtual: entrada real, resposta fixa

Tocar em "Assistente Virtual" na home navega de fato para /home/assistente-virtual, uma tela real com histórico de conversa e perguntas sugeridas. O que não é real é a resposta: o arquivo de dados do assistente já vem com uma resposta fixa em latim de recheio, usada para qualquer pergunta:

// home-virtual-assistant.data.ts
export const VIRTUAL_ASSISTANT_LOREM_REPLY =
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";

O restante do assistente virtual, como um serviço de IA de fato conversando com o vendedor, é um fluxo próprio ainda não implementado, fora do escopo deste documento.

Armadilhas conhecidas

Antes de investigar "por que a home mostra dados errados para este vendedor", confirme se o problema não é simplesmente HOME_PROFILE/HOME_HAS_METRICS sendo constantes fixas, não dependentes de quem está logado. E ao testar qualquer parte da home, lembre que quase todo widget de métrica, ranking ou indicador que parece "vazio" ou "zerado" pode estar assim porque é mesmo um placeholder fixo, não porque falta sincronizar alguma coisa.