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>
1.4 KiB
1.4 KiB
PROMPT 11 — Redis, progresso, lock e resiliência
Use o MASTER CONTEXT e a implementação Redis existente do Elo Pro.
Objetivo
Adicionar coordenação efêmera sem transformar Redis em fonte de verdade.
Implementar
- Namespace claro para chaves do Adaptador.
- Lock por operação/usuário necessário para impedir processamento concorrente indevido.
- TTL do lock com renovação/cleanup seguro para evitar deadlock.
- Progresso efêmero em Redis quando trouxer benefício, mantendo status durável no PostgreSQL.
- Idempotency key para disparo de processamento, se o padrão do repo suportar.
- Query/polling/subscription da UI conforme arquitetura existente; TanStack Query deve invalidar/refetch adequadamente.
- Fallback claro se Redis estiver indisponível: falha controlada ou degradação segura, nunca execução duplicada silenciosa.
UX de progresso
- percentual somente se for real/estimável; não invente precisão falsa;
- estados textuais como “Validando”, “Processando”, “Gerando arquivo”;
- sucesso e erro persistentes o suficiente para o usuário agir;
- botão de processar desabilitado durante job ativo.
Observabilidade
Tags de job ID e workspace ID técnico, sem dados de planilha.
Testes
- lock adquirido;
- lock concorrente;
- expiração;
- erro de Redis;
- retry;
- progresso;
- refresh de página durante job;
- job concluído enquanto UI estava fechada.