# Homologação — hml-ada.elopro.app # Copie para .env.staging no servidor e preencha. NÃO versione .env.staging. # Confira com: npm run verify:config # --- Ambiente lógico ------------------------------------------------------- # development | staging | production. Em homologação é sempre staging, mesmo # com NODE_ENV=production (o build é o otimizado). ADAPTER_ENV=staging # Prefixo das chaves externas. Separa este aplicativo dos demais do ecossistema # no Redis compartilhado e separa homologação de produção. ADAPTER_NAMESPACE=adaptador-planilhas # --- Identidade (Supabase Auth do projeto de HOMOLOGAÇÃO) ------------------ # Projeto Supabase próprio de homologação. Nunca o projeto de produção: # credencial administrativa não é compartilhada entre aplicações nem ambientes. NEXT_PUBLIC_SUPABASE_URL= NEXT_PUBLIC_SUPABASE_ANON_KEY= # Somente servidor. Nunca prefixar com NEXT_PUBLIC_. SUPABASE_SERVICE_ROLE_KEY= # Bucket PRIVADO e exclusivo deste aplicativo neste ambiente. # Confira com: npm run check:bucket SUPABASE_STORAGE_BUCKET=adaptador-planilhas-hml # Login próprio de homologação com Supabase Auth real (com senha, emitida e # validada pelo Supabase). O dev auth sem senha NÃO funciona aqui. # As contas são criadas pela operação no painel do Supabase de homologação. ADAPTER_STAGING_AUTH=1 # Alternativa a ADAPTER_STAGING_AUTH: encaminhar ao SSO do Elo Pro quando existir. ELO_PRO_LOGIN_URL= ELO_PRO_APP_URL=https://hml-ada.elopro.app AUTH_ALLOWED_RETURN_HOSTS=hml-ada.elopro.app # --- Banco ---------------------------------------------------------------- # Banco de HOMOLOGAÇÃO. Nunca o de produção. DATABASE_URL= # Decisão explícita e obrigatória: # 1 = criar o shim local de identidade (profiles, workspaces, workspace_members) # 0 = o schema do Elo Pro já existe nesse banco; não recriar # Rode `npm run migrate:check` antes de decidir. ADAPTER_APPLY_IDENTITY_SHIM=1 # --- Redis (contêiner isolado deste aplicativo) --------------------------- # Porta publicada só em 127.0.0.1 pelo docker-compose.staging.yml. ADAPTER_REDIS_PASSWORD= ADAPTER_REDIS_PORT=56380 REDIS_URL=redis://:SENHA_DO_REDIS@redis:6379 # --- Processamento -------------------------------------------------------- # worker é obrigatório fora de development. inline é recusado no start. ADAPTER_JOB_MODE=worker # Vida dos arquivos temporários, em segundos (1 a 604800). Obrigatório. SPREADSHEET_TEMP_TTL_SECONDS=86400 # Teto de um processamento, em milissegundos. Ausente usa 120000. SPREADSHEET_JOB_TIMEOUT_MS=120000 ADAPTER_WORKER_TICK_MS=2000 ADAPTER_WORKER_BATCH=20 # Carência do desligamento gracioso: espera o tick corrente liberar o lock. # Precisa ser MENOR que o stop_grace_period do compose (30s). ADAPTER_WORKER_GRACE_MS=20000 # Heartbeat lido pelo healthcheck do contêiner do worker. ADAPTER_WORKER_HEARTBEAT=/tmp/adaptador-worker-heartbeat # --- Observabilidade ------------------------------------------------------ # Projeto Sentry separado ou ambiente separado no mesmo projeto. SENTRY_DSN= NEXT_PUBLIC_SENTRY_DSN= SENTRY_ENVIRONMENT=staging # Preenchido pelo pipeline com o SHA do commit. SENTRY_RELEASE= # --- Imagem e portas do compose ------------------------------------------- ADAPTER_IMAGE=ghcr.io/elopro/adaptador-planilhas:staging ADAPTER_WEB_PORT=3110 # --- Smoke (fase 2, opcional; nunca comitar valores) ---------------------- # Conta de teste criada no painel do Supabase de HOMOLOGAÇÃO. Sem estas duas, # a fase autenticada do smoke é reportada como PENDENTE, nunca aprovada. ADAPTER_SMOKE_URL=https://hml-ada.elopro.app ADAPTER_SMOKE_EMAIL= ADAPTER_SMOKE_PASSWORD= ADAPTER_SMOKE_WORKSPACE= # --- Nunca definir em homologação ----------------------------------------- # ADAPTER_DEV_AUTH: o start é recusado com valor 1 fora de development. # ADAPTER_DEV_AUTH_SECRET: não é usado fora de development.