Skip to main content

Documento de Requisitos — Feature flag upsell no zzapp

Tarefa: #193232 Contexto: Spike #193127 — Upsell no fluxo de vendas


Visão Geral

Adicionar duas novas chaves no Firebase Remote Config do zzapp para controlar a disponibilidade da funcionalidade de recomendação upsell. As flags seguem o padrão existente no projeto: snake_case no Firebase, enum em FirebaseRemoteConfigKeysEnum, mapping no extension FirebaseRemoteConfigKeysEnumExtension.key e getter tipado em FirebaseRemoteConfigServiceDictionary.

Não faz parte do escopo o consumo destas flags em telas, controllers ou fluxos — apenas a criação da infraestrutura de configuração remota.


Papéis Envolvidos

  • Administrador do sistema (produto/operações): define no console do Firebase quais lojas têm a funcionalidade ativa.
  • Sistema (Firebase Remote Config): armazena e distribui os valores das flags para as instâncias do zzapp.
  • Desenvolvedor (futuro): consome as flags para exibir ou ocultar a etapa de recomendação upsell no fluxo de vendas.

Requisitos Funcionais

RF-01 — Flag enable_upsell_recommendation

História de Usuário: Como administrador do sistema, quero ativar ou desativar globalmente a funcionalidade de upsell via Remote Config, para que eu possa controlar a liberação da feature sem precisar publicar uma nova versão do aplicativo.

Critérios de Aceitação:

  1. DEVE existir o valor enableUpsellRecommendation no enum FirebaseRemoteConfigKeysEnum.

  2. DEVE existir o mapeamento enable_upsell_recommendation no extension FirebaseRemoteConfigKeysEnumExtension.key.

  3. DEVE existir o getter bool get enableUpsellRecommendation em FirebaseRemoteConfigServiceDictionary, implementado via _getBoolProperty.

  4. QUANDO a chave enable_upsell_recommendation não existir no Firebase Remote Config (primeira execução ou chave não cadastrada) ENTÃO o getter DEVE retornar false.

Casos de Borda:

  • Se a chave não existir no Firebase, FirebaseRemoteConfig.instance.getBool(key) retorna false por padrão — comportamento desejado.

RF-02 — Flag enable_upsell_recommendation_by_code_store

História de Usuário: Como administrador do sistema, quero liberar a funcionalidade de upsell gradualmente por loja, para que eu possa fazer um rollout controlado antes de ativar globalmente.

Critérios de Aceitação:

  1. DEVE existir o valor enableUpsellRecommendationByCodeStore no enum FirebaseRemoteConfigKeysEnum.

  2. DEVE existir o mapeamento enable_upsell_recommendation_by_code_store no extension FirebaseRemoteConfigKeysEnumExtension.key.

  3. DEVE existir o getter List<String> get enableUpsellRecommendationByCodeStore em FirebaseRemoteConfigServiceDictionary, implementado via _getStringList().

  4. O formato DEVE seguir o padrão existente: string no Firebase com códigos de loja separados por ;, ex: "LOJA001;LOJA002;LOJA003".

  5. QUANDO a chave não existir no Firebase OU o valor for string vazia ENTÃO o getter DEVE retornar uma lista vazia ([]).

Casos de Borda:

  • A string no Firebase não deve conter espaços em branco — o método _getStringList() já remove espaços com replaceAll(' ', '').

Fora de Escopo

  • Consumo das flags em telas, controllers, providers ou fluxos do zzapp.
  • Criação de qualquer interface de usuário relacionada ao upsell.
  • Alterações no backend (checkout service, cart API, etc.).
  • Cadastro das chaves no console do Firebase — responsabilidade da operação após o deploy.

Dependências

DependênciaDescriçãoStatus
FirebaseRemoteConfig configurado no zzappJá existe e é inicializado em main.dart:85Existente
FirebaseRemoteConfigServiceServiço singleton já implementado e em produçãoExistente
Acesso ao console FirebaseNecessário para cadastrar as chaves enable_upsell_recommendation e enable_upsell_recommendation_by_code_store com seus valores padrãoOperacional

Questões em Aberto

  • Nenhuma questão em aberto identificada até o momento.