Ir para o conteúdo

02 - Design Arquitetural

EnfaseCloud.ScanEnfaseCloud.WebApiEnfaseCloud.LibraryEnfaseCloud.VueEnfaseCloud.IDP

Draft

Baseline de produção Azure

A arquitetura de produção aprovada para estes specs e:

  • EnfaseCloud.WebApp: Azure App Service.
  • EnfaseCloud.WebApi: Azure App Service.
  • GED: Azure SQL com um banco por tenant.
  • EnfaseCloud.IDP: Azure App Service.
  • Identidade: Azure SQL exclusivo do IDP, separado dos bancos GED.
  • Documentos: Azure Storage Account, com pasta/prefixo por tenant.
  • Processamento assíncrono: WebApi/App Service e jobs internos, sem fila externa no baseline.

Responsabilidades

EnfaseCloud.Scan

Estação operacional Windows/on-prem. Responsável por capturar do scanner, aplicar perfil de digitalização, compor PDF/A, calcular hash final, gerar manifesto local, enfileirar upload e sincronizar com a cloud.

Nao deve decidir regras globais de preservação, TTDA, perfis de usuario cloud ou politicas multi-tenant alem das configurações recebidas.

EnfaseCloud.Library

Nucleo compartilhado. Deve conter contratos e servicos reutilizaveis:

  • composição PDF/A;
  • validação PDF/A;
  • hash e fixidez;
  • manifesto de digitalização;
  • modelos de OCR;
  • resultado de assinatura;
  • resultado de conformidade tecnica.

EnfaseCloud.WebApi

Concentradora cloud multi-tenant em Azure App Service. Deve validar upload, hash, manifesto, PDF/A, assinatura e permissoes. Deve persistir metadados e status no Azure SQL do tenant, documentos no Azure Storage Account em pasta/prefixo do tenant, indexar, auditar, executar preservação e expor APIs ao Vue.

EnfaseCloud.WebApp

Interface cloud em Azure App Service. Deve exibir status, pendencias e ações disponiveis. Nao deve implementar regra de conformidade de forma independente.

EnfaseCloud.IDP

Fronteira de identidade em Azure App Service. Deve fornecer identidade do usuario, claims, tenant/contexto e auditoria de login, usando Azure SQL exclusivo do IDP. Nao deve conter regra de digitalização nem compartilhar banco com os tenants GED.

Contratos centrais

DigitalizationManifest

Representa a evidência do ato de digitalização. Deve ser serializavel em JSON, versionado e hashavel.

Campos minimos:

  • schemaVersion
  • verificationCode
  • tenantId
  • clienteId
  • operatorUserId
  • operatorDisplayName
  • digitizationResponsible
  • digitizationLocation
  • scannerName
  • scannerDriver
  • scannerProfile
  • dpi
  • paperSize
  • duplex
  • pageCount
  • blankPagePolicy
  • documentTypeId
  • documentClassCode
  • retentionRuleId
  • fileSha256
  • manifestSha256
  • pdfA
  • ocr
  • signature
  • events

PdfAValidationResult

Resultado formal da validação:

  • status: valid, invalid, not_run, not_applicable, error
  • profile: PDF/A-2B
  • validator: veraPDF
  • validatorVersion
  • validatedAtUtc
  • errors
  • warnings
  • rawReportPath opcional

SignatureStatus

Estados:

  • NotRequired
  • RequiredPending
  • SignedValid
  • SignedInvalid
  • ValidationError

Fluxo de dados

O Scan produz arquivo e manifesto. A WebApi valida, grava o arquivo no Azure Storage Account dentro da pasta/prefixo do tenant e persiste metadados/status no Azure SQL do tenant. A Library define os contratos e servicos comuns. O Vue consome estado ja processado pela WebApi. O IDP fornece identidade para Scan, WebApi e Vue usando seu Azure SQL exclusivo.