توثيق الموديولز
قواعد التحقق
الحقول المطلوبة، الصيغ، النطاقات.
مكتمل
الفعالية CalendarEvent تمرّ عبر ثلاث طبقات تحقّق قبل النشر: هيكلية (الحقول المطلوبة + الصيغة)، تحريرية (تحقّق 3 بوّابات)، وسلامة (المراجع المتبادلة تُحلّ، المناطق الزمنية صالحة، التواريخ متماسكة). الثلاث يجب أن تمرّ.
التحقّق الهيكلي
- مطلوب: id، slug، title.en + title.ar، shortDescription.en + .ar، organizerName، organizerType، country، mode، startDate، timezone، category، status، audiences (≥1)، stageRelevance (≥1)، verificationStatus.
- على الأقل واحد من: websiteUrl، registrationUrl، applyUrl، contactEmail. بدون قناة خارجية، الفعالية لا يمكنها التقمّع وما يجب نشرها.
- slug فريد عبر مجموعة البيانات كلها، kebab-case، ASCII فقط.
- startDate، endDate، applicationDeadline، registrationDeadline ISO 8601 صالح مع إزاحة منطقة زمنية صريحة.
- timezone هو معرّف IANA منطقة (مثلاً "Africa/Cairo"، "Asia/Riyadh"). ليس "GMT+3" — ذلك يفقد الوعي بـ DST.
التحقّق التحريري — الـ 3 بوّابات
- البوّابة 1 — سلطة المصدر. sourceUrl يشير إلى قناة ذات سلطة: نطاق المنظِّم نفسه، حساب اجتماعي رسمي (مُتحقَّق منه)، أو نشرة صحفية مؤكَّدة. صفحات الـ aggregator لا تُحسَب.
- البوّابة 2 — دقّة التفاصيل. التاريخ، المدينة، المكان، اسم المنظِّم، المواعيد مؤكَّدة مقابل المصدر. لو محتوى URL المصدر يخالف الإدخال، الإدخال خاطئ، ليس المصدر.
- البوّابة 3 — صلة منظومية. الفعالية فعلاً عن شركات ناشئة / مؤسّسين / مستثمرين / مشغّلي منظومة في الـ MENA. مؤتمرات تكنولوجيا عامّة، فعاليات مبيعات شركات، أو فعاليات خارج الـ MENA تفشل هذه البوّابة حتى لو حقائقها صحيحة.
تحقّق السلامة
- endDate ≥ startDate (حين endDate مضبوط).
- applicationDeadline ≤ startDate (لا يمكنك التقديم بعد بدء الفعالية — ما عدا الدُفعات المتدحرجة، حيث الموعد يمكن أن يغيب).
- mode='physical' يتطلّب venue أو (city+country). mode='online' يتطلّب onlineUrl. mode='hybrid' يتطلّب كليهما.
- كل relatedXxxId يُحلّ لسجلّ موجود في موديوله. الـ IDs البالية تُجرَّد وقت الرسم.
- lastVerifiedAt يجب ضبطه كلّما انتقلت verificationStatus إلى "verified".
