تخطَّ إلى المحتوى الرئيسي

التكامل بين الموديولز

جدول EcosystemEntityLinks

جدول EcosystemEntityLinks — التوثيق قيد الإعداد.

مكتمل

جدول `ecosystem_entity_links` هو المصدر القياسي المنظَّم لكل اتصال cross-module. المرحلة 1 تنشر هذا كـ manifest JSON موزون في الـ Repo (`mock-ecosystem-links.ts`). المرحلة 2 تهاجر إلى جدول قاعدة بيانات حيّ حين يتجاوز حجم الروابط اليدوية ~200 entry.

الـ Schema

id · uuid
معرّف مستقرّ لكل رابط.
source_entity_type / source_entity_id
الكيان الذي يبدأ منه الرابط. النوع واحد من قيم enum الموديولز السبعة.
target_entity_type / target_entity_id
الكيان الذي يشير إليه الرابط. نفس الـ enum.
relation_type · enum
واحد من الـ 14 نوع (انظر موضوع Relation Types). يقود اختيار قالب الـ reason.
relation_strength · 0-100
درجة مستقرّة. T2 اليدوي افتراضياً 90. T3 يتراوح 30-70 بناءً على مطابقة التصنيف.
is_manual / is_auto_suggested
flags المنشأ. اليدوي يتجاوز الآلي لنفس الـ tuple (source, target, relation_type).
is_featured / is_hidden
أدوات تحكّم تحريرية. `is_featured = true` يُرتَّب أولاً داخل طبقته. `is_hidden = true` يخفي اقتراحاً آلياً رفضه المحرّر.
display_order · smallint
فاصل ترتيب. الأقلّ = يظهر أولاً.
editorial_reason / editorial_reason_ar
نصّ سبب ثنائي اللغة 160 حرف. يُستخدم عند الوجود؛ وإلا يولّد القالب المُولِّد.
created_at / updated_at / created_by / updated_by
أعمدة تدقيق. `created_by` تكون NULL للصفوف الآلية؛ تُملأ بـ user_id المحرّر للروابط اليدوية.

لماذا جدول واحد مقابل جداول لكل موديول

  • مسار query واحد للكومبوننت المشترك — الـ Resolver يجلب بـ lookup مفهرَس واحد.
  • مشي ثنائي الاتجاه — "ما الذي يربط بالكيان X؟" يعمل دون جدول منفصل.
  • رخيص إضافة أنواع علاقات جديدة — لا migrations.
  • استراتيجية الفهرسة مباشرة (idx على source، idx على target، unique على tuple (source, target, relation_type)).