O módulo usa a identidade Supabase, isola cada workspace e registra storage, TTL, runner e biblioteca XLSX como decisões ainda abertas. Co-authored-by: Cursor <cursoragent@cursor.com>
2.5 KiB
2.5 KiB
Deploy e operação
Ordem
- Conferir envs sem colar segredo no repositório.
npm run migratenaDATABASE_URLdo ambiente.- Subir a aplicação com a flag ainda desligada.
- Subir
npm run workere o Redis do ambiente. - Confirmar bucket privado. Não criar bucket público.
- Smoke test no workspace piloto e só então
npm run flag -- <workspace_id> on.
Variáveis
| Nome | Uso |
|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Auth no browser/servidor |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Chave pública do Auth |
SUPABASE_SERVICE_ROLE_KEY |
Storage no servidor. Nunca NEXT_PUBLIC_ |
SUPABASE_STORAGE_BUCKET |
Bucket privado |
DATABASE_URL |
PostgreSQL. Obrigatório em produção |
REDIS_URL |
Lock. Sem ela o processamento recusa iniciar |
SENTRY_DSN / NEXT_PUBLIC_SENTRY_DSN |
Observabilidade |
SENTRY_ENVIRONMENT / SENTRY_RELEASE |
Ambiente e release |
ELO_PRO_LOGIN_URL |
Login central |
SPREADSHEET_TEMP_TTL_SECONDS |
Retenção. Obrigatório em produção; valor de produto ainda aberto |
ADAPTER_JOB_MODE |
worker em produção, inline em desenvolvimento |
ADAPTER_DEV_AUTH |
Só fora de produção |
ADAPTER_DEV_AUTH_SECRET |
Assina o cookie local. Não é senha de usuário |
O cookie de workspace lido pela aplicação chama-se elo_pro_workspace_id.
Rollback
- Aplicação: voltar o deploy anterior.
- Flag:
npm run flag -- <workspace_id> off. - Schema:
migrations/down/0002_spreadsheet_adapter_down.sqlremove só tabelas do módulo. - Jobs: parar o worker. Jobs
queuednão avançam. Jobsprocessingsem lock viramINTERRUPTEDna próxima varredura.
Smoke
Login Elo Pro sem segunda senha; workspace piloto com flag ligada; upload de modelo; fonte; aba ou cabeçalho se preciso; mapeamento; prévia; download XLSX, CSV e PDF; workspace sem flag recebe bloqueio; download sem sessão recebe 401.
Runbook
- Job travado em
processing: confirmar se o lock Redis ainda existe. Se expirou, o worker marcaINTERRUPTED. O usuário pode tentar de novo. - Redis indisponível: APIs de leitura seguem; processamento responde
REDIS_UNAVAILABLEe não grava saída. - Storage indisponível: upload falha com
STORAGE_FAILUREou 503 e não deixa modelo sem arquivo. - Migration parcial:
schema_migrationssó registra arquivo aplicado por completo. Reexecutarnpm run migratecontinua do próximo arquivo. Não editar migration já aplicada. - Limpeza:
npm run cleanupapaga blobs em chaves/tmp/expiradas e não mexe em/models/.