Developer Page Specifications
Status Logic
5 computed statuses (upcoming/open/closing-soon/live/completed) + 2 manual overrides (postponed/cancelled). Timezone-aware.
مكتمل
حالة فعالية التقويم محتسبة في الغالب عند كل قراءة، مع حالتي override يدوي. 5 حالات مُشتقَّة من الزمن (upcoming / open / closing-soon / live / completed). 2 manual overrides (postponed / cancelled). كل الحساب يَستخدم Timezone المُعلَن للفعالية للعدالة عبر الجغرافيا.
الحالات المحتسبة
- upcoming
- startDate > NOW() ولا موعد ذو-صلة ضمن 7 أيام. الحالة الافتراضية لفعالية مستقبلية مُتحقَّق منها.
- open
- لفئات accelerator/incubator/pitch-competition: applicationDeadline > NOW() + INTERVAL '7 days'. التسجيل / التقديمات حيّة وليست عاجلة بعد.
- closing-soon
- applicationDeadline أو registrationDeadline ضمن الـ 7 أيام القادمة و لا تزال > NOW(). يَقود صبغة warning + pill "Closing soon" + ترقية تسمية CTA.
- live
- NOW() >= startDate و (endDate IS NULL أو NOW() <= endDate). يَرسم حركة accent-pulse على الشارة.
- completed
- endDate < NOW() (أو، لو لا endDate، startDate + 1 يوم < NOW()). الكرت يَفقد التشبّع؛ يَبقى قابلاً للاكتشاف للسجل التاريخي.
حالات Override يدوية
- postponed
- المحرّر يَضبط صراحةً. banner في hero: "This event has been postponed. We’re tracking the new date." JSON-LD eventStatus=EventPostponed.
- cancelled
- المحرّر يَضبط صراحةً. banner + CTAs مُعطَّلة. JSON-LD eventStatus=EventCancelled. الاستعلامات الافتراضية للقائمة تَستثني الفعاليات المُلغاة.
إيقاع إعادة التحقّق
- الفعاليات المُتحقَّق منها الأقدم من 30 يوم منذ LastVerifiedAt أو ضمن 14 يوم من StartDate تُعلَّم تلقائياً لإعادة-تحقّق تحريرية. admin يُعيد ping sourceUrl، يُؤكِّد أن لا شيء تَزحزح، يُحَدِّث LastVerifiedAt.
- التأجيلات التي تَتسلّل تُسَبِّب أسوأ ضرر للثقة — إيقاع إعادة التحقّق هو الدفاع.
