Límites enterprise
EnterpriseScope, RBAC, auditoría, interoperabilidad segura y modo de arranque.
EnterpriseScopeEnlace a esta sección: EnterpriseScope
Los puertos enterprise con ámbito de organización exigen un EnterpriseScope. Si falta organizationId se lanza una excepción; nunca devuelven todos los 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;
}
}RBAC y auditoríaEnlace a esta sección: RBAC y auditoría
Las funcionalidades verticales comprueban PermissionSet.allows(...) antes de cualquier llamada que modifique datos. Los productos declaran sus propias cadenas de permisos.
Cada acción enterprise que modifique datos debe añadir un AuditLogEntry al AuditLogRepository de solo adición.
Interoperabilidad seguraEnlace a esta sección: Interoperabilidad segura
Las llamadas entre productos pasan por AfterSecureInteropBridge: audiencia de After ID, scopes, RBAC y pertenencia a la organización, y luego una entrada de auditoría obligatoria.
- Comprobación de audiencia de After ID
- Scopes, RBAC y pertenencia a la organización cuando hay una organización
- Entrada de auditoría obligatoria
- Minimización de datos opcional según el esquema del endpoint
Modo de arranqueEnlace a esta sección: Modo de arranque
En modo producción, un adaptador ausente lanza una excepción al arrancar, así los providers mock no pueden llegar a producción sin avisar.
/// 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,
}Puertos enterpriseEnlace a esta sección: Puertos enterprise
Los backends reales sustituyen a MockEnterpriseRepository en la raíz de composición. La capa de SO nunca conoce el nombre del proveedor.
- 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(),
),
];
}Fuente supercore/templates/super_app_enterprise/after_framework.dart (se abre en una pestaña nueva)
Estos son controles de arquitectura documentados en el repositorio supercore. After Framework no afirma tener certificaciones ni cumplimiento normativo.