07 - Upload, WebApi e Multi-tenant¶
EnfaseCloud.ScanEnfaseCloud.WebApi
Draft
Objetivo¶
Garantir upload seguro, retomavel e verificavel entre estações on-prem, Vue e WebApi multi-tenant.
Baseline de produção¶
- WebApi executa em Azure App Service.
- Arquivos/documentos definitivos ficam no Azure Storage Account, em pasta/prefixo por tenant.
- Metadados, status, hashes, auditoria funcional e vinculos ficam no Azure SQL do tenant.
- Cada tenant GED usa um banco Azure SQL proprio.
- Processamento assíncrono relacionado ao upload usa WebApi/App Service e jobs internos, sem fila externa no baseline.
Upload chunked¶
- Cada upload deve ter
uploadId, nome, tamanho, total de chunks, hash esperado e algoritmo. - A WebApi deve validar hash antes de aceitar merge.
- Se houver conversao ou mutação server-side, a WebApi deve recalcular hash final.
- Chunks recebidos devem ser isolados por tenant e cliente.
- Sessao de upload deve suportar retomada e aborto.
Diferenca entre origens¶
- Origem
scan: exige manifesto, contexto de digitalização e validações arquivisticas. - Origem
webapp: upload comum, pode receber validação tecnica, mas nao representa ato de digitalização. - Origem
sync: preserva compatibilidade com sincronização existente.
Persistência¶
O arquivo final aprovado deve ser persistido no Azure Storage Account dentro da pasta/prefixo do tenant. O Azure SQL do tenant deve manter apenas metadados, status, referencias ao objeto armazenado, hashes e informações necessarias para auditoria, busca e preservação.
FileAttachment deve armazenar:
- hash final;
- algoritmo;
- origem;
- page count;
- verification code;
- manifest JSON ou referência ao manifesto;
- status PDF/A;
- status OCR;
- status assinatura;
- status preservação.
- referência ao objeto no Azure Storage Account, incluindo pasta/prefixo do tenant.
Auditoria¶
Eventos minimos:
- inicio de upload;
- chunk recebido;
- merge solicitado;
- hash divergente;
- validação tecnica;
- persistência;
- falha;
- cancelamento;
- conclusao.
Aceite¶
- Upload com hash divergente nao cria documento.
- Upload Vue existente continua funcionando.
- Upload Scan persiste manifesto e evidência.
- Dados de um tenant nao aparecem em outro.