🗄️ نموذج قاعدة البيانات المتكاملة لمنصة SaaS

📊 5 مشاهدة

🗄️ نموذج قاعدة البيانات المتكاملة لمنصة SaaS

يحتوي هذا النموذج على 22 جدولاً رئيسياً، موزعة على سبع مجموعات وظيفية، مع تحديد المفاتيح الأساسية والأجنبية، وأنواع العلاقات (1:N, M:N).


1. 📂 جدول المستخدمين والمصادقة (Users & Auth)

1.1 users

سجل لجميع المستخدمين على المنصة.

العمودالنوعالقيدالوصف
user_idUUIDPRIMARY KEYالمعرف الفريد للمستخدم
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر (العميل) الذي ينتمي إليه المستخدم
emailVARCHAR(255)UNIQUE, NOT NULLالبريد الإلكتروني للمستخدم (يستخدم لتسجيل الدخول)
password_hashVARCHAR(255)NOT NULLكلمة المرور مشفرة (bcrypt/Argon2)
full_nameVARCHAR(255)NOT NULLالاسم الكامل للمستخدم
phone_numberVARCHAR(20)–رقم الهاتف
avatar_urlTEXT–رابط الصورة الشخصية
statusVARCHAR(20)NOT NULL, DEFAULT 'active'حالة الحساب (active, suspended, pending_verification)
last_login_atTIMESTAMP–تاريخ ووقت آخر دخول
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ إنشاء الحساب
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث
deleted_atTIMESTAMP–تاريخ الحذف الناعم (soft delete)

العلاقات:

  • users (N) — (1) tenants

1.2 user_roles

جدول وسيط لتعيين الأدوار للمستخدمين (علاقة N:M).

العمودالنوعالقيدالوصف
user_role_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)معرف المستخدم
role_idUUIDFOREIGN KEY (role_id)معرف الدور (من جدول roles)
assigned_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ التعيين
assigned_byUUIDFOREIGN KEY (assigned_by)معرف المستخدم الذي قام بالتعيين

العلاقات:

  • user_roles (N) — (1) users
  • user_roles (N) — (1) roles

1.3 user_sessions

تخزين جلسات المستخدمين النشطة (لإدارة الجلسات و logouts).

العمودالنوعالقيدالوصف
session_idUUIDPRIMARY KEYالمعرف الفريد للجلسة
user_idUUIDFOREIGN KEY (user_id)صاحب الجلسة
jwt_tokenTEXTNOT NULLرمز JWT الصادر
ip_addressINET–عنوان IP للمستخدم
user_agentTEXT–متصفح/جهاز المستخدم
expires_atTIMESTAMPNOT NULLوقت انتهاء صلاحية الجلسة
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ البدء

العلاقات:

  • user_sessions (N) — (1) users

1.4 api_keys

تخزين مفاتيح API للمطورين والأتمتة.

العمودالنوعالقيدالوصف
api_key_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المالك
key_hashVARCHAR(255)UNIQUE, NOT NULLالمفتاح مشفر (لا يُخزن كنص عادي)
nameVARCHAR(100)NOT NULLاسم المفتاح (مثل “مفتاح التكامل مع X”)
permissionsJSONB–صلاحيات محددة للمفتاح (أو NULL للإرث من المستخدم)
last_used_atTIMESTAMP–تاريخ آخر استخدام
expires_atTIMESTAMP–تاريخ انتهاء صلاحية المفتاح
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • api_keys (N) — (1) users

1.5 roles

تعريف الأدوار (RBAC).

العمودالنوعالقيدالوصف
role_idUUIDPRIMARY KEYالمعرف الفريد للدور
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر الذي يملك الدور (أو NULL للأدوار العالمية)
nameVARCHAR(100)NOT NULLاسم الدور (مثل “مدير”، “مستخدم”)
descriptionTEXT–وصف للدور

العلاقات:

  • roles (N) — (1) tenants
  • roles (1) — (N) user_roles

1.6 permissions

قائمة الصلاحيات المتاحة.

العمودالنوعالقيدالوصف
permission_idUUIDPRIMARY KEYالمعرف الفريد
nameVARCHAR(100)UNIQUE, NOT NULLاسم الصلاحية (مثل “read_users”, “delete_tenants”)
resourceVARCHAR(100)NOT NULLالمورد المرتبط (مثل “users”, “tenants”)
actionVARCHAR(50)NOT NULLالعملية (مثل “create”, “read”, “update”, “delete”)
descriptionTEXT–وصف للصلاحية

العلاقات:

  • permissions (N) — (M) roles (من خلال جدول role_permissions)

1.7 role_permissions

جدول وسيط يربط الأدوار بالصلاحيات (M:N).

العمودالنوعالقيدالوصف
role_permission_idUUIDPRIMARY KEYالمعرف الفريد
role_idUUIDFOREIGN KEY (role_id)معرف الدور
permission_idUUIDFOREIGN KEY (permission_id)معرف الصلاحية

العلاقات:

  • role_permissions (N) — (1) roles
  • role_permissions (N) — (1) permissions

2. 👥 جدول المستأجرين والشركات (Tenants & Companies)

2.1 tenants

سجل للمؤسسات/العملاء المشتركين في المنصة.

العمودالنوعالقيدالوصف
tenant_idUUIDPRIMARY KEYالمعرف الفريد للمستأجر
nameVARCHAR(255)NOT NULLاسم المؤسسة
subdomainVARCHAR(100)UNIQUE, NOT NULLالنطاق الفرعي (مثل company.platform.com)
legal_business_nameVARCHAR(255)–الاسم القانوني للشركة
tax_numberVARCHAR(100)–الرقم الضريبي/السجل التجاري
industryVARCHAR(100)–مجال النشاط (مثل “تكنولوجيا”، “تجارة”)
statusVARCHAR(20)NOT NULL, DEFAULT 'active'حالة المستأجر (active, suspended, trial)
settingsJSONB–الإعدادات الخاصة بالمستأجر (لغة، علامة تجارية، الخ)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث
deleted_atTIMESTAMP–تاريخ الحذف الناعم

3. 💳 جدول الاشتراكات والمدفوعات (Subscriptions & Payments)

3.1 plans

تعريف خطط الاشتراك.

العمودالنوعالقيدالوصف
plan_idUUIDPRIMARY KEYالمعرف الفريد للخطة
nameVARCHAR(100)NOT NULLاسم الخطة (مثل “الخطة الأساسية”)
descriptionTEXT–وصف الخطة
stripe_price_idVARCHAR(100)UNIQUE, NOT NULLمعرف السعر في Stripe (لمزامنة الدفع)
amountDECIMAL(10,2)NOT NULLالسعر بالعملة الأساسية
currencyCHAR(3)NOT NULL, DEFAULT 'USD'العملة (USD, EUR, الخ)
billing_intervalVARCHAR(20)NOT NULLدورة الفوترة (monthly, yearly)
featuresJSONB–قائمة الميزات المضمنة في الخطة
is_activeBOOLEANNOT NULL, DEFAULT trueهل الخطة متاحة للاشتراك؟

3.2 subscriptions

سجل اشتراكات المستأجرين النشطة والسابقة.

العمودالنوعالقيدالوصف
subscription_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المشترك
plan_idUUIDFOREIGN KEY (plan_id)الخطة المشترك بها
stripe_subscription_idVARCHAR(100)UNIQUEمعرف الاشتراك في Stripe
statusVARCHAR(20)NOT NULLحالة الاشتراك (active, past_due, canceled, unpaid)
start_dateTIMESTAMPNOT NULLتاريخ بدء الاشتراك
end_dateTIMESTAMP–تاريخ انتهاء الاشتراك (للاشتراكات المؤقتة)
cancel_at_period_endBOOLEANNOT NULL, DEFAULT falseهل سيتم الإلغاء في نهاية الفترة؟
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • subscriptions (N) — (1) tenants
  • subscriptions (N) — (1) plans

3.3 invoices

سجل الفواتير الصادرة.

العمودالنوعالقيدالوصف
invoice_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المُفوتر
subscription_idUUIDFOREIGN KEY (subscription_id)الاشتراك المرتبط بالفاتورة
stripe_invoice_idVARCHAR(100)UNIQUEمعرف الفاتورة في Stripe
amountDECIMAL(10,2)NOT NULLالمبلغ الإجمالي
currencyCHAR(3)NOT NULL, DEFAULT 'USD'العملة
statusVARCHAR(20)NOT NULLحالة الفاتورة (paid, open, void, uncollectible)
invoice_pdf_urlTEXT–رابط ملف PDF للفاتورة
due_dateTIMESTAMPNOT NULLتاريخ الاستحقاق
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • invoices (N) — (1) tenants
  • invoices (N) — (1) subscriptions

3.4 payments

سجل عمليات الدفع الفردية.

العمودالنوعالقيدالوصف
payment_idUUIDPRIMARY KEYالمعرف الفريد
invoice_idUUIDFOREIGN KEY (invoice_id)الفاتورة المرتبطة بالدفع
stripe_payment_intent_idVARCHAR(100)UNIQUEمعرف نية الدفع في Stripe
amountDECIMAL(10,2)NOT NULLالمبلغ المدفوع
currencyCHAR(3)NOT NULL, DEFAULT 'USD'العملة
payment_methodVARCHAR(50)NOT NULLطريقة الدفع (card, bank_transfer, crypto)
statusVARCHAR(20)NOT NULLحالة الدفع (succeeded, failed, pending)
failure_messageTEXT–رسالة الخطأ في حالة الفشل
paid_atTIMESTAMPNOT NULLتاريخ الدفع

العلاقات:

  • payments (N) — (1) invoices

4. 📨 جدول الإشعارات والاتصالات (Notifications & Messages)

4.1 notification_templates

قوالب الإشعارات (للبريد الإلكتروني، SMS، الإشعارات داخل التطبيق).

العمودالنوعالقيدالوصف
template_idUUIDPRIMARY KEYالمعرف الفريد
nameVARCHAR(100)UNIQUE, NOT NULLاسم القالب (مثل “welcome_email”)
typeVARCHAR(20)NOT NULLنوع القالب (email, sms, push)
subjectVARCHAR(255)–موضوع البريد الإلكتروني
body_textTEXT–محتوى النص (أو HTML) مع متغيرات (مثل {{user_name}})
body_htmlTEXT–نسخة HTML من البريد
variablesJSONB–قائمة المتغيرات المستخدمة في القالب

4.2 notifications

سجل الإشعارات المرسلة.

العمودالنوعالقيدالوصف
notification_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المستخدم المستهدف
template_idUUIDFOREIGN KEY (template_id)القالب المستخدم للإرسال
channelVARCHAR(20)NOT NULLقناة الإرسال (email, sms, in_app)
statusVARCHAR(20)NOT NULLحالة الإرسال (sent, failed, pending)
sent_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإرسال
metadataJSONB–بيانات وصفية إضافية (مثل محاولات إعادة المحاولة)

العلاقات:

  • notifications (N) — (1) users
  • notifications (N) — (1) notification_templates

5. 📊 جدول التحليلات والمراقبة (Analytics & Monitoring)

5.1 user_events

سجل أحداث المستخدمين لتحليل السلوك.

العمودالنوعالقيدالوصف
event_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المستخدم الذي قام بالحدث
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المرتبط بالحدث
event_typeVARCHAR(50)NOT NULLنوع الحدث (page_view, click, purchase, feature_use)
page_urlTEXT–الصفحة التي تمت زيارتها
feature_nameVARCHAR(100)–الميزة المستخدمة (إذا كان الحدث هو feature_use)
metadataJSONB–بيانات إضافية (مثل وقت البقاء على الصفحة، قيمة العنصر)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ ووقت الحدث

العلاقات:

  • user_events (N) — (1) users
  • user_events (N) — (1) tenants

5.2 system_metrics

تخزين مقاييس أداء النظام (CPU، الذاكرة، معدل الأخطاء).

العمودالنوعالقيدالوصف
metric_idUUIDPRIMARY KEYالمعرف الفريد
metric_typeVARCHAR(50)NOT NULLنوع المقياس (cpu_usage, memory_usage, error_rate)
valueDECIMAL(10,2)NOT NULLقيمة المقياس
service_nameVARCHAR(50)–الخدمة التي يُقاس عليها المقياس (مثل “user-service”)
recorded_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPوقت القياس

5.3 ab_tests

سجل تجارب A/B.

العمودالنوعالقيدالوصف
test_idUUIDPRIMARY KEYالمعرف الفريد
nameVARCHAR(100)NOT NULLاسم التجربة
hypothesisTEXTNOT NULLالفرضية التي يتم اختبارها
control_groupJSONB–وصف المجموعة الضابطة (النسخة الحالية)
variant_groupJSONB–وصف المجموعة التجريبية (النسخة الجديدة)
statusVARCHAR(20)NOT NULLحالة التجربة (draft, running, completed)
start_dateTIMESTAMPNOT NULLتاريخ البدء
end_dateTIMESTAMP–تاريخ الانتهاء
resultsJSONB–نتائج التجربة (الخيار الفائز، الدلالة الإحصائية)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

5.4 ab_test_assignments

تتبع أي مجموعة ينتمي إليها كل مستخدم في تجارب A/B.

العمودالنوعالقيدالوصف
assignment_idUUIDPRIMARY KEYالمعرف الفريد
test_idUUIDFOREIGN KEY (test_id)معرف التجربة
user_idUUIDFOREIGN KEY (user_id)معرف المستخدم
group_assignedVARCHAR(20)NOT NULLالمجموعة المخصصة (control, variant_a, variant_b)
assigned_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ التخصيص

العلاقات:

  • ab_test_assignments (N) — (1) ab_tests
  • ab_test_assignments (N) — (1) users

6. 📨 جدول التكامل والأحداث (Integration & Events)

6.1 webhook_deliveries

سجل محاولات تسليم الـ Webhook للأنظمة الخارجية.

العمودالنوعالقيدالوصف
delivery_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المستهدف (أو NULL للـ Webhooks العامة)
event_typeVARCHAR(50)NOT NULLنوع الحدث (payment.succeeded, user.created)
payloadJSONBNOT NULLمحتوى الحدث المرسل
target_urlTEXTNOT NULLعنوان URL المستهدف
statusVARCHAR(20)NOT NULLحالة التسليم (success, failed, retrying)
attempt_countINTEGERNOT NULL, DEFAULT 1عدد محاولات الإرسال
response_codeINTEGER–رمز الاستجابة من الطرف الآخر
response_bodyTEXT–نص الاستجابة
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • webhook_deliveries (N) — (1) tenants

6.2 scheduled_tasks

سجل المهام المجدولة (Cron jobs).

العمودالنوعالقيدالوصف
task_idUUIDPRIMARY KEYالمعرف الفريد
task_nameVARCHAR(100)UNIQUE, NOT NULLاسم المهمة (مثل “check_expired_subscriptions”)
cron_expressionVARCHAR(50)NOT NULLتعبير Cron لتحديد وقت التشغيل
task_typeVARCHAR(50)NOT NULLنوع المهمة (daily, hourly, weekly, monthly)
is_activeBOOLEANNOT NULL, DEFAULT trueهل المهمة مفعلة؟
last_run_atTIMESTAMP–تاريخ آخر تشغيل
next_run_atTIMESTAMPNOT NULLتاريخ التشغيل القادم
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

7. 🛠️ جداول العمليات والتطوير (Operations & Development)

7.1 features

سجل الميزات ودورة حياتها.

العمودالنوعالقيدالوصف
feature_idUUIDPRIMARY KEYالمعرف الفريد
nameVARCHAR(100)NOT NULLاسم الميزة
descriptionTEXT–وصف الميزة
lifecycle_stageVARCHAR(20)NOT NULLمرحلة دورة الحياة (planning, development, testing, production, deprecated)
release_versionVARCHAR(20)–إصدار النظام الذي تمت فيه إضافة الميزة
deprecated_atTIMESTAMP–تاريخ إيقاف الميزة
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

7.2 audit_logs

سجل تدقيق لجميع العمليات الهامة.

العمودالنوعالقيدالوصف
log_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المستخدم الذي قام بالعملية
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المتأثر بالعملية
actionVARCHAR(50)NOT NULLالإجراء المنفذ (user_deleted, tenant_updated, payment_processed)
resource_typeVARCHAR(50)NOT NULLنوع المورد المتأثر (user, tenant, subscription)
resource_idUUIDNOT NULLالمعرف الفريد للمورد المتأثر
old_valuesJSONB–القيم القديمة (قبل التغيير)
new_valuesJSONB–القيم الجديدة (بعد التغيير)
ip_addressINET–عنوان IP مصدر العملية
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ العملية

العلاقات:

  • audit_logs (N) — (1) users
  • audit_logs (N) — (1) tenants

7.3 backups

سجل عمليات النسخ الاحتياطي واستعادتها.

العمودالنوعالقيدالوصف
backup_idUUIDPRIMARY KEYالمعرف الفريد
backup_typeVARCHAR(20)NOT NULLنوع النسخة (full, incremental)
storage_locationTEXTNOT NULLموقع تخزين النسخة (مثل S3 bucket)
size_mbINTEGER–حجم النسخة بالميغابايت
statusVARCHAR(20)NOT NULLحالة النسخة (completed, failed, in_progress)
triggered_byVARCHAR(50)NOT NULLمن قام بتشغيل النسخة (system, admin)
started_atTIMESTAMPNOT NULLتاريخ بدء النسخ
completed_atTIMESTAMP–تاريخ اكتمال النسخ
restored_atTIMESTAMP–تاريخ استخدام النسخة للاستعادة (إذا تم)

7.4 geo_expansions

سجل التوسع الجغرافي للمنصة.

العمودالنوعالقيدالوصف
expansion_idUUIDPRIMARY KEYالمعرف الفريد
country_codeCHAR(2)UNIQUE, NOT NULLرمز الدولة (مثل “SA”)
currencyCHAR(3)NOT NULLالعملة المحلية
language_codeCHAR(2)NOT NULLاللغة المحلية (مثل “ar”)
launch_statusVARCHAR(20)NOT NULLحالة الإطلاق (analysis, compliance, adaptation, beta, launched)
compliance_requirementsJSONB–متطلبات الامتثال المحلية (GDPR, CCPA, الخ)
payment_gatewaysJSONB–قائمة بوابات الدفع المحلية المدعومة
launched_atTIMESTAMP–تاريخ الإطلاق الكامل

📊 رسم تخطيطي للعلاقات الأساسية (ER Diagram)

يمكن تلخيص العلاقات الأساسية كالتالي:


هذا النموذج يغطي جميع المتطلبات الوظيفية المذكورة في الدليل، وهو:

  • قابل للتوسع: يمكن إضافة جداول وعلاقات جديدة بسهولة.
  • متوافق مع التطبيقات الحديثة: باستخدام UUIDs، JSONB، والعلاقات المحددة.
  • جاهز للتنفيذ: يمكن تحويله مباشرة إلى SQL (PostgreSQL، MySQL، الخ).

بكل سرور! سأقوم بتوسيع نموذج قاعدة البيانات بشكل كبير ليشمل جداول جديدة و تفاصيل دقيقة تغطي جميع الجوانب التشغيلية والإدارية والتقنية التي وردت في الدليل، مع تعميق العلاقات وإضافة من السيناريوهات العملية.


🗄️ التوسعة الشاملة لنموذج قاعدة البيانات

📦 المجموعة الجديدة: إدارة المنتجات والخدمات (Product & Service Management)

8.1 products_catalog

سجل المنتجات/الخدمات التي تقدمها المنصة (بخلاف خطط الاشتراك الأساسية).

العمودالنوعالقيدالوصف
product_idUUIDPRIMARY KEYالمعرف الفريد للمنتج
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر الذي يملك المنتج (أو NULL للمنتجات العامة)
nameVARCHAR(255)NOT NULLاسم المنتج/الخدمة
skuVARCHAR(100)UNIQUEرقم التخزين التعريفي (Stock Keeping Unit)
descriptionTEXT–وصف مفصل
priceDECIMAL(10,2)NOT NULLالسعر
currencyCHAR(3)NOT NULL, DEFAULT 'USD'العملة
is_activeBOOLEANNOT NULL, DEFAULT trueهل المنتج متاح للبيع؟
categoryVARCHAR(100)–تصنيف المنتج
metadataJSONB–خصائص إضافية (مثل الوزن، الأبعاد، اللون)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • products_catalog (N) — (1) tenants

8.2 inventory

تتبع المخزون للمنتجات المادية (إن وجدت).

العمودالنوعالقيدالوصف
inventory_idUUIDPRIMARY KEYالمعرف الفريد
product_idUUIDFOREIGN KEY (product_id)المنتج المرتبط
quantityINTEGERNOT NULL, DEFAULT 0الكمية المتوفرة
reorder_levelINTEGERNOT NULL, DEFAULT 10الحد الأدنى للتنبيه لإعادة الطلب
reorder_quantityINTEGERNOT NULL, DEFAULT 50الكمية الموصى بها لإعادة الطلب
locationVARCHAR(100)–موقع التخزين (مستودع، رف)
last_updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • inventory (1) — (1) products_catalog

8.3 orders

سجل طلبات الشراء (للعملاء).

العمودالنوعالقيدالوصف
order_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب الطلب
user_idUUIDFOREIGN KEY (user_id)المستخدم الذي أنشأ الطلب
order_numberVARCHAR(50)UNIQUE, NOT NULLرقم الطلب الفريد (قابل للقراءة)
statusVARCHAR(30)NOT NULLحالة الطلب (pending, confirmed, shipped, delivered, canceled)
total_amountDECIMAL(10,2)NOT NULLالمبلغ الإجمالي
currencyCHAR(3)NOT NULL, DEFAULT 'USD'العملة
shipping_addressJSONB–عنوان الشحن (ككائن JSON)
billing_addressJSONB–عنوان الفوترة
notesTEXT–ملاحظات إضافية
placed_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الطلب
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • orders (N) — (1) tenants
  • orders (N) — (1) users

8.4 order_items

تفاصيل المنتجات في كل طلب.

العمودالنوعالقيدالوصف
order_item_idUUIDPRIMARY KEYالمعرف الفريد
order_idUUIDFOREIGN KEY (order_id)الطلب المرتبط
product_idUUIDFOREIGN KEY (product_id)المنتج المطلوب
quantityINTEGERNOT NULLالكمية
unit_priceDECIMAL(10,2)NOT NULLسعر الوحدة وقت الطلب
total_priceDECIMAL(10,2)NOT NULLالسعر الإجمالي (الكمية × سعر الوحدة)
discount_appliedDECIMAL(10,2)DEFAULT 0الخصم المطبق على هذا البند

العلاقات:

  • order_items (N) — (1) orders
  • order_items (N) — (1) products_catalog

📦 المجموعة الجديدة: إدارة المشاريع والمهام (Project & Task Management)

9.1 projects

سجل المشاريع التي يديرها المستأجرون.

العمودالنوعالقيدالوصف
project_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب المشروع
nameVARCHAR(255)NOT NULLاسم المشروع
descriptionTEXT–وصف المشروع
statusVARCHAR(20)NOT NULLحالة المشروع (planning, active, on_hold, completed, archived)
start_dateDATE–تاريخ البداية المتوقع
end_dateDATE–تاريخ النهاية المتوقع
budgetDECIMAL(12,2)–الميزانية المخصصة
currencyCHAR(3)DEFAULT 'USD'العملة
manager_idUUIDFOREIGN KEY (manager_id)مدير المشروع (من جدول المستخدمين)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • projects (N) — (1) tenants
  • projects (N) — (1) users (كمدير)

9.2 tasks

المهام المرتبطة بالمشاريع.

العمودالنوعالقيدالوصف
task_idUUIDPRIMARY KEYالمعرف الفريد
project_idUUIDFOREIGN KEY (project_id)المشروع المرتبط
assigned_toUUIDFOREIGN KEY (assigned_to)المستخدم المسند إليه المهمة
created_byUUIDFOREIGN KEY (created_by)المستخدم الذي أنشأ المهمة
titleVARCHAR(255)NOT NULLعنوان المهمة
descriptionTEXT–وصف تفصيلي
priorityVARCHAR(20)NOT NULL, DEFAULT 'medium'الأولوية (low, medium, high, critical)
statusVARCHAR(20)NOT NULLحالة المهمة (pending, in_progress, review, done, blocked)
due_dateTIMESTAMP–تاريخ الاستحقاق
completed_atTIMESTAMP–تاريخ الإكمال الفعلي
estimated_hoursDECIMAL(5,2)–عدد الساعات المقدرة
actual_hoursDECIMAL(5,2)–عدد الساعات الفعلية
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • tasks (N) — (1) projects
  • tasks (N) — (1) users (كمسند إليه)
  • tasks (N) — (1) users (كمنشئ)

9.3 task_comments

التعليقات والنقاشات حول المهام.

العمودالنوعالقيدالوصف
comment_idUUIDPRIMARY KEYالمعرف الفريد
task_idUUIDFOREIGN KEY (task_id)المهمة المرتبطة
user_idUUIDFOREIGN KEY (user_id)المستخدم صاحب التعليق
contentTEXTNOT NULLمحتوى التعليق
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ التعليق
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • task_comments (N) — (1) tasks
  • task_comments (N) — (1) users

9.4 task_attachments

الملفات المرفقة بالمهام.

العمودالنوعالقيدالوصف
attachment_idUUIDPRIMARY KEYالمعرف الفريد
task_idUUIDFOREIGN KEY (task_id)المهمة المرتبطة
user_idUUIDFOREIGN KEY (user_id)المستخدم الذي رفع الملف
file_nameVARCHAR(255)NOT NULLاسم الملف
file_urlTEXTNOT NULLرابط الملف المخزن (S3, CDN)
file_size_bytesBIGINT–حجم الملف بالبايت
mime_typeVARCHAR(100)–نوع الملف (image/png, application/pdf)
uploaded_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الرفع

العلاقات:

  • task_attachments (N) — (1) tasks
  • task_attachments (N) — (1) users

📦 المجموعة الجديدة: إدارة علاقات العملاء (CRM)

10.1 leads

العملاء المحتملون (Lead Management).

العمودالنوعالقيدالوصف
lead_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب العميل المحتمل
first_nameVARCHAR(100)NOT NULLالاسم الأول
last_nameVARCHAR(100)NOT NULLاسم العائلة
emailVARCHAR(255)–البريد الإلكتروني
phoneVARCHAR(20)–رقم الهاتف
company_nameVARCHAR(255)–اسم الشركة
sourceVARCHAR(50)–مصدر العميل (website, referral, ad, event)
statusVARCHAR(30)NOT NULLحالة العميل (new, contacted, qualified, lost, converted)
assigned_toUUIDFOREIGN KEY (assigned_to)المندوب المسؤول
scoreINTEGERDEFAULT 0درجة العميل المحتمل (Lead Score)
notesTEXT–ملاحظات إضافية
converted_atTIMESTAMP–تاريخ التحويل إلى عميل
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • leads (N) — (1) tenants
  • leads (N) — (1) users (كمسند إليه)

10.2 customers

العملاء الفعليون (بعد التحويل من Lead أو التسجيل المباشر).

العمودالنوعالقيدالوصف
customer_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب العميل
user_idUUIDFOREIGN KEY (user_id)حساب المستخدم المرتبط (إن وجد)
lead_idUUIDFOREIGN KEY (lead_id)العميل المحتمل الذي تحول (إن وجد)
first_nameVARCHAR(100)NOT NULLالاسم الأول
last_nameVARCHAR(100)NOT NULLاسم العائلة
emailVARCHAR(255)UNIQUE, NOT NULLالبريد الإلكتروني
phoneVARCHAR(20)–رقم الهاتف
companyVARCHAR(255)–اسم الشركة
customer_sinceDATENOT NULL, DEFAULT CURRENT_DATEتاريخ الانضمام
lifetime_valueDECIMAL(10,2)DEFAULT 0القيمة الإجمالية للعميل
notesTEXT–ملاحظات إضافية
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • customers (N) — (1) tenants
  • customers (1) — (1) users (إن وجد)
  • customers (1) — (1) leads (إن وجد)

10.3 interactions

سجل التفاعلات مع العملاء (مكالمات، رسائل، اجتماعات).

العمودالنوعالقيدالوصف
interaction_idUUIDPRIMARY KEYالمعرف الفريد
customer_idUUIDFOREIGN KEY (customer_id)العميل المعني
user_idUUIDFOREIGN KEY (user_id)الموظف الذي أجرى التفاعل
typeVARCHAR(30)NOT NULLنوع التفاعل (call, email, meeting, support_ticket)
subjectVARCHAR(255)NOT NULLموضوع التفاعل
contentTEXT–محتوى التفاعل (ملخص المكالمة، نص البريد)
duration_minutesINTEGER–مدة التفاعل (للمكالمات والاجتماعات)
outcomeVARCHAR(50)–نتيجة التفاعل (positive, negative, pending)
scheduled_atTIMESTAMP–موعد التفاعل المجدول (إن وجد)
performed_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPوقت تنفيذ التفاعل

العلاقات:

  • interactions (N) — (1) customers
  • interactions (N) — (1) users

📦 المجموعة الجديدة: دعم العملاء والتذاكر (Support & Tickets)

11.1 support_tickets

تذاكر الدعم الفني.

العمودالنوعالقيدالوصف
ticket_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب التذكرة
customer_idUUIDFOREIGN KEY (customer_id)العميل مقدم الطلب
assigned_toUUIDFOREIGN KEY (assigned_to)الموظف المسند إليه
titleVARCHAR(255)NOT NULLعنوان التذكرة
descriptionTEXTNOT NULLوصف المشكلة
priorityVARCHAR(20)NOT NULL, DEFAULT 'medium'الأولوية (low, medium, high, critical)
statusVARCHAR(20)NOT NULLحالة التذكرة (open, in_progress, resolved, closed)
categoryVARCHAR(50)–تصنيف المشكلة (technical, billing, feature_request)
resolved_atTIMESTAMP–تاريخ الحل
satisfaction_scoreINTEGER–تقييم رضا العميل (1-5)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • support_tickets (N) — (1) tenants
  • support_tickets (N) — (1) customers
  • support_tickets (N) — (1) users (كمسند إليه)

11.2 ticket_replies

الردود على تذاكر الدعم.

العمودالنوعالقيدالوصف
reply_idUUIDPRIMARY KEYالمعرف الفريد
ticket_idUUIDFOREIGN KEY (ticket_id)التذكرة المرتبطة
user_idUUIDFOREIGN KEY (user_id)الشخص الذي كتب الرد (موظف أو عميل)
contentTEXTNOT NULLمحتوى الرد
is_internalBOOLEANNOT NULL, DEFAULT falseهل الرد داخلي (للموظفين فقط)؟
attachmentsJSONB–قائمة الملفات المرفقة (إن وجدت)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الرد

العلاقات:

  • ticket_replies (N) — (1) support_tickets
  • ticket_replies (N) — (1) users

📦 المجموعة الجديدة: التسويق والحملات (Marketing & Campaigns)

12.1 campaigns

الحملات التسويقية.

العمودالنوعالقيدالوصف
campaign_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب الحملة
nameVARCHAR(255)NOT NULLاسم الحملة
descriptionTEXT–وصف الحملة
typeVARCHAR(30)NOT NULLنوع الحملة (email, social_media, ppc, seo, event)
budgetDECIMAL(12,2)–الميزانية المخصصة
currencyCHAR(3)DEFAULT 'USD'العملة
start_dateDATENOT NULLتاريخ البداية
end_dateDATE–تاريخ النهاية
statusVARCHAR(20)NOT NULLحالة الحملة (draft, active, paused, ended)
target_audienceJSONB–استهداف الجمهور (الموقع، العمر، الاهتمامات)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • campaigns (N) — (1) tenants

12.2 campaign_metrics

مقاييس أداء الحملات.

العمودالنوعالقيدالوصف
metric_idUUIDPRIMARY KEYالمعرف الفريد
campaign_idUUIDFOREIGN KEY (campaign_id)الحملة المرتبطة
dateDATENOT NULLتاريخ القياس
impressionsBIGINTDEFAULT 0عدد مرات الظهور
clicksBIGINTDEFAULT 0عدد النقرات
conversionsBIGINTDEFAULT 0عدد التحويلات
costDECIMAL(10,2)DEFAULT 0التكلفة
revenueDECIMAL(10,2)DEFAULT 0الإيرادات المحققة
bounce_rateDECIMAL(5,2)–معدل الارتداد (للبريد الإلكتروني)
open_rateDECIMAL(5,2)–معدل الفتح (للبريد الإلكتروني)
click_through_rateDECIMAL(5,2)–معدل النقر إلى الظهور (CTR)

العلاقات:

  • campaign_metrics (N) — (1) campaigns

12.3 email_campaigns

تفاصيل حملات البريد الإلكتروني.

العمودالنوعالقيدالوصف
email_campaign_idUUIDPRIMARY KEYالمعرف الفريد
campaign_idUUIDFOREIGN KEY (campaign_id)الحملة المرتبطة
subject_lineVARCHAR(255)NOT NULLسطر الموضوع
sender_nameVARCHAR(100)NOT NULLاسم المرسل
sender_emailVARCHAR(255)NOT NULLبريد المرسل
template_idUUIDFOREIGN KEY (template_id)قالب البريد المستخدم (من جدول notification_templates)
recipients_countINTEGERNOT NULLعدد المستلمين
sent_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإرسال

العلاقات:

  • email_campaigns (1) — (1) campaigns
  • email_campaigns (N) — (1) notification_templates

📦 المجموعة الجديدة: الموارد البشرية والموظفين (HR & Employees)

13.1 employees

بيانات الموظفين (بخلاف حسابات المستخدمين).

العمودالنوعالقيدالوصف
employee_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب الموظف
user_idUUIDFOREIGN KEY (user_id)حساب المستخدم المرتبط (إن وجد)
first_nameVARCHAR(100)NOT NULLالاسم الأول
last_nameVARCHAR(100)NOT NULLاسم العائلة
emailVARCHAR(255)UNIQUE, NOT NULLالبريد الإلكتروني
phoneVARCHAR(20)–رقم الهاتف
job_titleVARCHAR(100)–المسمى الوظيفي
departmentVARCHAR(100)–القسم
hire_dateDATENOT NULLتاريخ التوظيف
termination_dateDATE–تاريخ انتهاء الخدمة (إن وجد)
salaryDECIMAL(10,2)–الراتب
currencyCHAR(3)DEFAULT 'USD'العملة
bank_accountVARCHAR(100)–رقم الحساب البنكي
emergency_contactJSONB–بيانات جهة الاتصال في الطوارئ
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • employees (N) — (1) tenants
  • employees (1) — (1) users (إن وجد)

13.2 attendance

سجل الحضور والانصراف.

العمودالنوعالقيدالوصف
attendance_idUUIDPRIMARY KEYالمعرف الفريد
employee_idUUIDFOREIGN KEY (employee_id)الموظف المعني
dateDATENOT NULLالتاريخ
check_in_timeTIMESTAMP–وقت الحضور
check_out_timeTIMESTAMP–وقت الانصراف
hours_workedDECIMAL(5,2)–عدد ساعات العمل
overtime_hoursDECIMAL(5,2)DEFAULT 0ساعات العمل الإضافي
statusVARCHAR(20)NOT NULLحالة الحضور (present, absent, leave, holiday)
notesTEXT–ملاحظات إضافية

العلاقات:

  • attendance (N) — (1) employees

13.3 leave_requests

طلبات الإجازات.

العمودالنوعالقيدالوصف
leave_request_idUUIDPRIMARY KEYالمعرف الفريد
employee_idUUIDFOREIGN KEY (employee_id)الموظف مقدم الطلب
approved_byUUIDFOREIGN KEY (approved_by)المدير الموافق (من جدول المستخدمين)
typeVARCHAR(30)NOT NULLنوع الإجازة (annual, sick, unpaid, maternity)
start_dateDATENOT NULLتاريخ البداية
end_dateDATENOT NULLتاريخ النهاية
total_daysDECIMAL(4,1)NOT NULLعدد الأيام
reasonTEXT–سبب الإجازة
statusVARCHAR(20)NOT NULLحالة الطلب (pending, approved, rejected)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الطلب
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • leave_requests (N) — (1) employees
  • leave_requests (N) — (1) users (كموافق)

📦 المجموعة الجديدة: التقارير واللوحات (Reports & Dashboards)

14.1 report_templates

قوالب التقارير المعدة مسبقاً.

العمودالنوعالقيدالوصف
template_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب القالب (أو NULL للقوالب العامة)
nameVARCHAR(100)NOT NULLاسم القالب
descriptionTEXT–وصف القالب
categoryVARCHAR(50)NOT NULLتصنيف التقرير (financial, user, performance, marketing)
queryTEXTNOT NULLاستعلام SQL أو تعريف التقرير (JSON)
parametersJSONB–معايير التقرير (تاريخ، معرف مستخدم، الخ)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • report_templates (N) — (1) tenants

14.2 report_generations

سجل مرات إنشاء التقارير.

العمودالنوعالقيدالوصف
generation_idUUIDPRIMARY KEYالمعرف الفريد
template_idUUIDFOREIGN KEY (template_id)القالب المستخدم
requested_byUUIDFOREIGN KEY (requested_by)المستخدم الذي طلب التقرير
formatVARCHAR(20)NOT NULLصيغة التقرير (PDF, Excel, CSV, JSON)
parameters_usedJSONB–المعايير المستخدمة عند الإنشاء
file_urlTEXT–رابط ملف التقرير المخزن
statusVARCHAR(20)NOT NULLحالة الإنشاء (processing, completed, failed)
error_messageTEXT–رسالة الخطأ في حالة الفشل
generated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • report_generations (N) — (1) report_templates
  • report_generations (N) — (1) users

14.3 scheduled_reports

جدولة التقارير الدورية.

العمودالنوعالقيدالوصف
schedule_idUUIDPRIMARY KEYالمعرف الفريد
template_idUUIDFOREIGN KEY (template_id)القالب المجدول
created_byUUIDFOREIGN KEY (created_by)المستخدم الذي أنشأ الجدولة
frequencyVARCHAR(20)NOT NULLالتكرار (daily, weekly, monthly)
day_of_weekINTEGER–يوم الأسبوع (للتكرار الأسبوعي)
day_of_monthINTEGER–يوم الشهر (للتكرار الشهري)
recipientsJSONB–قائمة المستلمين (بريد إلكتروني)
is_activeBOOLEANNOT NULL, DEFAULT trueهل الجدولة مفعلة؟
last_sent_atTIMESTAMP–تاريخ آخر إرسال
next_send_atTIMESTAMPNOT NULLتاريخ الإرسال القادم
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • scheduled_reports (N) — (1) report_templates
  • scheduled_reports (N) — (1) users

📦 المجموعة الجديدة: إدارة الأصول والممتلكات (Assets Management)

15.1 assets

سجل الأصول المملوكة للمنصة أو للمستأجرين.

العمودالنوعالقيدالوصف
asset_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المالك (أو NULL للأصول العامة)
nameVARCHAR(255)NOT NULLاسم الأصل
typeVARCHAR(50)NOT NULLنوع الأصل (software_license, hardware, intellectual_property)
descriptionTEXT–وصف الأصل
serial_numberVARCHAR(100)–الرقم التسلسلي
purchase_dateDATE–تاريخ الشراء
purchase_priceDECIMAL(10,2)–سعر الشراء
currencyCHAR(3)DEFAULT 'USD'العملة
useful_life_yearsINTEGER–العمر الافتراضي (بالسنوات)
statusVARCHAR(20)NOT NULLحالة الأصل (active, deprecated, sold, disposed)
assigned_toUUIDFOREIGN KEY (assigned_to)المستخدم/الموظف المسند إليه الأصل (إن وجد)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • assets (N) — (1) tenants
  • assets (N) — (1) users (كمسند إليه)

📦 المجموعة الجديدة: السجلات القانونية والامتثال (Legal & Compliance)

16.1 compliance_records

سجل الامتثال للقوانين والمعايير.

العمودالنوعالقيدالوصف
record_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المعني (أو NULL للمنصة)
standardVARCHAR(100)NOT NULLالمعيار/القانون (GDPR, CCPA, ISO27001, PCI-DSS)
statusVARCHAR(20)NOT NULLحالة الامتثال (compliant, non_compliant, pending_audit)
audit_dateDATE–تاريخ آخر تدقيق
audited_byVARCHAR(100)–المدقق
findingsTEXT–نتائج التدقيق
remediation_planTEXT–خطة المعالجة (إن وجدت)
due_dateDATE–تاريخ استحقاق المعالجة
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • compliance_records (N) — (1) tenants

16.2 terms_acceptance

سجل موافقات المستخدمين على الشروط والأحكام.

العمودالنوعالقيدالوصف
acceptance_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المستخدم الموافق
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المرتبط
document_nameVARCHAR(255)NOT NULLاسم الوثيقة (Terms of Service, Privacy Policy)
document_versionVARCHAR(20)NOT NULLإصدار الوثيقة
accepted_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الموافقة
ip_addressINET–عنوان IP عند الموافقة

العلاقات:

  • terms_acceptance (N) — (1) users
  • terms_acceptance (N) — (1) tenants

📦 المجموعة الجديدة: إدارة المعرفة والمستندات (Knowledge Management)

17.1 knowledge_base

قاعدة المعرفة (مقالات، أدلة، أسئلة شائعة).

العمودالنوعالقيدالوصف
article_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب المقال (أو NULL للمقالات العامة)
titleVARCHAR(255)NOT NULLعنوان المقال
slugVARCHAR(255)UNIQUE, NOT NULLالرابط الصديق للمقال
contentTEXTNOT NULLمحتوى المقال (بصيغة Markdown أو HTML)
categoryVARCHAR(50)–تصنيف المقال
tagsTEXT[]–وسوم للمقال
viewsINTEGERDEFAULT 0عدد المشاهدات
helpful_countINTEGERDEFAULT 0عدد التقييمات الإيجابية
not_helpful_countINTEGERDEFAULT 0عدد التقييمات السلبية
author_idUUIDFOREIGN KEY (author_id)كاتب المقال
statusVARCHAR(20)NOT NULLحالة المقال (draft, published, archived)
published_atTIMESTAMP–تاريخ النشر
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • knowledge_base (N) — (1) tenants
  • knowledge_base (N) — (1) users (ككاتب)

17.2 documents

المستندات والملفات المهمة (عقود، اتفاقيات، فواتير).

العمودالنوعالقيدالوصف
document_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المالك
uploaded_byUUIDFOREIGN KEY (uploaded_by)المستخدم الذي رفع المستند
nameVARCHAR(255)NOT NULLاسم المستند
descriptionTEXT–وصف المستند
file_urlTEXTNOT NULLرابط الملف المخزن
file_size_bytesBIGINT–حجم الملف بالبايت
mime_typeVARCHAR(100)–نوع الملف
categoryVARCHAR(50)–تصنيف المستند (contract, invoice, report)
expiry_dateDATE–تاريخ انتهاء صلاحية المستند (للشهادات والعقود)
is_confidentialBOOLEANDEFAULT falseهل المستند سري؟
access_permissionsJSONB–صلاحيات الوصول (من يمكنه الرؤية)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الرفع
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • documents (N) — (1) tenants
  • documents (N) — (1) users (كرافع)

📦 المجموعة الجديدة: التوسع الجغرافي والإعدادات المحلية (Localization & Geo)

18.1 localization_settings

إعدادات الترجمة والتنسيق المحلي.

العمودالنوعالقيدالوصف
setting_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المعني
language_codeCHAR(2)NOT NULLكود اللغة (ar, en)
country_codeCHAR(2)NOT NULLكود الدولة (SA, US)
timezoneVARCHAR(50)NOT NULL, DEFAULT 'UTC'المنطقة الزمنية
date_formatVARCHAR(20)NOT NULLتنسيق التاريخ (YYYY-MM-DD, DD/MM/YYYY)
currency_symbolVARCHAR(5)NOT NULLرمز العملة ($, د.إ)
currency_positionVARCHAR(10)NOT NULLموضع العملة (before, after)
decimal_separatorCHAR(1)NOT NULLفاصل الكسور العشرية (. أو ,)
thousands_separatorCHAR(1)NOT NULLفاصل الآلاف (, أو .)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • localization_settings (1) — (1) tenants

📦 المجموعة الجديدة: تتبع التغييرات والمراجعات (Change Tracking & Revisions)

19.1 change_requests

طلبات التغيير على النظام (لميزات أو إعدادات).

العمودالنوعالقيدالوصف
request_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر مقدم الطلب (أو NULL للمنصة)
requested_byUUIDFOREIGN KEY (requested_by)المستخدم مقدم الطلب
approved_byUUIDFOREIGN KEY (approved_by)المستخدم الموافق (إن وجد)
titleVARCHAR(255)NOT NULLعنوان طلب التغيير
descriptionTEXTNOT NULLوصف التغيير المطلوب
reasonTEXTNOT NULLسبب التغيير
priorityVARCHAR(20)NOT NULLالأولوية (low, medium, high)
statusVARCHAR(20)NOT NULLحالة الطلب (submitted, review, approved, rejected, implemented)
implemented_atTIMESTAMP–تاريخ التنفيذ
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الطلب
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • change_requests (N) — (1) tenants
  • change_requests (N) — (1) users (كمقدم)
  • change_requests (N) — (1) users (كموافق)

🔗 ملخص العلاقات المتقدمة

لتسهيل الفهم، إليك ملخص للعلاقات الرئيسية بين المجموعات الجديدة والمجموعات الأساسية:


🧩 نظرة عامة على عدد الجداول والعلاقات

المجموعةعدد الجداولعدد العلاقات المباشرة
المستخدمين والمصادقة (Users & Auth)79
المستأجرين والشركات (Tenants & Companies)18 (كمرجع في معظم الجداول)
الاشتراكات والمدفوعات (Subscriptions & Payments)47
الإشعارات والاتصالات (Notifications & Messages)22
التحليلات والمراقبة (Analytics & Monitoring)43
التكامل والأحداث (Integration & Events)22
العمليات والتطوير (Operations & Development)45
المجموعات الجديدة
إدارة المنتجات والخدمات (Product & Service)46
إدارة المشاريع والمهام (Project & Task)47
إدارة علاقات العملاء (CRM)37
دعم العملاء والتذاكر (Support & Tickets)25
التسويق والحملات (Marketing & Campaigns)34
الموارد البشرية (HR & Employees)36
التقارير واللوحات (Reports & Dashboards)35
إدارة الأصول (Assets Management)12
السجلات القانونية (Legal & Compliance)24
إدارة المعرفة (Knowledge Management)24
التوسع الجغرافي (Localization & Geo)11
تتبع التغييرات (Change Tracking)14
المجموع الكلي53 جدولاً~91 علاقة

💡 نصائح لتنفيذ قاعدة البيانات

  1. الفهرسة (Indexing):
    • أضف فهارس على المفاتيح الأجنبية (tenant_id, user_id, customer_id) لتسريع الاستعلامات.
    • أضف فهارس على الحقول المستخدمة بكثرة في البحث والتصفية (email, status, created_at).
  2. الأرشفة (Archiving):
    • استخدم deleted_at للحذف الناعم بدلاً من الحذف الفعلي.
    • قم بنقل البيانات القديمة (مثل audit_logs, user_events) إلى جداول أرشيفية دورياً.
  3. التقسيم (Partitioning):
    • قم بتقسيم الجداول الكبيرة (مثل user_events, audit_logs) حسب التاريخ لتحسين الأداء.
  4. الأمان:
    • استخدم تشفيراً على الحساسية (مثل password_hash, key_hash).
    • طبق RLS (Row Level Security) في PostgreSQL لعزل البيانات بين المستأجرين.
  5. التوسع المستقبلي:
    • أضف حقول metadata أو extra من نوع JSONB في كل جدول لتخزين بيانات إضافية مستقبلية دون تغيير الهيكل.

هذه التوسعة تجعل قاعدة البيانات جاهزة للمؤسسات وتغطي جميع جوانب النظام المتكامل، مع إمكانية التوسع لتشمل من الميزات حسب احتياجات العمل.

This response is AI-generated, for reference only.

بكل سرور! سأقوم بتوسيع نموذج قاعدة البيانات بشكل أكبر ليشمل جداول متخصصة تغطي جميع السيناريوهات التشغيلية المتقدمة، بما في ذلك:

  • إدارة الفرق والتعاون
  • نظام المكافآت والحوافز
  • إدارة العقود والاتفاقيات
  • نظام التوصيات الذكي
  • إدارة البنية التحتية والتطبيقات
  • نظام الحوكمة والتصويت
  • إدارة النماذج والاستبيانات
  • نظام مراقبة الجودة
  • إدارة الشراكات والموردين
  • النظام المالي المتقدم

🗄️ التوسعة المتقدمة لنموذج قاعدة البيانات


📦 المجموعة الجديدة: إدارة الفرق والتعاون (Teams & Collaboration)

20.1 teams

الفرق داخل المؤسسات.

العمودالنوعالقيدالوصف
team_idUUIDPRIMARY KEYالمعرف الفريد للفريق
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب الفريق
nameVARCHAR(100)NOT NULLاسم الفريق
descriptionTEXT–وصف الفريق
departmentVARCHAR(100)–القسم التابع له الفريق
team_lead_idUUIDFOREIGN KEY (team_lead_id)قائد الفريق (من جدول المستخدمين)
statusVARCHAR(20)NOT NULL, DEFAULT 'active'حالة الفريق (active, inactive)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • teams (N) — (1) tenants
  • teams (N) — (1) users (كقائد)

20.2 team_members

عضوية الفرق.

العمودالنوعالقيدالوصف
member_idUUIDPRIMARY KEYالمعرف الفريد
team_idUUIDFOREIGN KEY (team_id)الفريق المعني
user_idUUIDFOREIGN KEY (user_id)العضو
role_in_teamVARCHAR(50)–دور العضو في الفريق (member, coordinator, lead)
joined_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الانضمام
left_atTIMESTAMP–تاريخ المغادرة (إن وجد)

العلاقات:

  • team_members (N) — (1) teams
  • team_members (N) — (1) users

20.3 team_activities

سجل أنشطة الفريق.

العمودالنوعالقيدالوصف
activity_idUUIDPRIMARY KEYالمعرف الفريد
team_idUUIDFOREIGN KEY (team_id)الفريق المعني
user_idUUIDFOREIGN KEY (user_id)المستخدم المنفذ للنشاط
activity_typeVARCHAR(50)NOT NULLنوع النشاط (meeting, workshop, training, review)
titleVARCHAR(255)NOT NULLعنوان النشاط
descriptionTEXT–وصف النشاط
start_timeTIMESTAMPNOT NULLوقت البدء
end_timeTIMESTAMP–وقت الانتهاء
locationVARCHAR(255)–الموقع (مادي أو افتراضي)
attendanceJSONB–قائمة الحضور
outcomeTEXT–نتائج النشاط
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • team_activities (N) — (1) teams
  • team_activities (N) — (1) users

📦 المجموعة الجديدة: نظام المكافآت والحوافز (Rewards & Incentives)

21.1 reward_programs

برامج المكافآت والحوافز.

العمودالنوعالقيدالوصف
program_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب البرنامج
nameVARCHAR(100)NOT NULLاسم البرنامج
descriptionTEXT–وصف البرنامج
typeVARCHAR(30)NOT NULLنوع البرنامج (points, badges, levels, cashback)
start_dateDATENOT NULLتاريخ البدء
end_dateDATE–تاريخ الانتهاء
is_activeBOOLEANNOT NULL, DEFAULT trueهل البرنامج مفعل؟
criteriaJSONB–معايير الاستحقاق (شرط الحصول على المكافأة)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • reward_programs (N) — (1) tenants

21.2 user_rewards

المكافآت المكتسبة من قبل المستخدمين.

العمودالنوعالقيدالوصف
reward_idUUIDPRIMARY KEYالمعرف الفريد
program_idUUIDFOREIGN KEY (program_id)البرنامج المرتبط
user_idUUIDFOREIGN KEY (user_id)المستخدم الحاصل على المكافأة
points_earnedINTEGERDEFAULT 0عدد النقاط المكتسبة
points_usedINTEGERDEFAULT 0عدد النقاط المستخدمة
badge_nameVARCHAR(100)–اسم الشارة (إن وجدت)
level_achievedINTEGER–المستوى المحقق (إن وجد)
achieved_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الحصول على المكافأة
expires_atTIMESTAMP–تاريخ انتهاء صلاحية المكافأة (إن وجد)
redeemed_atTIMESTAMP–تاريخ استبدال المكافأة (إن وجد)

العلاقات:

  • user_rewards (N) — (1) reward_programs
  • user_rewards (N) — (1) users

21.3 reward_transactions

سجل حركات النقاط والمكافآت.

العمودالنوعالقيدالوصف
transaction_idUUIDPRIMARY KEYالمعرف الفريد
reward_idUUIDFOREIGN KEY (reward_id)المكافأة المرتبطة
user_idUUIDFOREIGN KEY (user_id)المستخدم المعني
transaction_typeVARCHAR(20)NOT NULLنوع الحركة (earn, spend, expire, adjust)
amountINTEGERNOT NULLعدد النقاط (موجب للكسب، سالب للإنفاق)
balance_afterINTEGERNOT NULLالرصيد بعد الحركة
reasonVARCHAR(255)–سبب الحركة
reference_idUUID–معرف المرجع (مثل معرف الطلب أو المهمة)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الحركة

العلاقات:

  • reward_transactions (N) — (1) reward_programs
  • reward_transactions (N) — (1) users

📦 المجموعة الجديدة: إدارة العقود والاتفاقيات (Contracts & Agreements)

22.1 contracts

العقود والاتفاقيات بين المنصة والعملاء/الموردين.

العمودالنوعالقيدالوصف
contract_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر الطرف في العقد
counterparty_idUUIDFOREIGN KEY (counterparty_id)الطرف الآخر (من جدول العملاء أو الموردين)
contract_numberVARCHAR(50)UNIQUE, NOT NULLرقم العقد الفريد
titleVARCHAR(255)NOT NULLعنوان العقد
descriptionTEXT–وصف العقد
typeVARCHAR(30)NOT NULLنوع العقد (subscription, service, partnership, nda)
statusVARCHAR(20)NOT NULLحالة العقد (draft, active, expired, terminated)
start_dateDATENOT NULLتاريخ البداية
end_dateDATE–تاريخ النهاية
auto_renewBOOLEANDEFAULT falseهل يتم التجديد تلقائياً؟
renewal_notice_daysINTEGER–عدد أيام الإشعار قبل التجديد
termsTEXT–شروط وأحكام العقد
payment_termsTEXT–شروط الدفع
total_valueDECIMAL(12,2)–القيمة الإجمالية للعقد
currencyCHAR(3)DEFAULT 'USD'العملة
document_idUUIDFOREIGN KEY (document_id)المستند المرتبط (من جدول المستندات)
created_byUUIDFOREIGN KEY (created_by)المستخدم المنشئ
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • contracts (N) — (1) tenants
  • contracts (N) — (1) customers (كطرف مقابل)
  • contracts (N) — (1) documents
  • contracts (N) — (1) users (كمنشئ)

22.2 contract_amendments

تعديلات وإضافات على العقود.

العمودالنوعالقيدالوصف
amendment_idUUIDPRIMARY KEYالمعرف الفريد
contract_idUUIDFOREIGN KEY (contract_id)العقد المرتبط
amendment_numberINTEGERNOT NULLرقم التعديل (1, 2, 3…)
descriptionTEXTNOT NULLوصف التعديل
changesJSONBNOT NULLالتغييرات المفصلة (الحقول المتغيرة)
effective_dateDATENOT NULLتاريخ سريان التعديل
approved_byUUIDFOREIGN KEY (approved_by)المعتمد
approved_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الاعتماد
document_idUUIDFOREIGN KEY (document_id)المستند المرتبط بالتعديل

العلاقات:

  • contract_amendments (N) — (1) contracts
  • contract_amendments (N) — (1) users (كمعتمد)
  • contract_amendments (N) — (1) documents

📦 المجموعة الجديدة: نظام التوصيات الذكي (Recommendation Engine)

23.1 user_preferences

تفضيلات المستخدمين لنظام التوصيات.

العمودالنوعالقيدالوصف
preference_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المستخدم المعني
preference_typeVARCHAR(50)NOT NULLنوع التفضيل (category, price_range, feature)
preference_valueVARCHAR(255)NOT NULLقيمة التفضيل
weightDECIMAL(3,2)DEFAULT 1.0وزن التفضيل (الأهمية)
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • user_preferences (N) — (1) users

23.2 user_behavior

سجل سلوك المستخدمين للتحليل والتوصيات.

العمودالنوعالقيدالوصف
behavior_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المستخدم المعني
behavior_typeVARCHAR(30)NOT NULLنوع السلوك (view, click, purchase, rate, favorite)
target_typeVARCHAR(30)NOT NULLنوع المستهدف (product, service, article, feature)
target_idUUIDNOT NULLالمعرف الفريد للمستهدف
valueDECIMAL(5,2)–قيمة السلوك (مثل التقييم من 1-5)
session_idUUID–معرف الجلسة (لربط السلوكيات في جلسة واحدة)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ السلوك

العلاقات:

  • user_behavior (N) — (1) users

23.3 recommendations

التوصيات التي تم إنشاؤها للمستخدمين.

العمودالنوعالقيدالوصف
recommendation_idUUIDPRIMARY KEYالمعرف الفريد
user_idUUIDFOREIGN KEY (user_id)المستخدم المستهدف
recommended_typeVARCHAR(30)NOT NULLنوع التوصية (product, service, article)
recommended_idUUIDNOT NULLالمعرف الفريد للموصى به
scoreDECIMAL(5,2)NOT NULLدرجة التوصية (0-1)
reasonVARCHAR(255)–سبب التوصية (مثل “بناءً على مشترياتك السابقة”)
model_usedVARCHAR(50)–النموذج المستخدم (collaborative, content-based, hybrid)
is_seenBOOLEANDEFAULT falseهل شاهد المستخدم التوصية؟
is_clickedBOOLEANDEFAULT falseهل نقر المستخدم على التوصية؟
is_acceptedBOOLEANDEFAULT falseهل قبل المستخدم التوصية (مثل شراء المنتج)؟
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
expires_atTIMESTAMP–تاريخ انتهاء صلاحية التوصية

العلاقات:

  • recommendations (N) — (1) users

23.4 recommendation_models

نماذج التوصيات المستخدمة.

العمودالنوعالقيدالوصف
model_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب النموذج (أو NULL للعمومي)
nameVARCHAR(100)NOT NULLاسم النموذج
typeVARCHAR(30)NOT NULLنوع النموذج (collaborative, content_based, hybrid, deep_learning)
parametersJSONB–معايير النموذج (عدد الجيران، معدل التعلم، الخ)
accuracy_scoreDECIMAL(5,4)–درجة دقة النموذج
training_dateTIMESTAMP–تاريخ آخر تدريب
is_activeBOOLEANNOT NULL, DEFAULT trueهل النموذج مفعل؟
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • recommendation_models (N) — (1) tenants

📦 المجموعة الجديدة: إدارة البنية التحتية والتطبيقات (Infrastructure & Apps)

24.1 servers

سجل الخوادم والبنية التحتية.

العمودالنوعالقيدالوصف
server_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المالك (أو NULL للخوادم العامة)
nameVARCHAR(100)NOT NULLاسم الخادم
hostnameVARCHAR(255)UNIQUE, NOT NULLاسم المضيف
ip_addressINETNOT NULLعنوان IP
environmentVARCHAR(20)NOT NULLالبيئة (production, staging, development)
os_typeVARCHAR(50)NOT NULLنظام التشغيل
instance_typeVARCHAR(50)–نوع المثيل (t2.micro, c5.large)
cpu_coresINTEGER–عدد نوى المعالج
ram_gbDECIMAL(5,2)–حجم الذاكرة (GB)
storage_gbDECIMAL(5,2)–حجم التخزين (GB)
statusVARCHAR(20)NOT NULLحالة الخادم (running, stopped, maintenance)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • servers (N) — (1) tenants

24.2 services

الخدمات المصغرة والتطبيقات.

العمودالنوعالقيدالوصف
service_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المالك (أو NULL للخدمات العامة)
nameVARCHAR(100)NOT NULLاسم الخدمة
descriptionTEXT–وصف الخدمة
typeVARCHAR(30)NOT NULLنوع الخدمة (microservice, api, database, cache)
repo_urlTEXT–رابط المستودع
docker_imageVARCHAR(255)–صورة Docker
health_check_endpointVARCHAR(255)–نقطة التحقق الصحي
versionVARCHAR(20)–الإصدار الحالي
statusVARCHAR(20)NOT NULLحالة الخدمة (healthy, degraded, down)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • services (N) — (1) tenants

24.3 service_instances

مثيلات الخدمات العاملة على الخوادم.

العمودالنوعالقيدالوصف
instance_idUUIDPRIMARY KEYالمعرف الفريد
service_idUUIDFOREIGN KEY (service_id)الخدمة المرتبطة
server_idUUIDFOREIGN KEY (server_id)الخادم المستضيف
portINTEGERNOT NULLالمنفذ المستخدم
container_idVARCHAR(100)–معرف الحاوية (Docker)
replicasINTEGERDEFAULT 1عدد النسخ العاملة
statusVARCHAR(20)NOT NULLحالة المثيل (running, stopped, failed)
last_deployed_atTIMESTAMP–تاريخ آخر نشر
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • service_instances (N) — (1) services
  • service_instances (N) — (1) servers

24.4 deployments

سجل عمليات النشر.

العمودالنوعالقيدالوصف
deployment_idUUIDPRIMARY KEYالمعرف الفريد
service_idUUIDFOREIGN KEY (service_id)الخدمة المنشورة
deployed_byUUIDFOREIGN KEY (deployed_by)المستخدم المنفذ للنشر
versionVARCHAR(20)NOT NULLالإصدار المنشور
strategyVARCHAR(30)NOT NULLاستراتيجية النشر (canary, blue_green, rolling)
statusVARCHAR(20)NOT NULLحالة النشر (success, failed, rollback)
commit_hashVARCHAR(40)–هاش الكوميت في Git
ci_pipeline_urlTEXT–رابط خط أنابيب CI
duration_secondsINTEGER–مدة النشر (بالثواني)
health_check_passedBOOLEAN–هل اجتاز الفحص الصحي؟
notesTEXT–ملاحظات إضافية
deployed_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ النشر

العلاقات:

  • deployments (N) — (1) services
  • deployments (N) — (1) users (كمنفذ)

📦 المجموعة الجديدة: نظام الحوكمة والتصويت (Governance & Voting)

25.1 governance_proposals

مقترحات الحوكمة الذاتية.

العمودالنوعالقيدالوصف
proposal_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المعني (أو NULL للعمومي)
proposed_byUUIDFOREIGN KEY (proposed_by)المستخدم مقدم الاقتراح
titleVARCHAR(255)NOT NULLعنوان الاقتراح
descriptionTEXTNOT NULLوصف الاقتراح
categoryVARCHAR(50)NOT NULLتصنيف الاقتراح (feature, policy, governance, budget)
statusVARCHAR(20)NOT NULLحالة الاقتراح (draft, reviewing, voting, approved, rejected, implemented)
voting_start_dateTIMESTAMP–تاريخ بدء التصويت
voting_end_dateTIMESTAMP–تاريخ انتهاء التصويت
quorumINTEGER–النصاب المطلوب
approval_percentageDECIMAL(5,2)–نسبة الموافقة المطلوبة
resultVARCHAR(20)–نتيجة التصويت (approved, rejected)
implemented_atTIMESTAMP–تاريخ التنفيذ
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • governance_proposals (N) — (1) tenants
  • governance_proposals (N) — (1) users (كمقدم)

25.2 votes

أصوات المستخدمين على المقترحات.

العمودالنوعالقيدالوصف
vote_idUUIDPRIMARY KEYالمعرف الفريد
proposal_idUUIDFOREIGN KEY (proposal_id)الاقتراح المرتبط
user_idUUIDFOREIGN KEY (user_id)المستخدم المصوت
voting_powerDECIMAL(5,2)DEFAULT 1.0قوة التصويت (مرجحة حسب المشاركة)
choiceVARCHAR(10)NOT NULLالاختيار (yes, no, abstain)
commentTEXT–تعليق إضافي
voted_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ التصويت

العلاقات:

  • votes (N) — (1) governance_proposals
  • votes (N) — (1) users

25.3 governance_delegations

تفويض التصويت لمستخدم آخر.

العمودالنوعالقيدالوصف
delegation_idUUIDPRIMARY KEYالمعرف الفريد
proposal_idUUIDFOREIGN KEY (proposal_id)الاقتراح المرتبط (أو NULL للتفويض العام)
delegator_idUUIDFOREIGN KEY (delegator_id)المفوض (الذي يمنح الصلاحية)
delegate_idUUIDFOREIGN KEY (delegate_id)المفوض إليه (الذي يحصل على الصلاحية)
scopeVARCHAR(50)NOT NULLنطاق التفويض (all, specific_category)
is_activeBOOLEANNOT NULL, DEFAULT trueهل التفويض فعال؟
expires_atTIMESTAMP–تاريخ انتهاء التفويض
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • governance_delegations (N) — (1) governance_proposals
  • governance_delegations (N) — (1) users (كمفوض)
  • governance_delegations (N) — (1) users (كمفوض إليه)

📦 المجموعة الجديدة: إدارة النماذج والاستبيانات (Forms & Surveys)

26.1 forms

النماذج والاستبيانات.

العمودالنوعالقيدالوصف
form_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب النموذج
created_byUUIDFOREIGN KEY (created_by)المستخدم المنشئ
titleVARCHAR(255)NOT NULLعنوان النموذج
descriptionTEXT–وصف النموذج
purposeVARCHAR(50)NOT NULLالغرض من النموذج (survey, feedback, application, evaluation)
statusVARCHAR(20)NOT NULLحالة النموذج (draft, published, closed)
is_publicBOOLEANDEFAULT falseهل النموذج عام؟
start_dateDATE–تاريخ بدء الفتح
end_dateDATE–تاريخ إغلاق النموذج
max_responsesINTEGER–الحد الأقصى للردود
settingsJSONB–إعدادات إضافية (إشعارات، صلاحيات)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • forms (N) — (1) tenants
  • forms (N) — (1) users (كمنشئ)

26.2 form_fields

حقول النماذج.

العمودالنوعالقيدالوصف
field_idUUIDPRIMARY KEYالمعرف الفريد
form_idUUIDFOREIGN KEY (form_id)النموذج المرتبط
field_orderINTEGERNOT NULLترتيب الحقل
labelVARCHAR(255)NOT NULLتسمية الحقل
field_typeVARCHAR(30)NOT NULLنوع الحقل (text, number, email, select, checkbox, radio, textarea)
is_requiredBOOLEANDEFAULT falseهل الحقل مطلوب؟
optionsJSONB–خيارات (للـ select, checkbox, radio)
validation_rulesJSONB–قواعد التحقق (min, max, regex)
help_textTEXT–نص مساعد
default_valueTEXT–قيمة افتراضية
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • form_fields (N) — (1) forms

26.3 form_responses

ردود النماذج.

العمودالنوعالقيدالوصف
response_idUUIDPRIMARY KEYالمعرف الفريد
form_idUUIDFOREIGN KEY (form_id)النموذج المرتبط
user_idUUIDFOREIGN KEY (user_id)المستخدم المقدم (أو NULL للمجهول)
submitted_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ التقديم
ip_addressINET–عنوان IP عند التقديم
user_agentTEXT–متصفح/جهاز المستخدم

العلاقات:

  • form_responses (N) — (1) forms
  • form_responses (N) — (1) users

26.4 form_response_values

قيم حقول النماذج المقدمة.

العمودالنوعالقيدالوصف
value_idUUIDPRIMARY KEYالمعرف الفريد
response_idUUIDFOREIGN KEY (response_id)الرد المرتبط
field_idUUIDFOREIGN KEY (field_id)الحقل المرتبط
valueTEXTNOT NULLالقيمة المقدمة (كنص، وتُحول حسب نوع الحقل)
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • form_response_values (N) — (1) form_responses
  • form_response_values (N) — (1) form_fields

📦 المجموعة الجديدة: نظام مراقبة الجودة (Quality Assurance)

27.1 quality_checks

فحوصات الجودة الدورية.

العمودالنوعالقيدالوصف
check_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المعني (أو NULL للفحوصات العامة)
nameVARCHAR(100)NOT NULLاسم الفحص
descriptionTEXT–وصف الفحص
categoryVARCHAR(50)NOT NULLتصنيف الفحص (security, performance, compliance, code_quality)
check_typeVARCHAR(30)NOT NULLنوع الفحص (automated, manual, scheduled)
criteriaJSONB–معايير النجاح
frequencyVARCHAR(20)–التكرار (daily, weekly, monthly)
is_activeBOOLEANNOT NULL, DEFAULT trueهل الفحص مفعل؟
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • quality_checks (N) — (1) tenants

27.2 quality_results

نتائج فحوصات الجودة.

العمودالنوعالقيدالوصف
result_idUUIDPRIMARY KEYالمعرف الفريد
check_idUUIDFOREIGN KEY (check_id)الفحص المرتبط
performed_byUUIDFOREIGN KEY (performed_by)المستخدم المنفذ (أو NULL للتلقائي)
statusVARCHAR(20)NOT NULLحالة النتيجة (passed, failed, warning)
scoreDECIMAL(5,2)–درجة النتيجة (0-100)
detailsJSONB–تفاصيل النتيجة (الأخطاء، التحذيرات)
performed_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ التنفيذ

العلاقات:

  • quality_results (N) — (1) quality_checks
  • quality_results (N) — (1) users (كمنفذ)

27.3 quality_issues

مشاكل الجودة المكتشفة.

العمودالنوعالقيدالوصف
issue_idUUIDPRIMARY KEYالمعرف الفريد
result_idUUIDFOREIGN KEY (result_id)النتيجة المرتبطة
assigned_toUUIDFOREIGN KEY (assigned_to)المستخدم المسند إليه المشكلة
titleVARCHAR(255)NOT NULLعنوان المشكلة
descriptionTEXTNOT NULLوصف المشكلة
severityVARCHAR(20)NOT NULLدرجة الخطورة (critical, high, medium, low)
statusVARCHAR(20)NOT NULLحالة المشكلة (open, in_progress, resolved, closed)
resolutionTEXT–كيفية الحل
resolved_atTIMESTAMP–تاريخ الحل
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • quality_issues (N) — (1) quality_results
  • quality_issues (N) — (1) users (كمسند إليه)

📦 المجموعة الجديدة: إدارة الشراكات والموردين (Partnerships & Vendors)

28.1 partners

الشركاء والموردون.

العمودالنوعالقيدالوصف
partner_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب الشراكة
nameVARCHAR(255)NOT NULLاسم الشريك
typeVARCHAR(30)NOT NULLنوع الشريك (vendor, reseller, affiliate, technology)
contact_nameVARCHAR(255)–اسم جهة الاتصال
emailVARCHAR(255)–البريد الإلكتروني
phoneVARCHAR(20)–رقم الهاتف
websiteVARCHAR(255)–الموقع الإلكتروني
tax_numberVARCHAR(100)–الرقم الضريبي
statusVARCHAR(20)NOT NULLحالة الشريك (active, inactive, pending)
tierVARCHAR(20)–مستوى الشريك (gold, silver, bronze)
notesTEXT–ملاحظات إضافية
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • partners (N) — (1) tenants

28.2 partner_agreements

اتفاقيات الشراكة.

العمودالنوعالقيدالوصف
agreement_idUUIDPRIMARY KEYالمعرف الفريد
partner_idUUIDFOREIGN KEY (partner_id)الشريك المرتبط
contract_idUUIDFOREIGN KEY (contract_id)العقد المرتبط
commission_rateDECIMAL(5,2)–نسبة العمولة
referral_feeDECIMAL(10,2)–رسوم الإحالة
exclusiveBOOLEANDEFAULT falseهل الشراكة حصرية؟
territoryJSONB–المنطقة الجغرافية للشراكة
start_dateDATENOT NULLتاريخ البداية
end_dateDATE–تاريخ النهاية
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • partner_agreements (N) — (1) partners
  • partner_agreements (N) — (1) contracts

28.3 partner_transactions

المعاملات المالية مع الشركاء.

العمودالنوعالقيدالوصف
transaction_idUUIDPRIMARY KEYالمعرف الفريد
partner_idUUIDFOREIGN KEY (partner_id)الشريك المعني
agreement_idUUIDFOREIGN KEY (agreement_id)اتفاقية الشراكة
typeVARCHAR(30)NOT NULLنوع المعاملة (commission, referral_fee, invoice_payment)
amountDECIMAL(10,2)NOT NULLالمبلغ
currencyCHAR(3)DEFAULT 'USD'العملة
descriptionTEXT–وصف المعاملة
statusVARCHAR(20)NOT NULLحالة المعاملة (pending, paid, failed)
reference_idUUID–معرف المرجع (مثل معرف الطلب)
paid_atTIMESTAMP–تاريخ الدفع
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • partner_transactions (N) — (1) partners
  • partner_transactions (N) — (1) partner_agreements

📦 المجموعة الجديدة: النظام المالي المتقدم (Advanced Finance)

29.1 chart_of_accounts

دليل الحسابات المحاسبي.

العمودالنوعالقيدالوصف
account_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب الحساب
account_codeVARCHAR(20)NOT NULLكود الحساب
account_nameVARCHAR(255)NOT NULLاسم الحساب
account_typeVARCHAR(30)NOT NULLنوع الحساب (asset, liability, equity, revenue, expense)
parent_account_idUUIDFOREIGN KEY (parent_account_id)الحساب الأب (للتسلسل الهرمي)
is_activeBOOLEANNOT NULL, DEFAULT trueهل الحساب مفعل؟
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • chart_of_accounts (N) — (1) tenants
  • chart_of_accounts (N) — (1) chart_of_accounts (كأب)

29.2 journal_entries

قيد اليومية المحاسبي.

العمودالنوعالقيدالوصف
entry_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المعني
journal_numberVARCHAR(50)UNIQUE, NOT NULLرقم القيد
descriptionTEXT–وصف القيد
reference_typeVARCHAR(50)–نوع المرجع (invoice, payment, expense)
reference_idUUID–معرف المرجع
posting_dateDATENOT NULLتاريخ الترحيل
statusVARCHAR(20)NOT NULLحالة القيد (draft, posted, reversed)
created_byUUIDFOREIGN KEY (created_by)المستخدم المنشئ
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • journal_entries (N) — (1) tenants
  • journal_entries (N) — (1) users (كمنشئ)

29.3 journal_lines

تفاصيل قيد اليومية (حركات المدين والدائن).

العمودالنوعالقيدالوصف
line_idUUIDPRIMARY KEYالمعرف الفريد
entry_idUUIDFOREIGN KEY (entry_id)القيد المرتبط
account_idUUIDFOREIGN KEY (account_id)الحساب المعني
debitDECIMAL(12,2)DEFAULT 0مبلغ المدين
creditDECIMAL(12,2)DEFAULT 0مبلغ الدائن
currencyCHAR(3)DEFAULT 'USD'العملة
descriptionTEXT–وصف الحركة
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • journal_lines (N) — (1) journal_entries
  • journal_lines (N) — (1) chart_of_accounts

29.4 budgets

الميزانيات المخططة.

العمودالنوعالقيدالوصف
budget_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب الميزانية
account_idUUIDFOREIGN KEY (account_id)الحساب المعني
fiscal_yearINTEGERNOT NULLالسنة المالية
periodVARCHAR(20)NOT NULLالفترة (monthly, quarterly, yearly)
amountDECIMAL(12,2)NOT NULLالمبلغ المخطط
actual_amountDECIMAL(12,2)DEFAULT 0المبلغ الفعلي
currencyCHAR(3)DEFAULT 'USD'العملة
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • budgets (N) — (1) tenants
  • budgets (N) — (1) chart_of_accounts

29.5 expense_reports

تقارير المصروفات.

العمودالنوعالقيدالوصف
expense_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المعني
submitted_byUUIDFOREIGN KEY (submitted_by)المستخدم مقدم التقرير
approved_byUUIDFOREIGN KEY (approved_by)المستخدم المعتمد
titleVARCHAR(255)NOT NULLعنوان التقرير
descriptionTEXT–وصف المصروفات
total_amountDECIMAL(12,2)NOT NULLالمبلغ الإجمالي
currencyCHAR(3)DEFAULT 'USD'العملة
statusVARCHAR(20)NOT NULLحالة التقرير (draft, pending, approved, rejected, paid)
expense_dateDATENOT NULLتاريخ المصروف
submitted_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ التقديم
approved_atTIMESTAMP–تاريخ الاعتماد
paid_atTIMESTAMP–تاريخ الدفع
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • expense_reports (N) — (1) tenants
  • expense_reports (N) — (1) users (كمقدم)
  • expense_reports (N) — (1) users (كمعتمد)

29.6 expense_items

تفاصيل بنود المصروفات.

العمودالنوعالقيدالوصف
item_idUUIDPRIMARY KEYالمعرف الفريد
expense_idUUIDFOREIGN KEY (expense_id)تقرير المصروفات المرتبط
account_idUUIDFOREIGN KEY (account_id)الحساب المحاسبي
descriptionTEXTNOT NULLوصف البند
amountDECIMAL(12,2)NOT NULLالمبلغ
currencyCHAR(3)DEFAULT 'USD'العملة
quantityINTEGERDEFAULT 1الكمية
unit_priceDECIMAL(10,2)–سعر الوحدة
receipt_urlTEXT–رابط إيصال الصرف
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • expense_items (N) — (1) expense_reports
  • expense_items (N) — (1) chart_of_accounts

📦 المجموعة الجديدة: التكامل مع الأنظمة الخارجية (External Integrations)

30.1 external_systems

الأنظمة الخارجية المتكاملة.

العمودالنوعالقيدالوصف
system_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر صاحب التكامل
nameVARCHAR(100)NOT NULLاسم النظام الخارجي
providerVARCHAR(50)NOT NULLالمزود (stripe, salesforce, hubspot, sap)
api_base_urlTEXTNOT NULLرابط الـ API الأساسي
auth_typeVARCHAR(30)NOT NULLنوع المصادقة (oauth2, api_key, basic)
auth_configJSONB–إعدادات المصادقة (مشفراً)
statusVARCHAR(20)NOT NULLحالة التكامل (active, inactive, error)
sync_frequencyVARCHAR(20)–تواتر المزامنة (real_time, hourly, daily)
last_sync_atTIMESTAMP–تاريخ آخر مزامنة
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • external_systems (N) — (1) tenants

30.2 sync_jobs

وظائف المزامنة مع الأنظمة الخارجية.

العمودالنوعالقيدالوصف
job_idUUIDPRIMARY KEYالمعرف الفريد
system_idUUIDFOREIGN KEY (system_id)النظام المرتبط
directionVARCHAR(20)NOT NULLاتجاه المزامنة (inbound, outbound)
entity_typeVARCHAR(50)NOT NULLنوع الكيان (users, products, orders, invoices)
statusVARCHAR(20)NOT NULLحالة المزامنة (pending, running, success, failed)
records_processedINTEGERDEFAULT 0عدد السجلات المعالجة
records_successfulINTEGERDEFAULT 0عدد السجلات الناجحة
records_failedINTEGERDEFAULT 0عدد السجلات الفاشلة
error_logJSONB–سجل الأخطاء التفصيلي
started_atTIMESTAMP–تاريخ البدء
completed_atTIMESTAMP–تاريخ الانتهاء
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء

العلاقات:

  • sync_jobs (N) — (1) external_systems

30.3 api_rate_limits

معدلات استخدام API.

العمودالنوعالقيدالوصف
limit_idUUIDPRIMARY KEYالمعرف الفريد
tenant_idUUIDFOREIGN KEY (tenant_id)المستأجر المعني
api_key_idUUIDFOREIGN KEY (api_key_id)مفتاح API المرتبط
endpointVARCHAR(255)NOT NULLنقطة النهاية (endpoint)
requests_countINTEGERNOT NULL, DEFAULT 0عدد الطلبات في الفترة الحالية
limit_per_periodINTEGERNOT NULLالحد الأقصى لكل فترة
period_minutesINTEGERNOT NULL, DEFAULT 60مدة الفترة (بالدقائق)
reset_atTIMESTAMPNOT NULLوقت إعادة تعيين العداد
created_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ الإنشاء
updated_atTIMESTAMPNOT NULL, DEFAULT CURRENT_TIMESTAMPتاريخ آخر تحديث

العلاقات:

  • api_rate_limits (N) — (1) tenants
  • api_rate_limits (N) — (1) api_keys

📊 ملخص الجداول الجديدة المضافة في هذه التوسعة

المجموعةعدد الجداول الجديدةالأرقام التسلسلية
إدارة الفرق والتعاون (Teams & Collaboration)320.1 – 20.3
نظام المكافآت والحوافز (Rewards & Incentives)321.1 – 21.3
إدارة العقود والاتفاقيات (Contracts & Agreements)222.1 – 22.2
نظام التوصيات الذكي (Recommendation Engine)423.1 – 23.4
إدارة البنية التحتية والتطبيقات (Infrastructure & Apps)424.1 – 24.4
نظام الحوكمة والتصويت (Governance & Voting)325.1 – 25.3
إدارة النماذج والاستبيانات (Forms & Surveys)426.1 – 26.4
نظام مراقبة الجودة (Quality Assurance)327.1 – 27.3
إدارة الشراكات والموردين (Partnerships & Vendors)328.1 – 28.3
النظام المالي المتقدم (Advanced Finance)629.1 – 29.6
التكامل مع الأنظمة الخارجية (External Integrations)330.1 – 30.3
المجموع الكلي للجداول الجديدة38 جدولاً–

🎯 العدد النهائي للجداول

المرحلةعدد الجداول
القاعدة الأساسية (الجزء الأول)22 جدولاً
التوسعة الأولى (الجزء الثاني)31 جدولاً
التوسعة المتقدمة (الجزء الثالث – هذه التوسعة)38 جدولاً
المجموع الكلي91 جدولاً

🧩 العلاقات الشاملة بين جميع المجموعات


💡 توصيات تنفيذية إضافية

1. استراتيجية التقسيم (Partitioning)

قم بتقسيم الجداول التالية حسب التاريخ لتحسين الأداء:

  • user_events
  • audit_logs
  • user_behavior
  • quality_results
  • sync_jobs
  • form_responses

2. استراتيجية الأرشفة (Archiving)

أنشئ جداول أرشيفية للبيانات الأقدم من:

  • 6 أشهر: user_events, user_behavior
  • سنة واحدة: audit_logs, quality_results
  • سنتان: journal_entries, partner_transactions

3. الفهارس الموصى بها (Indexes)

أضف فهارس مركبة على:

  • (tenant_id, status, created_at) للجداول التي تُصفى كثيراً
  • (user_id, behavior_type, created_at) لتحليل السلوك
  • (proposal_id, user_id) للتصويت
  • (partner_id, agreement_id) للشراكات

4. استخدام JSONB بشكل فعال

استخدم JSONB لتخزين:

  • الإعدادات الديناميكية (settings, preferences)
  • البيانات غير المنتظمة (metadata, extra_data)
  • سجلات التغيير (old_values, new_values)
  • معايير الفحوصات (criteria, parameters)

5. الأمان على مستوى الصف (RLS)

طبّق Row Level Security في PostgreSQL لعزل البيانات بين المستأجرين على جميع الجداول التي تحتوي على tenant_id.


هذا النموذج الآن يغطي جميع جوانب منصة SaaS المتكاملة من الناحية التشغيلية والإدارية والتقنية والمالية، مع إمكانية التوسع المستقبلي حسب احتياجات العمل. 🚀

Scroll to Top

🤖 موصى به لك بناءً على اهتماماتك