تخطَّ إلى المحتوى

مرجع الجداول

هذه الصفحة مولّدة من المخطط الفعلي للقاعدة (information_schema وpg_constraint). القواعد المهنية — القيم المسموح بها، ونوافذ التواريخ، وغياب الإشارة الذاتية — هي قيود CHECK: ترفضها القاعدة حتى لو أخطأ الكود. الطوابع الزمنية بمنطقة زمنية (timestamptz)، والمبالغ بالسنتيم، والإعدادات بصيغة jsonb.

المستوى الأول من التصنيف — « المجال الرئيسي ». ينتمي المنتج وجوبًا إلى مجال.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
title_ar نص لا — العنوان بالعربية.
slug نص لا — معرّف URL، فريد.
subtitle_ar نص نعم — العنوان الفرعي بالعربية.
description_ar نص طويل نعم — الوصف بالعربية.
color نص نعم — علامة بصرية.
position عدد صحيح لا 0 ترتيب العرض.
active منطقي لا true يُخفى من الواجهة العامة إن كان خاطئًا.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • فريد: slug

sub_themes — المواضيع الفرعية

Section titled “sub_themes — المواضيع الفرعية”

المستوى الثاني من التصنيف — خزّان البيع المتقاطع. اختياري للمسار أو المستوى.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
theme_id عدد صحيح لا — المجال (إلزامي).
title_ar نص لا — العنوان بالعربية.
slug نص لا — معرّف URL، فريد.
description_ar نص طويل نعم — الوصف بالعربية.
position عدد صحيح لا 0 ترتيب العرض.
active منطقي لا true يُخفى من الواجهة العامة إن كان خاطئًا.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • فريد: slug
  • theme_id → themes.id (حذف متسلسل)

كل ما يُباع: مقال، كتاب صوتي، برنامج، مسار، حزمة، مستوى. المنتجات المركّبة ليست جداول مستقلة.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
title_ar نص لا — العنوان بالعربية.
slug نص لا — معرّف URL، فريد.
subtitle_ar نص نعم — العنوان الفرعي بالعربية.
description_ar نص طويل نعم — الوصف بالعربية.
author_ar نص نعم — المؤلف بالعربية.
cover_path نص نعم — الصورة (مسار خاص).
theme_id عدد صحيح لا — المجال (إلزامي).
sub_theme_id عدد صحيح نعم — الموضوع الفرعي (اختياري).
position عدد صحيح لا 0 ترتيب العرض.
kind نص لا — النوع على سلّم ترقية العرض.
is_offer منطقي لا true قابل للبيع بشكل منفصل.
is_featured منطقي لا false مميّز في الصفحة الرئيسية.
price_base عدد صحيح نعم — السعر الأساسي، بالسنتيم.
price_promo عدد صحيح نعم — السعر الترويجي، بالسنتيم.
promo_starts_at تاريخ ووقت (بمنطقة زمنية) نعم — بداية النافذة الترويجية.
promo_ends_at تاريخ ووقت (بمنطقة زمنية) نعم — نهاية النافذة الترويجية.
currency نص لا ‘MAD’ العملة (ISO 4217).
status نص لا ‘draft’ دورة الحياة.
published_at تاريخ ووقت (بمنطقة زمنية) نعم — تاريخ النشر.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • kind ∈ { article, collection, livre, programme, parcours, pack_specialise, pack_global, presentiel, podcast }
  • CHECK ((price_promo IS NULL) OR (price_base IS NULL) OR (price_promo <= price_base))
  • CHECK ((promo_starts_at IS NULL) OR (promo_ends_at IS NULL) OR (promo_ends_at > promo_starts_at))
  • فريد: slug
  • status ∈ { draft, published, archived }
  • sub_theme_id → sub_themes.id (يُفرَّغ عند الحذف)
  • theme_id → themes.id

شجرة انعكاسية: منتج يحتوي منتجات أخرى، بترتيب معيّن. يمكن أن يكون للمنتج الواحد عدة أصول.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
parent_product_id عدد صحيح لا — المنتج الحاوي.
child_product_id عدد صحيح لا — المنتج المحتوى.
position عدد صحيح لا 0 ترتيب العرض.

القيود

  • child_product_id → products.id (حذف متسلسل)
  • parent_product_id ≠ child_product_id — لا إشارة ذاتية
  • فريد: parent_product_id, child_product_id
  • parent_product_id → products.id (حذف متسلسل)

المقاطع القابلة للاستهلاك في منتج — لا تُباع منفصلة أبدًا، ولذلك بلا سعر.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
product_id عدد صحيح لا — المنتج المعني.
title_ar نص لا — العنوان بالعربية.
type نص لا — نوع الوسيط.
position عدد صحيح لا 0 ترتيب العرض.
duration_s عدد صحيح نعم — المدة بالثواني.
storage_key نص نعم — مفتاح الملف على التخزين الخاص — لا يُكشف أبدًا.
preview منطقي لا false مقتطف مجاني.
status نص لا ‘draft’ دورة الحياة.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • product_id → products.id (حذف متسلسل)
  • status ∈ { draft, published, archived }
  • type ∈ { audio, article, article_audio, video }

product_prerequisites — المتطلبات السابقة

Section titled “product_prerequisites — المتطلبات السابقة”

منتج يتطلب منتجًا آخر، وفق قاعدة. علاقة مستقلة عن التركيب: التطلّب ليس احتواءً.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
product_id عدد صحيح لا — المنتج المعني.
required_product_id عدد صحيح لا — المنتج المطلوب.
rule نص لا ‘certified’ ما يستوفي المتطلب السابق: مقتنى، مكتمل، مُصادَق عليه بشهادة.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • product_id ≠ required_product_id — لا إشارة ذاتية
  • product_id → products.id (حذف متسلسل)
  • فريد: product_id, required_product_id
  • required_product_id → products.id (حذف متسلسل)
  • rule ∈ { owned, completed, certified }

المتعلمون والمديرون في جدول واحد. المعرّف هو البريد الإلكتروني أو الهاتف.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
name نص لا — الاسم.
email نص نعم — عنوان البريد الإلكتروني، فريد.
phone نص نعم — الهاتف بصيغة E.164، فريد.
password نص نعم — كلمة المرور المجزّأة (hash) — للمديرين فقط.
role نص لا ‘learner’ متعلم أو مدير.
status نص لا ‘invited’ دورة الحياة.
locale نص لا ‘ar’ لغة الواجهة.
verified_at تاريخ ووقت (بمنطقة زمنية) نعم — أول دخول ناجح.
last_login_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر دخول.
invited_by عدد صحيح نعم — المدير الذي دعا الحساب.
remember_token نص نعم — جلسة دائمة (إطار عمل Laravel).
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • فريد: email
  • CHECK ((email IS NOT NULL) OR (phone IS NOT NULL))
  • invited_by → users.id (يُفرَّغ عند الحذف)
  • فريد: phone
  • role ∈ { learner, admin }
  • status ∈ { invited, active, disabled }

الأجهزة المتصلة بحساب؛ رمز وصول واحد لكل جهاز.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
user_id عدد صحيح لا — الحساب المعني.
device_key نص لا — معرّف ثابت يوفّره التطبيق.
platform نص لا — ios أو android أو web.
name نص نعم — الاسم.
app_version نص نعم — إصدار التطبيق.
push_token نص نعم — رمز الإشعارات (الدفعة L10).
token_id عدد صحيح نعم — رمز وصول API الحالي.
last_seen_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر طلب مرصود.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • platform ∈ { ios, android, web }
  • فريد: user_id, device_key
  • user_id → users.id (حذف متسلسل)

رمز لمرة واحدة قيد الانتظار. لا يُخزَّن الرمز أبدًا بشكل صريح.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
identifier نص لا — بريد إلكتروني أو هاتف بصيغة موحّدة.
channel نص لا — قناة إرسال الرمز.
code_hash نص لا — بصمة HMAC للرمز.
expires_at تاريخ ووقت (بمنطقة زمنية) لا — موعد الانتهاء.
attempts عدد صحيح لا ‘0’ المحاولات المستهلكة.
consumed_at تاريخ ووقت (بمنطقة زمنية) نعم — مستهلَك (استُخدم أو أُبطل).
ip_address نص نعم — عنوان الطلب.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • channel ∈ { mail, sms, whatsapp, log }

personal_access_tokens — رموز وصول API

Section titled “personal_access_tokens — رموز وصول API”

رموز Sanctum التي يحملها تطبيق الهاتف (جدول إطار عمل Laravel).

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
tokenable_type نص لا — نوع الحامل (إطار العمل).
tokenable_id عدد صحيح لا — حامل رمز الوصول.
name نص طويل لا — الاسم.
token نص لا — بصمة رمز الوصول.
abilities نص طويل نعم — الصلاحيات.
last_used_at تاريخ ووقت نعم — آخر استخدام.
expires_at تاريخ ووقت نعم — موعد الانتهاء.
created_at تاريخ ووقت نعم — الإنشاء.
updated_at تاريخ ووقت نعم — آخر تعديل.

القيود

  • فريد: token

« DROIT_ACCES » في ملف الهندسة المعمارية، على مستوى المنتج، مع مصدره.

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
user_id عدد صحيح لا — الحساب المعني.
product_id عدد صحيح لا — المنتج المعني.
status نص لا ‘active’ دورة الحياة.
origin نص لا — من أين يأتي الحق: شراء، حزمة، مسار، اشتراك، عرض ترويجي، هدية، مدير، ترحيل، شريك.
source_ref نص نعم — مرجع المصدر (طلب، مذكرة منح…).
granted_by عدد صحيح نعم — المدير الذي منح الحق.
granted_at تاريخ ووقت (بمنطقة زمنية) لا — تاريخ المنح.
expires_at تاريخ ووقت (بمنطقة زمنية) نعم — موعد الانتهاء.
revoked_at تاريخ ووقت (بمنطقة زمنية) نعم — تاريخ الإلغاء.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • granted_by → users.id (يُفرَّغ عند الحذف)
  • origin ∈ { purchase, pack, pathway, subscription, promotion, gift, admin, migration, partner }
  • product_id → products.id (حذف متسلسل)
  • status ∈ { active, revoked, expired }
  • user_id → users.id (حذف متسلسل)

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

العمود النوع فارغ الافتراضي الدور
id عدد صحيح لا تسلسل معرّف تقني.
group نص لا — تبويب شاشة الإعدادات.
key نص لا — المفتاح الذي يقرؤه الكود، فريد.
type نص لا — نوع الوسيط.
value jsonb نعم — قيمة منمّطة (jsonb).
options jsonb نعم — الخيارات الممكنة لقائمة.
label نص لا — التسمية المعروضة (مفتاح ترجمة).
help نص نعم — نص المساعدة المعروض (مفتاح ترجمة).
unit نص نعم — الوحدة المعروضة.
position عدد صحيح لا 0 ترتيب العرض.
created_at تاريخ ووقت (بمنطقة زمنية) نعم — الإنشاء.
updated_at تاريخ ووقت (بمنطقة زمنية) نعم — آخر تعديل.

القيود

  • فريد: key
  • type ∈ { string, text, integer, boolean, money, select }