Limites enterprise
EnterpriseScope, RBAC, auditoria, interoperabilidade segura e modo de bootstrap.
EnterpriseScopeLink para esta seção: EnterpriseScope
Ports enterprise com escopo de organização exigem um EnterpriseScope. Um organizationId ausente lança uma exceção — eles nunca retornam todos os tenants.
/// Fail-closed tenant + actor context for enterprise ports (ADR-002).
class EnterpriseScope {
final String organizationId;
final String actorId;
final PermissionSet permissions;
/// Throws if [organizationId] is missing/blank — never allow all-tenant lists.
static String requireOrganizationId(String? organizationId) {
final id = organizationId?.trim() ?? '';
if (id.isEmpty) {
throw StateError(
'EnterpriseScope: organizationId is required (fail-closed tenancy).',
);
}
return id;
}
}Fonte supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (abre em uma nova aba)
RBAC e auditoriaLink para esta seção: RBAC e auditoria
Features verticais verificam PermissionSet.allows(...) antes de qualquer chamada de mutação. Os produtos declaram suas próprias strings de permissão.
Toda ação enterprise de mutação deve acrescentar um AuditLogEntry ao AuditLogRepository, que é só de acréscimo.
Interoperabilidade seguraLink para esta seção: Interoperabilidade segura
Chamadas entre produtos passam pelo AfterSecureInteropBridge: audiência do After ID, escopos, RBAC e vínculo com a organização, depois uma entrada de auditoria obrigatória.
- Verificação de audiência do After ID
- Escopos, RBAC e vínculo com a organização, quando houver uma organização
- Entrada de auditoria obrigatória
- Minimização de dados opcional pelo schema do endpoint
Modo de bootstrapLink para esta seção: Modo de bootstrap
No modo produção, um adaptador ausente lança uma exceção na inicialização, para que providers mock não cheguem silenciosamente à produção.
/// Composition safety mode (ADR-007).
///
/// - [scaffold]: in-memory / mock adapters are allowed (templates, tests).
/// - [production]: missing real adapters must throw at startup.
enum AfterBootstrapMode {
scaffold,
production,
}Fonte supercore/packages/after_core/lib/src/bootstrap/after_bootstrap_mode.dart (abre em uma nova aba)
Ports enterpriseLink para esta seção: Ports enterprise
Backends reais substituem o MockEnterpriseRepository na raiz de composição. A camada de SO nunca conhece o nome do fornecedor.
- EnterpriseScope
- OrganizationRepository
- RbacRepository
- PermissionSet
- WorkflowEngine
- TaskRepository
- CalendarRepository
- DocumentRepository
- EnterpriseAiAssistant
- AuditLogRepository
- OfflineSyncQueue
- EnterpriseApiClient
- MockEnterpriseRepository
- EnterpriseProductRuntime
static Future<List<Override>> ensureConfigured({
EnterpriseRepository? enterpriseRepository,
}) async {
PlatformConfig.current = superAppEnterpriseManifest;
final prefs = await SharedPreferences.getInstance();
return [
...AfterStandardOverrides.create(
preferences: prefs,
userAgent: '${superAppEnterpriseManifest.appName}/'
'${superAppEnterpriseManifest.appId}',
),
enterpriseRepositoryProvider.overrideWithValue(
enterpriseRepository ?? MockEnterpriseRepository(),
),
];
}Fonte supercore/templates/super_app_enterprise/after_framework.dart (abre em uma nova aba)
Estes são controles de arquitetura documentados no repositório supercore. O After Framework não alega certificação nem conformidade regulatória.