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

توثيق الموديولز

قواعد التحقق

الحقول المطلوبة، الصيغ، النطاقات.

مكتمل

الـ CoverageArticle تَمرّ عبر أربع طبقات تحقّق: هيكلية (الحقول المطلوبة لكل نموذج)، مرجعية (parentEventId + كل ID مذكور يُحَلَّ)، تحريرية (فحص حقائق 3-بوّابات)، وإفصاحية (sponsor-spotlight له تعريف راعٍ صريح). الطبقة المرجعية هي الأصرم — parentEventId مكسور واحد يُفشل السجلّ كلّه.

التحقّق الهيكلي

  • مطلوب: id، slug، parentEventId، kind، title.en + title.ar، dek.en + dek.ar، bodyHtml.en + bodyHtml.ar، author.en + author.ar، publishedAt، readingTimeMinutes.
  • slug فريد عبر مجموعة بيانات التغطية كلّها، kebab-case، ASCII فقط، ≤80 حرف.
  • kind ∈ بالضبط واحد من القيم الـ 5 لـ CoverageKind. لا null، لا سلسلة حرّة.
  • كل متغيّرات EN و AR لكل حقل BilingualText يجب أن تُكتَب — لا fallback إلى EN-فقط.
  • readingTimeMinutes مُحتسَب من عدد كلمات bodyHtml (الجسم الإنجليزي) ومُقَرَّب لأعلى. الحقل مُخَزَّن، ليس مُحتسَب عند الرسم، لإبقاء رسم الكرت سريعاً.

التحقّق المرجعي

  • parentEventId يجب أن يُحَلَّ إلى CalendarEvent موجود. لو الفعالية الوالد مَحذوفة، مقالة التغطية يُيَتَّمها — admin يجب أن يُعيد التَعيين أو الحذف.
  • parentEvent.coverageEligible يجب أن يكون true في لحظة النشر. سطح المسودَّة admin يَحظر النشر لو الفعالية الوالد ليست coverageEligible.
  • كل mentionedFounderId يُحَلَّ إلى مؤسّس موجود؛ نفس الشيء للشركات، الفرص، الملفات. الـ IDs البالية تُجَرَّد عند الرسم مع console.warn في التطوير.
  • عند النشر، parentEvent.coverageStatus تَنقلب تلقائياً إلى 'covered' (كتابة واحدة — حتى لو عدة مقالات تغطية تَتشارك نفس الوالد، الحالة تَبقى 'covered').

فحص الحقائق التحريري — الـ 3 بوّابات

  1. البوّابة 1 — كل entity مُسمَّى مُتحقَّق منه: أسماء المؤسّسين، أسماء الشركات، أسماء المنظِّمين، أسماء الرعاة، أسماء الحكّام. التهجئة تُطابق السجلّ القياسي (ملف مؤسّس، صفحة شركة، إلخ).
  2. البوّابة 2 — كل ادّعاء كمّي مُستنَد المصدر: أعداد نتائج العرض، مبالغ الصفقات، أرقام الحضور، النسب. المصدر إمّا مرئي في الفعالية (مُسَجَّل) أو مؤكَّد كتابياً من المنظِّم.
  3. البوّابة 3 — كل اقتباس حرفي أو مُعاد-الصياغة مع نسبة صريحة. لا اقتباسات مُختَرعة، لا تصريحات مُركَّبة منسوبة لشخص واحد.