Implementa o MVP do Adaptador de Planilhas no Elo Pro.
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>
This commit is contained in:
commit
6e23f1533b
144 files changed
+19060
No files matched your search
@@ -0,0 +1,61 @@
|
||||
# PROMPT 10 — Jobs, processamento e geração de arquivos
|
||||
|
||||
Use o MASTER CONTEXT.
|
||||
|
||||
## Objetivo
|
||||
|
||||
Implementar o processamento real de uma fonte mapeada para um novo arquivo baseado no modelo, preservando o original.
|
||||
|
||||
## Ciclo do job
|
||||
|
||||
Defina estados explícitos e tipados, por exemplo:
|
||||
`draft -> validating -> ready -> processing -> completed | failed | expired | cancelled`
|
||||
Adapte ao padrão do repo sem perder clareza.
|
||||
|
||||
## Regras
|
||||
|
||||
- job sempre pertence a workspace e usuário;
|
||||
- validar novamente autorização e integridade no servidor antes de processar;
|
||||
- uma mesma operação do usuário não executa duas transferências simultâneas;
|
||||
- processamento deve ser idempotente para evitar cliques duplicados;
|
||||
- múltiplas fontes na mesma jornada são processadas sequencialmente;
|
||||
- o modelo original jamais é sobrescrito;
|
||||
- saída é novo arquivo;
|
||||
- mapping 1:1 e obrigatórias devem ser revalidados server-side;
|
||||
- erros não devem expor conteúdo sensível.
|
||||
|
||||
## Saídas
|
||||
|
||||
- XLSX;
|
||||
- CSV;
|
||||
- PDF via `@react-pdf/renderer` quando o formato fizer sentido para o resultado definido no produto.
|
||||
|
||||
Garanta compatibilidade de nomes, encoding, caracteres especiais e download autorizado.
|
||||
|
||||
## Preservação de modelo
|
||||
|
||||
Se o requisito de “manter formatação do modelo” depender da biblioteca XLSX, escreva teste de não regressão e documente limitações reais. Não prometa preservação que a implementação não suporte.
|
||||
|
||||
## Download
|
||||
|
||||
- autorização no momento do download;
|
||||
- URL assinada/stream privado conforme storage;
|
||||
- audit event relevante;
|
||||
- temporário com expiração;
|
||||
- nome de arquivo seguro e previsível.
|
||||
|
||||
## Job runner
|
||||
|
||||
Se o repo já tiver fila/worker, use-o. Se não tiver e o processamento puder exceder timeout do runtime atual, não esconda o problema dentro de uma request longa: crie abstração/ADR e implemente somente solução aprovada.
|
||||
|
||||
## Testes
|
||||
|
||||
- sucesso XLSX/CSV/PDF;
|
||||
- modelo intacto;
|
||||
- mapping inválido barrado;
|
||||
- idempotência;
|
||||
- dupla submissão;
|
||||
- usuário/workspace indevido;
|
||||
- caracteres especiais;
|
||||
- erro de storage;
|
||||
- retry seguro quando aplicável.
|
||||
Reference in new issue
Block a user