After Framework

Límites enterprise

EnterpriseScope, RBAC, auditoría, interoperabilidad segura y modo de arranque.

Versión de la documentación: supercore main · paquetes 1.0.0

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.

dart
/// 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;
  }
}

Fuente supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (se abre en una pestaña nueva)

ADR-002 (se abre en una pestaña nueva)

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.

  1. Comprobación de audiencia de After ID
  2. Scopes, RBAC y pertenencia a la organización cuando hay una organización
  3. Entrada de auditoría obligatoria
  4. Minimización de datos opcional según el esquema del endpoint

ADR-006 (se abre en una pestaña nueva)

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.

dart
/// 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,
}

Fuente supercore/packages/after_core/lib/src/bootstrap/after_bootstrap_mode.dart (se abre en una pestaña nueva)

ADR-007 (se abre en una pestaña nueva)

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
dart
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.