ابنِ منتجاتك على إطار تشغيل مشترك.
ابنِ مرة واحدة. وانشر عبر كل المجالات.
يمنح After Framework المنتجات أساسًا مشتركًا: البنية، والهوية، والذكاء الاصطناعي، وأنظمة التصميم، والأدوات، ووحدات نطاق قابلة لإعادة الاستخدام.
01 · بنية الإطار
نواة واحدة. خطّا منتجات. ومنتجات خفيفة في القمة.
تتشارك جميع المنتجات الطبقات نفسها. إضافة مجال حياة أو مجال صناعة تعني إضافة وحدة في القمة — ولا تتغير الطبقات التي تحتها.
خاص بالمنتج
المنصة المشتركة
محوّلات جذر التركيب
اختر طبقة لترى ما تملكه وما تعتمد عليه.
after_core
النواة المشتركة
المصادقة، والشبكات المحصّنة، والتخزين، وحقن الاعتماديات عبر Riverpod، وأعلام الميزات، والإعداد عن بُعد، وحزمة SDK للذكاء الاصطناعي بنمط BYOK، واستحقاقات الاشتراك المميّز، والإشعارات، والروابط العميقة، ومحركات لوحة المعلومات والإضافات والبحث والإعدادات.
- تعتمد على
- لا شيء — الطبقة الأساسية
- تستخدمها
- طبقة نطاق المنتج · طبقة المنظومة · قدرات الذكاء الاصطناعي · وحدات المستهلكين · وحدات المؤسسات · نظام التصميم · محوّلات Firebase
إعادة استخدام مشتركة، وتجربة خاصة بكل منتج
تستهدف عقيدة المنصة أن يرث كل منتج تسعين بالمئة أو أكثر من قدراته وقت التشغيل. يملك المنتج نطاقه، وميزاته الرأسية، وملف الذكاء الاصطناعي الخاص به، وكتالوجاته، وهويته التجارية — ولا شيء غير ذلك.
قواعد تحفظ تماسك النظام
- 01المنافذ قبل حزم SDK: تعتمد الشيفرة الرأسية على واجهات After، ولا تعتمد أبدًا على حزم SDK الخاصة بالمورّدين.
- 02لا توجد الوحدات الرأسية إلا في مستودعات المنتجات ضمن lib/features/.
- 03يأتي كل منفذ مع تنفيذ وهمي، لذا تعمل الهياكل الأولية دون خادم خلفي.
- 04التوليد بدل البدء من الصفر: تبدأ المنتجات الجديدة من مواصفة، لا من بنية جديدة.
02 · مصنع المنتجات
من الفكرة إلى منتج يعمل على أساس قابل لإعادة الاستخدام.
يحوّل مصنع المنتجات ملف product.spec.yaml صغيرًا إلى تطبيق Flutter شقيق يعتمد على الحزم المشتركة. ولا تحتوي المواصفة إلا على ما يتفرّد به المنتج.
- 01
الفكرة
سمِّ المنتج واختر خطًّا: للمستهلكين أو للمؤسسات، مع SuperGarage أو SuperHospital مرجعًا.
- 02
النطاق
اكتب product.spec.yaml: النطاق، والميزات الرأسية، وعلامات التبويب، والأذونات، وأدوات لوحة المعلومات، ومهارات الذكاء الاصطناعي، والهوية التجارية، واللغات.
- 03
الوحدات
كل ما ليس في المواصفة — المصادقة، والعضوية أو المؤسسة، وRBAC، والتقويم، والمهام، والإشعارات، والبحث — يُورَث.
- 04
غلاف المنتج
يُنتج generate_product.ps1 البيان، وجذر التركيب، وكتالوج الميزات، والغلاف، وملفات الترجمة، وسير عمل CI.
- 05
النشر
يشغّل سير عمل CI المولَّد التنسيق والتحليل والاختبارات مع قياس التغطية عند كل عملية push وكل طلب سحب إلى الفرع main.
يملك المنتج
- الاسم، والحزمة، ومعرّف bundle، وخط المنتجات
- الميزات الرأسية ومفاتيح الترجمة
- علامات تبويب التنقل
- سلاسل أذونات RBAC
- أدوات لوحة المعلومات
- مهارات الذكاء الاصطناعي وربط الأدوات
- اللون المميّز والشعار الحرفي
توفّر المنصة
- المصادقة وصلاحيات المشرف العام
- العضوية أو المؤسسة
- محرك RBAC وسجل التدقيق
- التقويم، والمهام، والمستندات
- الإشعارات والتحليلات
- محركات سير العمل ولوحة المعلومات والبحث
- نظام التصميم، وشاشة البداية، وCI
إعادة تشغيل المولّد بمواصفة مطوَّرة تحدّث ملفات الهيكل دون إتلاف شيفرة الميزات التي كتبها المطوّرون.
03 · الحزم والقدرات
سبع حزم. واعتماديات صريحة.
جميع الحزم بالإصدار 1.0.0 في مستودع supercore، وتُستهلك عبر اعتماديات المسار. اختر حزمة لتتبّع ما تعتمد عليه وما يعتمد عليها.
النواة المشتركة
after_core
منافذ وتنفيذات افتراضية للمصادقة، والشبكات، والتخزين، وحقن الاعتماديات، والتحليلات، وأعلام الميزات، والإعداد عن بُعد، والذكاء الاصطناعي، والإشعارات، والروابط العميقة، واستحقاقات الاشتراك المميّز. وتتجاوز المنتجات مزوّدات Riverpod بمحوّلاتها الخاصة.
- تعتمد على
- لا شيء — الطبقة الأساسية
- تستخدمها
واجهات API الرئيسية
- AppPlatformManifest
- PlatformConfig
- AfterStandardOverrides
- AfterBootstrapMode
- AfterAuthRepository
- AfterApiClient
- AfterHttpClientFactory
- AfterFeatureFlags
- AfterRemoteConfig
- AfterAiCredentialVault
اعتماديات خارجية بارزة
flutter_riverpod · dio · flutter_secure_storage · shared_preferences · google_sign_in · app_links · flutter_local_notifications
مثال
import 'package:after_core/after_core.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
final prefs = await SharedPreferences.getInstance();
runApp(
ProviderScope(
overrides: [
afterSharedPreferencesProvider.overrideWithValue(prefs),
afterAuthRepositoryProvider.overrideWithValue(MyFirebaseAuthRepository()),
afterAnalyticsProvider.overrideWithValue(MyFirebaseAnalytics()),
// ... store-specific adapters
],
child: const MySuperApp(),
),
);
}المصدر supercore/packages/after_core/README.md (يُفتح في علامة تبويب جديدة)
نسيج المنظومة
after_ecosystem
After ID وAfter+ وناقل الأحداث وواجهات API بين المنتجات والخدمات المشتركة وسياق الذكاء الاصطناعي على مستوى المنظومة، لتعمل وحدات المستهلكين والمؤسسات كنظام واحد.
- تعتمد على
- تستخدمها
واجهات API الرئيسية
- AfterEventBus
- AfterProductApi
- AfterProductApiRegistry
- AfterSecureInteropBridge
- AfterEcosystemAiContext
- afterEcosystemProvider
اعتماديات خارجية بارزة
flutter_riverpod · uuid
مثال
{
"id": "evt_…",
"type": "garage.maintenance.completed",
"sourceProductId": "super_garage",
"afterId": "aid_…",
"organizationId": null,
"occurredAt": "2026-07-19T20:00:00Z",
"correlationId": "corr_…",
"payload": { }
}المصدر supercore/docs/AFTER_ECOSYSTEM_PLATFORM.md (يُفتح في علامة تبويب جديدة)
منصة قدرات الذكاء الاصطناعي
after_ai
طبقة ذكاء اصطناعي معيارية: تختار المنتجات ملف AfterAiProfile يفعّل القدرات. واستدعاء قدرة معطّلة يطلق استثناءً. وتأتي كل قدرة مع محوّل وهمي.
- تعتمد على
- تستخدمها
- لا تعتمد عليها أي حزمة
واجهات API الرئيسية
- AfterAiPlatform
- AfterAiProfile
- AfterAiCapability
- AfterAiCapabilityDisabledException
- afterAiProfileProvider
- afterAiPlatformProvider
- AfterToolCallingAi
- AfterAiPluginRegistry
اعتماديات خارجية بارزة
flutter_riverpod · uuid
مثال
// after_framework.dart
afterAiProfileProvider.overrideWithValue(AfterAiProfile.superGarage),
// feature code
final ai = ref.watch(afterAiPlatformProvider);
if (ai.canChat) {
final reply = await ai.chat(message: input);
}المصدر supercore/packages/after_ai/README.md (يُفتح في علامة تبويب جديدة)
نظام التصميم
after_design_system
اللغة البصرية المشتركة: رموز اللون والتباعد ونصف القطر والحركة والطباعة، وبيانات سمة Material 3، ومكوّنات مشتركة، متطابقة عبر خطوط المنتجات.
- تعتمد على
- تستخدمها
واجهات API الرئيسية
- AfterThemeData
- AfterTheme
- AfterColors
- AfterSpacing
- AfterRadius
- AfterMotion
- AfterFadeSlide
اعتماديات خارجية بارزة
shared_preferences
مثال
abstract final class AfterThemeData {
static ThemeData light({
AfterTypography typography = AfterTypography.garage,
Color? accentOverride,
}) { … }
static ThemeData dark({
AfterTypography typography = AfterTypography.garage,
Color? accentOverride,
}) { … }
}
// Product: same family, own accent (spec branding.accent).
MaterialApp(
theme: AfterThemeData.light(accentOverride: const Color(0xFF22D3EE)),
darkTheme: AfterThemeData.dark(accentOverride: const Color(0xFF22D3EE)),
);المصدر supercore/packages/after_design_system/lib/src/foundations/theme.dart (يُفتح في علامة تبويب جديدة)
وحدات المستهلكين
after_consumer
طبقة B2C خفيفة عمدًا فوق النواة: العضوية، وكتالوج ميزات المستهلك، والخزنة الشخصية، وموافقة الإطلاق، والموقع الإقليمي، وعناصر الغلاف الموحّد للعائلة.
- تعتمد على
- تستخدمها
- لا تعتمد عليها أي حزمة
واجهات API الرئيسية
- ConsumerMembership
- ConsumerCoreFeatureId
- ConsumerVerticalFeature
- PersonalVaultRepository
- consumerMembershipProvider
- personalVaultRepositoryProvider
اعتماديات خارجية بارزة
flutter_riverpod · geolocator · geocoding · image_picker · permission_handler
مثال
dependencies:
after_core:
path: ../supercore/packages/after_core
after_consumer:
path: ../supercore/packages/after_consumer
after_design_system:
path: ../supercore/packages/after_design_systemوحدات المؤسسات
after_enterprise
أربعة عشر منفذًا مشتركًا لقطاع الأعمال B2B مع تنفيذات وهمية حتمية في الذاكرة، وعزل للمستأجرين يُغلق عند الفشل عبر EnterpriseScope، وبيئة تشغيل للمنتج ومضيف للغلاف.
- تعتمد على
- تستخدمها
- لا تعتمد عليها أي حزمة
واجهات API الرئيسية
- EnterpriseScope
- OrganizationRepository
- RbacRepository
- PermissionSet
- WorkflowEngine
- TaskRepository
- CalendarRepository
- DocumentRepository
- EnterpriseAiAssistant
- AuditLogRepository
اعتماديات خارجية بارزة
flutter_riverpod · collection · uuid
مثال
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(),
),
];
}المصدر supercore/templates/super_app_enterprise/after_framework.dart (يُفتح في علامة تبويب جديدة)
محوّلات Firebase
after_firebase
محوّلات Firebase Auth وكتل Firestore ووسائط Storage لجذر التركيب. إذا لم يُهيَّأ Firebase أو فشل في البدء، يعود إلى المحوّلات المحلية بدل أن يتعطّل التطبيق.
- تعتمد على
- تستخدمها
واجهات API الرئيسية
- AfterFirebaseBootstrap
- FirebaseAfterAuthRepository
- FirestoreAfterUserBlobSync
- FirebaseAfterUserMediaSync
- AfterFirebaseCloudAvailability
اعتماديات خارجية بارزة
firebase_core · firebase_auth · cloud_firestore · firebase_storage · google_sign_in
مثال
// Cold start, before ProviderScope. Returns false (no crash) when
// options are null or init fails — auth falls back to prefs adapters.
await AfterFirebaseBootstrap.ensureInitialized(options: firebaseOptions);
final overrides = [
...AfterStandardOverrides.create(
preferences: prefs,
userAgent: userAgent,
includeUserBlobSync: false, // Firebase provides blob sync below
),
...AfterFirebaseBootstrap.overrides(
preferences: prefs,
appId: 'super_garage',
),
];المصدر supercore/packages/after_firebase/lib/src/after_firebase_bootstrap.dart (يُفتح في علامة تبويب جديدة)
04 · CLI وسير عمل المطوّر
سكربتات وأوامر Flutter، لا سحر.
توجد الأدوات في supercore/scripts على هيئة سكربتات PowerShell، إلى جانب سلسلة أدوات Flutter القياسية. ولا يوجد ملف CLI تنفيذي مُحزَّم بشكل مستقل.
التهيئة
تحقّق من صحة المواصفة دون Flutter، ثم ولِّد التطبيق الشقيق وجهّزه للتشغيل.
powershell -File scripts\validate_product_spec.ps1 -SpecPath factory\specs\examples\super_airport.product.spec.yamlالمصدر supercore/factory/README.md (يُفتح في علامة تبويب جديدة)
# From a spec
powershell -File scripts\generate_product.ps1 -SpecPath factory\specs\examples\super_airport.product.spec.yaml
# From a name only (quick starter)
powershell -File scripts\generate_product.ps1 -Name SuperAirport -Reference SuperHospital
# Preview without writing files
powershell -File scripts\generate_product.ps1 -SpecPath factory\specs\examples\super_airport.product.spec.yaml -DryRunالمصدر supercore/factory/README.md (يُفتح في علامة تبويب جديدة)
cd ..\superairport
flutter create .
flutter pub get
flutter analyze
flutter testتركيب الحزم
اعتمد على النواة، وطبقة خط منتجات واحدة، ونظام التصميم عبر اعتماديات المسار.
dependencies:
after_core:
path: ../supercore/packages/after_core
after_consumer:
path: ../supercore/packages/after_consumer
after_design_system:
path: ../supercore/packages/after_design_systemdependencies:
after_core:
path: ../supercore/packages/after_core
after_enterprise:
path: ../supercore/packages/after_enterprise
after_design_system:
path: ../supercore/packages/after_design_systemالإعداد
صرّح بالهوية في AppPlatformManifest. يسمح وضع الهيكل الأولي بالتنفيذات الوهمية؛ ويفشل وضع الإنتاج عند بدء التشغيل إذا غاب أحد المحوّلات.
const superHospitalManifest = AppPlatformManifest(
appName: 'SuperHospital',
appId: 'super_hospital',
packageName: 'com.overstein.superhospital',
androidWidgetProvider: 'com.overstein.superhospital.WidgetProvider',
iosAppGroupId: 'group.com.overstein.superhospital',
productLine: AfterProductLine.enterprise,
);المصدر supercore/docs/AFTER_OS_ARCHITECTURE.md (يُفتح في علامة تبويب جديدة)
/// 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,
}الاختبار
نسّق الشيفرة وحلّلها واختبرها مع قياس التغطية، ثم افحص المنتج مقابل عقد إعادة الاستخدام في المنصة.
dart format --output=none --set-exit-if-changed .
flutter analyze
flutter test --coverage
# Platform doctrine check against a generated product
powershell -File scripts\check_reuse_contract.ps1 -AppRoot ..\superairportالمصدر supercore/scripts/generate_product.ps1 · docs/PLATFORM_DOCTRINE.md (يُفتح في علامة تبويب جديدة)
النشر
تأتي المنتجات المولَّدة مع سير عمل GitHub Actions للتحليل والاختبار. ويتولى سكربت من supercore ربط توقيع إصدارات Android.
name: analyze-and-test
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
analyze-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Checkout supercore (sibling)
uses: actions/checkout@v5
with:
repository: oversteintech/supercore
path: ../supercore
- uses: subosito/flutter-action@v2
with:
channel: stable
- run: dart format --output=none --set-exit-if-changed .
- run: flutter pub get
- run: flutter analyze
- run: flutter test --coverageالمصدر supercore/scripts/generate_product.ps1 (.github/workflows/ci.yml) (يُفتح في علامة تبويب جديدة)
# Wires Play release signing for sibling apps; -BuildAab also builds bundles.
# key.properties / *.jks stay local and gitignored.
powershell -File scripts\wire_play_release_signing.ps1 -BuildAabالمصدر supercore/scripts/wire_play_release_signing.ps1 (يُفتح في علامة تبويب جديدة)
05 · من الإطار إلى منتجات حقيقية
تتحوّل القدرات المشتركة إلى تجارب خاصة بكل منتج.
SuperGarage هو المرجع الاستهلاكي المطروح فعليًا. كل شاشة أدناه لقطة حقيقية من المتجر؛ وتوضّح الطبقة المتراكبة الأجزاء القادمة من المنصة وتلك التي يملكها المنتج.




خريطة قدرات SuperGarage
المعرّفات التي يستوردها supergarage/lib، مجمّعة حسب الحزمة المالكة.
after_core
- AfterUserPlan
- AfterAiCredentialVault
- AfterLocalNotifications
after_consumer
- FamilyShellHeader
- AfterRegionalLocation
after_firebase
- AfterFirebaseBootstrap
ميزات المنتج
- features/vehicle
- features/maintenance
- features/obd
- features/expenses
- features/fleet
- features/trips
- features/assistant
- features/community
عائلة المنتجات
الحالة كما هي مسجّلة في supercore/catalog/products.yaml. وحده SuperGarage مُعلَّم بأنه مطروح.

SuperGarage
المستهلكون · المرجع
التنقّل: المركبات، والصيانة، والتأمين، والوقود، وOBD، والأساطيل
after_core · after_design_system · after_firebase · after_consumer

AfterHub
المستهلكون · غلاف النظام
غلاف نظام المستهلك: الهوية، ولوحة المعلومات، والذكاء الاصطناعي، والتقويم، والبحث، وAfter+
هيكل أوليafter_ai · after_consumer · after_core · after_firebase · after_design_system · after_ecosystem

SuperHospital
المؤسسات · المرجع
عمليات المستشفيات — المرجع المؤسسي
هيكل أولي
SuperHealth
المستهلكون
الصحة الشخصية: الأدوية، والسجلات، والنوم، والتغذية

SuperFinance
المستهلكون
المالية الشخصية: الاشتراكات، والميزانيات، والاستثمارات
هيكل أولي
SuperHome
المستهلكون
العقار والمنزل: الصيانة، والمرافق، والضمانات
هيكل أولي
SuperTravel
المستهلكون
السفر: الرحلات، والرحلات الجوية، والفنادق، وخطط السفر
هيكل أولي
SuperPet
المستهلكون
الحيوانات الأليفة: الرعاية البيطرية، والطعام، والسجلات الصحية
هيكل أولي
SuperNews
المستهلكون
أخبار مخصّصة بالذكاء الاصطناعي مع ملخّصات

SuperSports
المستهلكون
الرياضة والأداء: اللياقة، والنتائج، ومواعيد المباريات

SuperAirport
المؤسسات
عمليات المطارات: الرحلات، والبوابات، والمدارج
هيكل أولي
SuperMaritime
المؤسسات
عمليات الموانئ والسفن
هيكل أولي
SuperFactory
المؤسسات
نظام تنفيذ التصنيع MES وصيانة أرض المصنع
هيكل أولي
SuperFarm
المؤسسات
عمليات المزارع: المحاصيل، والماشية، والمعدات
هيكل أولي
06 · نظام التصميم
اتساق دون تطابق.
يمنح after_design_system كل منتج الإطار نفسه والكثافة نفسها والحركة نفسها. تغيّر المنتجات لونها المميّز وشعارها الحرفي وميزاتها ونصوصها — لا النظام.
الرموز
اللون والتباعد ونصف القطر والحركة ثوابت Dart، يتشاركها خطّا المستهلكين والمؤسسات.
اللون
- accent#38BDF8
- accentDeep#0284C7
- graphite950#0B0C0F
- graphite800#222831
- steel#8A919D
- lightBackground#FAFBFC
- success#22C55E
- warning#F59E0B
- danger#EF4444
التباعد · مقياس 4pt
- xs4
- sm8
- md12
- lg16
- xxl24
- xxxl32
- massive48
- hero64
نصف القطر
- 6
- 8
- 12
- 16
- 20
الحركة
- instant100ms
- fast · micro180ms
- normal · page280ms
- slow · modal420ms
- emphasis560ms
المكوّنات
الأزرار، والبطاقات، وحقول الإدخال، والتنقل، ومربعات الحوار، والمخططات، ولوحة المعلومات، وحالات الفراغ والتحميل، وأقسام الإعدادات، والشريط العلوي للغلاف.
- buttons.dart
- cards.dart
- inputs.dart
- navigation_bar.dart
- dialogs.dart
- charts.dart
- dashboard.dart
- empty_states.dart
- loading.dart
- settings_section.dart
- shell_top_bar.dart
إمكانية الوصول
تأتي أنظمة الألوان الفاتحة والداكنة معًا. وتُرتَّب سلاسل المخططات لتبقى قابلة للتمييز، وتُبقي رموز الحركة الانتقالات قصيرة وهادفة.
السلوك المتجاوب
تتكيّف حشوة الصفحة وعرض المحتوى مع عرض إطار العرض عبر AfterSpacing.
| عرض إطار العرض | أقصى عرض للمحتوى | حشوة الصفحة |
|---|---|---|
| < 360 | width | 14 / 10 / 14 / 28 |
| 360 – 419 | 520 | 16 / 12 / 16 / 28 |
| 420 – 719 | 640 | 20 / 12 / 20 / 28 |
| ≥ 720 | 760 | 20 / 12 / 20 / 28 |
امتداد الهوية التجارية
تصرّح مواصفة كل منتج بلون مميّز وشعار حرفي. وتستقبل السمة اللون المميّز عبر accentOverride؛ ويبقى كل ما عدا ذلك ضمن العائلة.
- SuperGarage#22D3EE
- SuperKids#F472B6
- SuperHospital#F43F5E
- SuperFactory#F59E0B
07 · التوثيق
توثيق مصمَّم للتصفّح السريع.
كل صفحة مستمدة من مستودع supercore وترتبط بملفها المصدري.
- بحث فوري باختصار من لوحة المفاتيح
- جدول محتويات ثابت مع روابط عميقة
- أزرار نسخ وتلوين للصياغة في كلتا السمتين
- صفحات للحزم مع مخططات الاعتماديات
- مخططات للبنية مع بدائل ثابتة
- متاح بعشر لغات، مع دعم الكتابة من اليمين إلى اليسار
08 · حدود المؤسسات
حدود تُغلَق عند الفشل.
يُفرض العزل المؤسسي في الشيفرة ويُوثَّق في سجلات قرارات البنية.
عزل مستأجرين يُغلق عند الفشل
تتطلب المنافذ المؤسسية المقيّدة بالمؤسسة EnterpriseScope. وغياب organizationId يطلق استثناءً — فلا تُعاد أبدًا بيانات جميع المستأجرين.
الأذونات قبل الحفظ
تتحقق الميزات الرأسية من PermissionSet.allows(...) قبل أي استدعاء يعدّل البيانات. وتصرّح المنتجات بسلاسل الأذونات الخاصة بها.
تدقيق بالإلحاق فقط
يجب أن يُلحِق كل إجراء مؤسسي معدِّل سجلًا من نوع AuditLogEntry بمستودع AuditLogRepository القائم على الإلحاق فقط.
تشغيل بيني آمن فقط
تمرّ الاستدعاءات بين المنتجات عبر AfterSecureInteropBridge: جمهور After ID، والنطاقات، وRBAC، وعضوية المؤسسة، ثم إدخال تدقيق إلزامي.
إقلاع يفشل سريعًا
في وضع الإنتاج، يطلق غياب أي محوّل استثناءً عند بدء التشغيل، فلا يمكن للمزوّدات الوهمية أن تصل إلى الإنتاج بصمت.
معياري بطبيعة تصميمه
تحلّ الخوادم الخلفية الحقيقية محل MockEnterpriseRepository في جذر التركيب. ولا تعرف طبقة النظام اسم المورّد أبدًا.
/// 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;
}
}المصدر supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (يُفتح في علامة تبويب جديدة)
هذه ضوابط معمارية موثّقة في مستودع supercore. ولا يدّعي After Framework الحصول على أي شهادة أو تحقيق أي امتثال تنظيمي.
حدود المؤسساتاجعل المنتج أصغر. واجعل الأساس أقوى.
ابدأ بالبنية، أو اقرأ توثيق الحزم، أو استكشف الشيفرة المصدرية.