قاعدة المعرفة العامة (Public KB) هي الجزء من قاعدة معرفتك المتاح بدون تسجيل الدخول عبر رابط مباشر أو أداة (widget) أو iframe. يظهر هنا المقالات التي وسمتها صراحةً كعامة.

لماذا:

  • الخدمة الذاتية للعملاء — يجد العملاء الإجابات بأنفسهم، دون التواصل مع الدعم
  • تحسين محركات البحث (SEO) — تُفهرَس المقالات العامة بواسطة Google ومحركات البحث الأخرى
  • العرض التوضيحي — يقرأ العملاء المحتملون التوثيق قبل الشراء
  • الشركاء — الوصول إلى التوثيق التقني دون الحاجة لإنشاء حسابات

#كيف يصبح المقال عامًا

تُفعَّل العمومية عبر إعدادين — واحد على مستوى المقال وآخر على مستوى المؤسسة. وإلى أن يتحقق كلاهما، لن يرى الزوار المجهولون المقال.

مستوى المقال
publish_state = public
يصل إلى الوصول المجهول المقالات ذات الحالة public والمقالات inherit الموجودة داخل مجلد عام؛ وتبقى internal وdraft مخفية. يمكن وسم مقال كعام فقط في مساحة مؤسسية — وفي المساحات الخاصة يكون النشر محظورًا.
مستوى المؤسسة
وضع الوصول = "Public"
في الإعدادات ← المؤسسة ← وضع الوصول. إذا كانت المؤسسة في وضع "Corporate"، فإن العنوان العام مغلق ولا يرى المستخدمون المجهولون شيئًا — حتى المقالات ذات حالة public.

لا يوجد نوع مساحة "عام". المساحات هي فقط Corporate / Private. لا يصبح المقال مرئيًا بنقله إلى مساحة خاصة، بل عبر علامة publish_state=public (في مساحة مؤسسية) مع تفعيل وضع الوصول العام للمؤسسة.

#حالات publish_state (ADR 0029)

يستخدم LiKE حقل publish_state (وهو يحل محل حقل visibility القديم). أربع حالات:

الحالة مَن يراها ملاحظة
draft المؤلف ومحررو المساحة فقط مسودّة — غير مرئية للفريق وغير مشمولة في البحث
inherit تتبع أقرب مجلد أصل ذي حالة صريحة؛ وإن لم يوجد مثله — فمثل internal ADR 0029
internal جميع أعضاء المساحة المصرَّح لهم مرئية للفريق (القيمة الافتراضية للمقالات الجديدة)
public الجميع، بما في ذلك المستخدمون المجهولون عبر قاعدة المعرفة العامة شارة الوصول بجوار عنوان المقال — فقط في مساحة مؤسسية

في الواجهة، يُعرَض لون الحالة بمؤشر نقطة:

مسودّة — مرئية للمؤلف والمحررين فقط
داخلية — للفريق المصرَّح له
عامة — وصول مجهول عبر قاعدة المعرفة العامة
تحتوي على تغييرات غير منشورة — النسخة السابقة ما زالت في البحث، وستصل إليه الجديدة عند مغادرة المحرر

تظهر الشارات نفسها في قائمة المقالات في إدارة المقالات.


#المساحة الافتراضية __public__

عندما يفتح مستخدم مجهول قاعدة المعرفة العامة عبر رابط مباشر أو أداة، فهو تقنيًا ليس في أي من مساحاتك. بدلًا من ذلك، يستخدم LiKE "مساحة" افتراضية __public__ — قيمة حارسة (sentinel) والتي:

  • لا توجد في قاعدة البيانات كـ ArticleCollection.type='public' حقيقية
  • تشمل المقالات العامة بذاتها أو بالوراثة من مجلد عام
  • تُستخدم للتصفية في بحث RAG للمستخدم المجهول
  • تُعرَض في SpaceSwitcher باسم " المقالات العامة" (إذا كان لدى المستخدم أيضًا مساحات خاصة)

إذا كنت عضوًا مصرَّحًا له، فبدّل إلى __public__ في SpaceSwitcher لترى مجموعة المقالات ذاتها بالضبط التي يراها الزائر المجهول — وهذا مفيد للتحقق من "ماذا نشرت عن طريق الخطأ".


#الإعداد (خطوة بخطوة)

#الخطوة 1 — ضع المقالات في مساحة مؤسسية

يمكنك النشر خارجيًا فقط من مساحة مؤسسية (في المساحات الخاصة يكون النشر محظورًا). إذا كانت مقالاتك في مساحة أخرى، فانقلها إلى مساحة مؤسسية: واحدًا تلو الآخر عبر قائمة سياق المقال ← نقل، أو دفعةً واحدة (مربعات الاختيار ← نقل). نوعا المساحات هما Corporate وPrivate؛ لا يوجد نوع "Personal" منفصل — تبقى المساحة خاصة إلى أن تدعو أحدًا.

#الخطوة 2 — اجعل المقالات عامة

بدّل المقالات التي تريدها إلى publish_state = public (راجع إدارة المقالات):

  • دفعةً واحدة — حدّد بمربعات الاختيار ← زر الكرة الأرضية () في شريط الإجراءات ← Public
  • مقال واحد — قائمة "⋮" ← "الرؤية: …" ← Public؛ وفي وضع "الشجرة" — قائمة السياق ← "جعله عامًا"
  • في المحرر — شارة الوصول بجوار عنوان المقال

بعد ذلك، يتحول مؤشر الحالة إلى الأخضر وتظهر شارة عامة. إذا احتوى المقال على بيانات شخصية، يُفتَح مربع حوار تأكيد — راجع "فحص البيانات الشخصية قبل النشر" أدناه.

#الخطوة 3 — فعّل وضع المؤسسة العام

الإعدادات ← المؤسسة ← وضع الوصول ← اختر "Public".

  • Public — يرى المستخدمون المجهولون، على العنوان العام، المقالات الموسومة كعامة؛ وتبقى المساحات الخاصة متاحة بالدعوة فقط.
  • Corporate — كل شيء متاح للأعضاء المسجّلين فقط؛ ولا يرى المستخدمون الخارجيون بدون تسجيل الدخول شيئًا، حتى المقالات الموسومة كعامة.

بدون تفعيل وضع "Public"، يكون العنوان العام مغلقًا — هذه الخطوة إلزامية.

لا يعمل الوضع العام إلا على الخطط التي يكون مفعّلًا فيها. وإذا لم يكن الوصول العام مشمولًا في الخطة، يكون زر «عام» غير متاح مع التلميح «الوصول العام غير مشمول في خطتك: لا يرى الزوار المجهولون البوابة.». وعند تخفيض الخطة تُغلق البوابة أمام الزوار المجهولين تلقائيًا، وعند العودة إلى خطة مناسبة تُفتح مجددًا — ولا يُعاد تعيين الوضع المختار.

#الخطوة 4 — العنوان العام والقنوات

هناك ثلاث طرق لفتح قاعدة المعرفة العامة الجاهزة:

  • البوابة العامة — جذر عنوانك https://<your-slug>.lynkora.pro: بحث وإجابات AI وقراءة المقالات دون تسجيل الدخول. المقال الفردي على /kb/<article-slug>.
  • أداة JS — مضمَّنة في موقعك؛ يُؤخَذ كود الأداة من التكاملات ← القنوات (بطاقة "JS Widget").
  • iframe — تضمين واجهة البحث الكاملة في صفحة.

لم يعد هناك تبويب "Public KB" منفصل في الإعدادات (ADR 0029): تُضبَط العمومية الآن بعلامة المقال + وضع المؤسسة، بدلًا من قائمة مصادر مسموح بها. تُدار الأدوات في التكاملات ← القنوات.


#فحص البيانات الشخصية قبل النشر

عند تحويل مقال إلى عام، يفحصه LiKE تلقائيًا بحثًا عن البيانات الشخصية (PII). إذا عُثر على أي منها، يُوقَف النشر ويظهر مربع حوار «تم اكتشاف بيانات شخصية» — قبل أن يصبح المقال متاحًا للجميع دون تسجيل الدخول.

متى يُشغَّل: عندما يصبح المقال متاحًا للزوار المجهولين — بالتحويل إلى public أو عبر inherit داخل مجلد عام. لا يُجرى الفحص مع internal أو draft. ويعمل على كل المسارات، لا على زر «نشر» وحده: شارة الوصول في المحرّر، و«جعلها عامة» في القائمة والشجرة، وتغييرات الرؤية المجمّعة، ونشر المجلد (بما في ذلك مع كل ما بداخله)، ونقل مقال أو مجلد إلى مجلد عام، والنسخ، والاستعادة من سلة المهملات، وتفعيل المقال.

ما الذي يُكتشَف (حتمي، قائم على الأنماط):

  • البريد الإلكتروني
  • الهاتف
  • بطاقة الدفع (المجموع التحققي Luhn)
  • IBAN (متحقَّق منه بمجموع تحققي)
  • عنوان IP
  • تاريخ الميلاد

الفئات الخاصة (الصحة، والقياسات الحيوية، إلخ، GDPR Art. 9) لا تُكتشَف تلقائيًا بعد — يعرض مربع الحوار فقط تنبيهًا بشأن المسؤولية المشدَّدة عند نشرها.

مجموعة المقالات يُسأل عنها مرة واحدة. تغييرات الرؤية المجمّعة، ونشر المجلد، والنقل، والاستعادة تعرض مربع حوار واحدًا «بيانات شخصية في المقالات المزمع نشرها»: ملخّص بحسب أنواع البيانات (كم عدد الورودات وفي كم مقال)، وقائمة المقالات مع بحث بالعنوان، و**«تحديد الكل»** / «إلغاء التحديد» وعدّاد المحدَّد منها.

  • المقالات المحدَّدة هي التي تُنشَر. عند الفتح تكون كلها محدَّدة — أزل التحديد عن تلك التي لا تريد نشرها: ستبقى داخلية ولن تتبع المجلد.
  • الزرّان — «انشر N» و**«إلغاء»**. عند الإلغاء لا يحدث شيء، ويقول LiKE ذلك صراحةً.
  • الإقرار المُعطى في مربع الحوار الجماعي يُسجَّل في السجل لكل مقال على حدة.

المقالات المأخوذة عبر موصّل الموقع لا تحتاج إقرارًا لكل مقال: فعند التوصيل يؤكّد المالك حقوقه على الموقع ومشروعية نشر البيانات الشخصية منه. أعِد توصيل الموقع مع اختيار «داخلية» — فتُسحَب الموافقة، ويعود الفحص إلى عمله المعتاد.

الإجراءات الخلفية — مزامنة الموصّل، والاستيراد، وإعادة بناء البنية — لا تستطيع أن تسأل أحدًا، ولذلك لا تنشر مقالًا فيه بيانات شخصية غير مُقَرّ بها: يبقى داخليًا، وتظهر في السجل قيدٌ بذلك. ويمكن نشره يدويًا بعد اجتياز الفحص المعتاد.

ما يعرضه مربع حوار المقال الواحد:

  • العنوان «تم اكتشاف بيانات شخصية» وقائمة بالأنواع المكتشفة مع الأعداد (مجمّعة عبر جميع المقالات الجاري نشرها).
  • مربع اختيار إقرار إلزامي: تساعد الأداة على اكتشاف الـ PII لكنها لا تضمن الاكتمال؛ وتبقى أنت، بصفتك المتحكّم في البيانات، مسؤولًا عن مشروعية النشر وعن وجود أساس قانوني أو موافقة.
  • زرّا إلغاء ونشر (يُفعَّل زر النشر فقط بعد تحديد مربع الاختيار).

بعد التأكيد: يُنشَر المقال، ويُسجَّل الإقرار في سجل النشاط (pii_public_ack) مع أنواع البيانات المكتشفة — دون تخزين نص الـ PII نفسه (الخصوصية بالتصميم). يرتبط الإقرار بالنسخة الحالية من المقال: إذا حرّرت النص لاحقًا، فستحتاج إلى التأكيد مجددًا.

من يمكنه الإقرار: الأدوار نفسها التي يمكنها النشر — Editor وأعلى في مساحة المقال. Owner المؤسسة — دائمًا؛ Admin المؤسسة — في المساحات المؤسسية وفي الخاصة التي هو عضو فيها بدور Editor أو Admin. نشر جميع مقالات مصدر ما دفعةً واحدة مقصور على Owner/Admin.


#أدوات قاعدة المعرفة العامة (dual-auth، ADR 0032)

يدعم LiKE وضعَي مصادقة للأدوات — يُختاران عند إنشاء أداة في التكاملات ← القنوات ← JS Widget:

#الوضع 1 — المسارات المسموح بها (للمواقع العامة)

أداة مضمَّنة في الموقع العام للشركة (صفحة هبوط، صفحات تسويقية، مركز مساعدة). لا حاجة إلى مصادقة — الأداة متاحة لأي زائر.

الحماية من إساءة الاستخدام:

  • عناوين الموقع — حيث تعمل الأداة. على سبيل المثال، yoursite.com, docs.yoursite.com (العنوان بلا مخطط يحصل على https://). لا تُقبل النجمة؛ وتُرفَض الطلبات من عناوين أخرى.
  • نطاق عام شامل (public umbrella scope) — تصل الأداة فقط إلى مساحة __public__ + مجموعات محددة من تلك المساحة، تُعرَّف عند الإنشاء.
  • حدّ المعدل (Rate limit) على الـ api-key — حماية من الروبوتات.

#الوضع 2 — جلسة JWT (لموقع مؤسسي بمصادقة)

أداة مضمَّنة في البوابة الداخلية للشركة، حيث يكون لدى المستخدمين مصادقة بالفعل. تقبل الأداة جلسة JWT وترى تمامًا ما يراه ذلك المستخدم.

حالات الاستخدام:

  • أداة على إنترانت مؤسسي ← يرى كل موظف مساحاته الخاصة
  • التضمين في تطبيق SaaS (على سبيل المثال، في CRM) — يرى المستخدم التوثيق الخاص بدوره

#تعدد الأدوات لكل مستأجر (ADR 0029 Stage 4)

داخل مؤسسة يمكنك إنشاء عدة أدوات بنطاقات مختلفة:

  • واحدة — عامة، للموقع التسويقي (allowed paths)
  • أخرى — مؤسسية، للإنترانت (session JWT)
  • ثالثة — لمجموعة محددة (على سبيل المثال، الأسئلة الشائعة فقط لمركز الدعم)

لكل أداة الـ api-key الخاص بها، ونطاقها، ووضع مصادقتها. راجع التكاملات وAPI والأداة للتفاصيل.


#ما يراه الزوار المجهولون

العنصر مرئي؟
المقالات ذات publish_state=public والمقالات inherit في المجلدات العامة نعم
بحث AI عبر تلك المقالات نعم (عند نفاد حجم الذكاء الاصطناعي لدى المؤسسة — بحث في المقالات بالمعنى دون إجابة AI)
كتالوج المجموعات العامة نعم
رابط مشاركة / تضمين قصير (إن كان مفعّلًا للمقال) نعم
لافتة "سجّل الدخول للوصول الكامل" (إن كانت الأداة مجهولة) نعم
مقالات internal وdraft ومقالات inherit خارج المجلدات العامة لا
المقالات من المساحات الخاصة لا
سجل الاستعلامات / التوصيات (الشخصية) لا
لوحة الإدارة، سلة المهملات، السجل، التحليلات لا

يستخدم البحث المجهول افتراضيًا ملف تعريف ارتباط ببصمة العميل (client-fingerprint) لحدّ المعدل الأساسي، لكنه لا يربط الطلب بحساب مستخدم.


#إخفاء مجموعات فردية

في مساحة عامة، ليس بالضرورة أن تكون جميع المجموعات مرئية للمستخدمين المجهولين. يمكنك إخفاء مجموعات محددة:

  1. قائمة سياق المجموعة ← «جعلها عامة» / «جعلها داخلية»
  2. حالة المجموعة:
    • inherit — تتبع أقرب مجلد أصل ذي حالة صريحة؛ وإن لم يوجد مثله — فداخلية (افتراضي)
    • internal — مخفي عن المستخدمين المجهولين، مرئي للفريق
    • public — عام صراحةً (فقط في مساحة مؤسسية، وإلا فمحظور)