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

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

إدارة الموديول

صفحات الإدارة، الصلاحيات، سير العمل.

مكتمل

أسطح admin للتغطية تَعيش تحت لوحة Founder Account (دور admin) وتَتبع خط أنابيب صارم: طابور → مسوَّدة → فحص حقائق → نشر. خط الأنابيب مُسَوَّر عند كل خطوة — لا اختصار من المسوَّدة إلى النشر، لا نشر بدون موافقة فحص-الحقائق-المحرِّر-الثاني.

طابور التغطية

  • مُملوء تلقائياً من CalendarEvents بـ coverageEligible=true + coverageStatus='planned'. مفروز بـ startDate الفعالية (الأحدث ماضي أولاً، لأن التغطية ما-بعد-الفعالية).
  • لكل صفّ: عنوان الفعالية الوالد + التاريخ + الدولة + الفئة + المحرّر المُعَيَّن (لو موجود) + الحالة (مُخَطَّط / مُسَوَّد / فحص-حقائق / منشور).
  • الفعل: "Create draft" يَفتح محرّر المسودَّة مُمَلَّأً مُسبَقاً بـ metadata الفعالية الوالد + bodyHtml فارغ.

محرّر المسودَّة

  • النموذج يُرآة الواجهة CoverageArticle — 15 حقل. الحقول bilingual تَعرض إدخالات EN | AR جنباً إلى جنب.
  • منتقي parentEventId: بحث type-ahead عبر CalendarEvents حيث coverageEligible=true. الفعالية المختارة تُرسَم كشريحة غير-قابلة-للإزالة — كل مقالة تغطية تَحتاج والداً.
  • منتقي kind: toggle بـ 5 أزرار. التبديل إلى sponsor-spotlight يُدرج تلقائياً شريط الإفصاح في bodyHtml + يَطلب تعريف الراعي.
  • محرّر rich-text لـ bodyHtml.en + .ar: WYSIWYG مع قائمة tag مسموحة (h2-h4، p، ul/ol، blockquote، figure، a، em، strong، code). الناتج HTML مُعَقَّم مُخَزَّن لـ bodyHtml.
  • منتقيات الإشارة: بحث type-ahead عبر المؤسّسين / الشركات / الفرص / الملفات. كل اختيار يُرسَم كشريحة قابلة-للإزالة مع معاينة.
  • فعل الحفظ يَحفظ المسودَّة (publishedAt يَبقى null). readingTimeMinutes مُحتسَب تلقائياً من عدد كلمات bodyHtml.en عند كل حفظ.

فحص الحقائق + النشر

  1. المُسَوِّد يَنقر "Submit for fact-check". الحالة تَنقلب إلى 'fact-check' ومحرّر ثانٍ (أيّ شخص بدور admin ما عدا المُسَوِّد) يَحصل على إشعار.
  2. فاحص الحقائق يَسير عبر 3 بوّابات مع شريط فحص صريح (أسماء entities مُتحقَّق منها / ادّعاءات كمّية مُستنَدة المصدر / اقتباسات مؤكَّدة). الـ 3 يجب أن تُفحَص.
  3. عند الموافقة: publishedAt يُضبط على now؛ الحالة تَنقلب إلى 'published'؛ parentEvent.coverageStatus تَنقلب تلقائياً إلى 'covered'؛ المقالة تَنشط + شرائط البحث العكسي على entities مُتَّصلة تَضيء.
  4. عند الرفض: الحالة تَنقلب إلى 'drafting' + ملاحظة رفض تُرفَق بالمسودَّة. المُسَوِّد يُراجع ويُعيد التقديم.