Configuração¶
Precedência do app principal¶
O flavor Firebase é resolvido por resolveFirebaseFlavor:
| Prioridade | Fonte | Valores |
|---|---|---|
| 1 | --dart-define=FLAVOR |
dev, prod |
| 2 | flavor Android via MethodChannel | dev, prod |
| 3 | application ID | sufixo .dev implica dev; outro ID não vazio implica prod |
| 4 | modo de build | release → prod; demais → dev |
O resultado escolhe .env.dev ou .env.prod e DefaultFirebaseOptions.currentPlatformForFlavor(flavor). Emuladores só são conectados quando o app está em debug e USE_FIREBASE_EMULATOR=true.
Variáveis do app principal¶
Estas chaves são lidas via flutter_dotenv:
| Nome | Default | Consumidor |
|---|---|---|
USE_FIREBASE_EMULATOR |
desabilitado | bootstrap do app |
AUTH_EMULATOR_HOST |
127.0.0.1 |
Firebase Auth |
AUTH_EMULATOR_PORT |
9099 |
Firebase Auth |
FIRESTORE_EMULATOR_HOST |
127.0.0.1 |
Cloud Firestore |
FIRESTORE_EMULATOR_PORT |
8081 |
Cloud Firestore |
FUNCTIONS_EMULATOR_HOST |
127.0.0.1 |
Cloud Functions |
FUNCTIONS_EMULATOR_PORT |
5001 |
Cloud Functions |
STORAGE_EMULATOR_HOST |
127.0.0.1 |
Firebase Storage |
STORAGE_EMULATOR_PORT |
9199 |
Firebase Storage |
Os arquivos .env, .env.dev e .env.prod aparecem na lista de assets de aivaleu_app; um checkout novo precisa criá-los antes de buildar esse app.
Dart defines dos outros apps¶
| App | Define | Default |
|---|---|---|
| Super Admin | USE_FIREBASE_EMULATOR |
false |
| Super Admin | RECAPTCHA_SITE_KEY |
valor público de site compilado no código |
| Garçom | USE_FIREBASE_EMULATOR |
false |
| Garçom | RECAPTCHA_SITE_KEY |
valor público de site compilado no código |
| Garçom | FIREBASE_EMULATOR_HOST |
127.0.0.1 |
| Garçom | AUTH_EMULATOR_PORT |
9099 |
| Garçom | FIRESTORE_EMULATOR_PORT |
8081 |
| Garçom | FUNCTIONS_EMULATOR_PORT |
5001 |
O Super Admin usa localhost e portas fixas no modo local. Para execução web, App Check usa reCAPTCHA Enterprise; no monitor nativo, o helper registra que reCAPTCHA só se aplica à web.
Segredos das Functions¶
Declarados com defineSecret:
| Nome | Uso |
|---|---|
STRIPE_SECRET_KEY |
cliente server-side Stripe e cancelamento na exclusão |
STRIPE_WEBHOOK_SECRET |
valida assinatura do webhook |
STRIPE_PRICE_PREMIUM_MONTHLY |
plano mensal oficial |
STRIPE_PRICE_PREMIUM_LAUNCH_MONTHLY |
plano de lançamento |
STRIPE_SUCCESS_URL |
redirect após Checkout concluído |
STRIPE_CANCEL_URL |
redirect após cancelamento |
STRIPE_PORTAL_RETURN_URL |
retorno do Customer Portal |
No emulador, forneça placeholders/test credentials somente em functions/.secret.local. Em produção, configure Firebase/Google Cloud Secret Manager. Nunca inclua valores em documentação, logs ou commit.
Variáveis de scripts¶
| Nome | Uso |
|---|---|
FIRESTORE_EMULATOR_HOST |
Admin SDK aponta para Firestore local; obrigatório em scripts seguros de teste |
FIREBASE_AUTH_EMULATOR_HOST |
seed de usuários Auth local |
GCLOUD_PROJECT / FIREBASE_PROJECT |
projeto explícito de scripts administrativos |
SUPER_ADMIN_UID |
UID alvo do grant de claim |
GOOGLE_APPLICATION_CREDENTIALS |
credencial administrativa fora do emulador |
grant_super_admin_claim.js, backfills com --apply, deploy e qualquer script sem host de emulador podem escrever em ambiente remoto. Confirme projeto e credenciais antes de executar.
Scheduler operacional¶
O documento settings/schedulers contém três jobs conhecidos:
| Job | Intervalo default | Habilitado |
|---|---|---|
campaignAutoTransitions |
5 min | sim |
closeExpiredCampaigns |
10 min | sim |
expireCoupons |
30 min | sim |
Intervalos aceitos: 1, 5, 10, 60 e 720 minutos. O scheduler implantado desperta a cada minuto; shouldRun decide se a lógica executa. resetTrendingProducts não usa este documento.
Remote Config¶
As chaves de apresentação/versionamento estão em Domínio e dados. Remote Config não concede permissões, Premium ou status de campanha.