cellarvinhostechteam/novo-app-cellar
feat/tab-pop-to-top · 22 de setembro de 2026 às 14:27 · gpt-5.6-sol
Análise restrita aos 24 arquivos fornecidos como diff da branch feat/tab-pop-to-top em relação à main. Foram identificados riscos relevantes de segurança de transporte, publicação OTA em produção a partir de development, configuração incompatível de push iOS em produção e bloqueio permanente na splash quando fontes falham. Também há bugs reproduzíveis em deep links e scripts de migração, além de chamadas desnecessárias de API e ausência de automação de testes visível. O achado solicitado sobre credenciais na query string da WebView foi integralmente ignorado e não afetou a pontuação.
Transporte inseguro está liberado globalmente em iOS e Android
securityapp.config.js:17A configuração define NSAllowsArbitraryLoads: true no iOS, inclusive novamente dentro de infoPlist, e usesCleartextTraffic: true no Android. Isso permite tráfego HTTP sem criptografia de forma global, expondo qualquer comunicação acidental ou redirecionamento HTTP a interceptação e alteração em trânsito.
Workflow permite publicar diretamente no canal production a partir da branch development
reliability.eas/workflows/publish-development-updates.yml:16O workflow é disparado em push para development e o job dev_update_production executa quando a mensagem do commit contém “update” e “production”, publicando no channel: production. Não há aprovação, validação de branch main, ambiente protegido ou etapa de teste no arquivo.
Configuração de push iOS permanece em modo development para builds de produção
reliabilityapp.config.js:30O entitlement aps-environment está fixado como development e o onesignal-expo-plugin também está configurado com mode: development. O mesmo app.config.js é usado pelo perfil production definido no eas.json, sem seleção condicional por perfil.
Falha no carregamento de fontes pode manter o aplicativo permanentemente na splash
reliabilityApp.tsxO retorno de useFonts é desestruturado apenas como [fontsLoaded], ignorando o erro. Enquanto fontsLoaded for false, o componente sempre retorna AnimatedSplash. Portanto, uma rejeição definitiva no carregamento de qualquer fonte não possui caminho de fallback para liberar a interface.
Correspondência parcial de deep link pode redirecionar URLs não relacionadas para o Bolão
bugApp.tsxgetStateFromPath usa path.includes("bolao"). Assim, qualquer caminho ou parâmetro contendo esse texto, como collection/nao-bolao ou uma query de campanha contendo “bolao”, é convertido para a rota Home com openBolao: true, em vez de seguir o parser padrão.
Script de substituição nunca adiciona o import de AppScrollView
bugreplace_scrollviews.js:38O script primeiro substitui <ScrollView por <AppScrollView e depois verifica if (!content.includes('AppScrollView')). Após a substituição, a condição sempre é falsa, inclusive quando o arquivo originalmente não possuía o import. O resultado gerado referencia AppScrollView sem import e pode falhar na compilação.
Consulta da vitrine é executada mesmo para usuários que não podem visualizar o componente
performancesrc/components/home/MinhaVitrine.tsxskus recebe uma lista padrão quando o usuário não possui skusVitrinePersonalizada e useAdegaProductsQuery(skus) é chamado antes da condição que retorna null para usuários fora do clube ou sem cluster. Portanto, montar o componente para um usuário não elegível ainda dispara a consulta dos SKUs padrão.
Falha no AsyncStorage impede o fechamento do modal de instruções
reliabilitysrc/components/home/SelecaoCupons/HowToUseCouponsModal.tsxhandleClose aguarda AsyncStorage.setItem ou removeItem antes de chamar onClose, sem try/finally. Se a operação de armazenamento rejeitar, onClose não é executado e o modal permanece aberto. loadPref também é iniciado sem tratamento de rejeição.
Não há comando de testes automatizados exposto no package.json
testingpackage.json:5A seção scripts contém comandos de execução, build, submit e upload de source maps, mas não define test, lint ou typecheck. A diff fornecida altera inicialização, deep links, workflows, modal e scripts de transformação sem incluir testes correspondentes.