ExportJob representa uma solicitação de exportação. Ele registra o recurso exportado, o escopo autorizado, as colunas e filtros escolhidos, o status do processamento e o arquivo final gerado em storage.
Campos
| Campo | Tipo | Descrição |
|---|---|---|
exportJobId | UUID | Identificador único |
exportScheduledId | UUID? | Agendamento que originou o job, quando aplicável |
organizationId | UUID? | Organização relacionada ao job |
companyId | UUID? | Empresa relacionada ao job |
cooperativeId | UUID? | Cooperativa relacionada ao job |
requestedByUserId | UUID | Usuário que solicitou a exportação |
resource | String | Chave do recurso exportado, correspondente a ExportResource |
scopeType | DataTransferScopeType | Escopo principal da exportação |
format | DataTransferFileFormat | Formato do arquivo gerado |
columns | String[] | Colunas solicitadas para o arquivo |
filters | Json | Filtros aplicados à consulta |
fileKey | String? | Chave do arquivo final em storage |
fileName | String? | Nome sugerido para download |
contentType | String? | MIME type do arquivo final |
sizeBytes | Int? | Tamanho do arquivo final em bytes |
totalRows | Int? | Total de linhas escritas no arquivo |
failureReason | String? | Motivo de falha quando o job termina em FAILED |
status | ExportJobStatus | Status da exportação |
expiresAt | DateTime? | Data limite de disponibilidade do arquivo |
startedAt | DateTime? | Data em que o worker iniciou a exportação |
finishedAt | DateTime? | Data em que o job chegou a um status terminal |
createdAt | DateTime | Data de criação |
updatedAt | DateTime | Data da última atualização |
deletedAt | DateTime? | Data de remoção lógica |
Relacionamentos
- Relaciona-se com Organization, quando o escopo exigir organização.
- Relaciona-se com Company, quando o escopo for
COMPANY. - Relaciona-se com Cooperative, quando o escopo for
COOPERATIVE. - Relaciona-se com User por
requestedByUserId. - Referencia ExportResource por
resource. - Relaciona-se com ExportScheduled, quando o job foi gerado por agendamento.
Regras de Negócio
resourcedeve existir como catálogo ativo em ExportResource.exportScheduledIddeve ser preenchido somente quando o job nasce de um ExportScheduled.scopeTypedefine quais identificadores de escopo são obrigatórios. Por exemplo,COOPERATIVEexigecooperativeId.columnsdeve ser subconjunto das colunas permitidas no catálogo.filtersdeve respeitar os campos e operadores permitidos no catálogo.fileKey,fileName,contentType,sizeBytes,totalRowseexpiresAtsão preenchidos quando o arquivo final é gerado.- URLs assinadas para download não devem ser persistidas. Elas são derivadas de
fileKey. EXPIREDindica que o arquivo não deve mais ser disponibilizado para download.- Remoção lógica preserva histórico do job, mas não substitui a política de retenção do arquivo.
Enums
DataTransferScopeType
| Valor | Descrição |
|---|---|
ORGANIZATION | Operação limitada a uma organização |
COMPANY | Operação limitada a uma empresa |
COOPERATIVE | Operação limitada a uma cooperativa |
BACKOFFICE | Operação administrativa |
DataTransferFileFormat
| Valor | Descrição |
|---|---|
CSV | Arquivo CSV |
XLSX | Planilha Excel |
ExportJobStatus
| Valor | Descrição |
|---|---|
PENDING | Job criado, ainda sem publicação para processamento |
QUEUED | Job publicado para processamento assíncrono |
RUNNING | Worker gerando o arquivo |
COMPLETED | Arquivo gerado e disponível |
FAILED | Exportação abortada antes da conclusão |
EXPIRED | Arquivo final expirado para download |
CANCELED | Job cancelado antes de terminar |