Developer Page Specifications
Data Model
11 tables. CalendarEvent with 30+ fields in 11 logical clusters. 5 cross-module reference arrays.
مكتمل
11 جدول تَدعم التقويم. CalendarEvent هو السجل المركزي (30+ حقل مُنَظَّمة في 11 كتلة منطقية لكل §9.6). 4 جداول join لـ taxonomies متعدّدة-القيم (audiences، stages، sectors، countries حين أهلية متعدّدة-الدول). إضافة إلى Organizer (مُشترك مع Coverage)، Country (مُشترك عبر-المنصّة)، و CalendarEventLang لـ i18n.
الجدول 1 · CalendarEvent (أساسي)
- الهوية
- Id (uuid PK)، Slug (varchar(120) unique).
- Organizer
- OrganizerName (varchar(200))، OrganizerType، OrganizerLogoUrl، OrganizerWebsite. مُسوّاة من Organizer لسرعة الاستعلام؛ جدول Organizer يَحمل السجل القياسي + هدف مرجع cross-module.
- الموقع
- CountryCode، City، Venue، VenueAddress، GeoLat (numeric)، GeoLng (numeric)، OnlineUrl، Mode (physical|online|hybrid).
- الزمن
- StartDate (timestamptz، مطلوب)، EndDate (timestamptz، nullable)، Timezone (IANA، مثل Africa/Cairo، مطلوب)، RegistrationDeadline، ApplicationDeadline.
- التصنيف
- Category (1 من 17 قيمة)، Status (محتسبة-لكن-مُخَزَّنة: upcoming|open|closing-soon|live|completed|postponed|cancelled). Industries (text[]، taxonomy حرّة).
- URLs الفعل
- WebsiteUrl، RegistrationUrl، ApplyUrl، ContactEmail. SocialLinks (jsonb: twitter، linkedin، instagram).
- الإعلام
- CoverImageUrl (16:9 ≥1200×675)، LogoUrl.
- الحجّية
- SourceUrl (مطلوب)، VerificationStatus (pending|verified|rejected|needs_info، مطلوب)، LastVerifiedAt، VerifiedByUserId.
- القرارات التحريرية
- EditorialPriority (standard|featured|spotlight، افتراضي standard)، CoverageEligible (bool)، CoverageStatus (not_planned|planned|covered).
- مصفوفات مرجع cross-module
- RelatedEditorialIds (uuid[])، RelatedStartupIds، RelatedFounderIds، RelatedOpportunityIds، RelatedFileIds. كلها اختيارية.
- SEO + التدقيق
- MetaTitleLang + MetaDescriptionLang مُخَزَّنة على CalendarEventLang. CreatedAt، UpdatedAt، PublishedAt.
الجداول 2-11
- CalendarEventLang (PK مُرَكَّب EventId + Lang): Title، ShortDescription، FullDescription، WhyItMatters?، MetaTitle?، MetaDescription?.
- CalendarEventAudience (join: EventId ↔ AudienceCode). قيم AudienceCode: founders، startups، investors، students، operators، ecosystem-builders، corporates، government، media.
- CalendarEventStage (join: EventId ↔ StageCode). StageCode يُرآة مراحل Opportunity Radar.
- CalendarEventSector (join: EventId ↔ SectorCode).
- CalendarEventCountry (join: EventId ↔ CountryCode) — لأهلية متعدّدة-الدول (دولة الارتساء تَعيش على CalendarEvent.CountryCode).
- Organizer (Id، Name، Type، CountryCode، LogoUrl، WebsiteUrl، IsVerified). رفيق DescriptionLang.
- Country (lookup مشترك، Id، Code، NameLang، Region: GCC|Levant|North Africa).
- EventCategory (lookup، Slug، NameLang، DescriptionLang، IconKey).
- CalendarEventSubmission (Id، EventId، SubmitterEmail، SubmitterName، RawPayload jsonb، Status: pending|verified|rejected|needs-info، CreatedAt، IpAddress).
- CalendarEventAuditLog (Id، EventId، Action: created|updated|verified|published|postponed|cancelled، ActorUserId، ActorIp، BeforeJson، AfterJson، CreatedAt). Append-only.
