توثيق الموديولز
حقول البيانات
الكيانات، الحقول، الأنواع.
مكتمل
واجهة `Opportunity` (المعرَّفة في `core/models/opportunity.model.ts`) هي عقد الكيان. الحقول تنقسم إلى ثلاث مجموعات: الهوية (id / slug / type)، الأهلية (sector / stage / country)، دورة الحياة (publishedAt / deadlineAt / lastVerifiedAt).
حقول الهوية
- id · string
- معرّف مستقرّ. الصيغة: `or-XXX` (مثل `or-001`). 3 أرقام بـ zero-padding.
- slug · string
- slug الـ URL. الصيغة: `{المنظِّم-أو-البرنامج}-{الدورة-أو-السنة}`.
- typeSlug · OpportunityTypeSlug
- أنواع الفرص العشرة.
حقول المحتوى المُتَرجَم
- `content: { en: OpportunityContent; ar: OpportunityContent }` — كتل محتوى ثنائية اللغة: العنوان، الملخّص، الوصف الكامل، ملاحظات الأهلية، ملاحظات الفوائد.
- `getOpportunityContent(o, lang)` helper يحلّ المحتوى الخاصّ بالـ Locale مع EN fallback.
حقول التصنيف
- countryCode · string
- دولة ISO-2 (مثل EG / SA / AE). تقود الفلترة الجغرافية ومطابقة الدولة Cross-module.
- region · OpportunityRegion
- `MENA` | `GCC` | `Levant` | `NorthAfrica` | `Global`. للفرص متعدّدة الدول.
- sectorSlugs · string[]
- القطاعات المستهدفة. مصفوفة فارغة = قطاعي-محايد.
- stageSlugs · string[]
- مراحل الشركة المؤهَّلة. تقود مطابقة المرحلة Cross-module.
- format · OpportunityFormat
- `Online` | `Physical` | `Hybrid`.
- cost · OpportunityCost
- `Free` | `Paid`. الفرص المدفوعة تعرض chip للتكلفة.
حقول دورة الحياة
- deadlineAt · ISO string · اختياري
- تاريخ إغلاق التقديم. NULL = rolling (لا موعد ثابت). تقود حساب الحالة.
- publishedAt · ISO string
- متى دخلت هذه الفرصة Radar.
- lastVerifiedAt · ISO string · اختياري
- متى أعاد محرّر آخر فحص أن الفرصة لا تزال نشطة وأن الحقول دقيقة. تقود مؤشّرات حداثة البيانات.
flags تحريرية / تجارية
- `isSponsored?` — placement مدفوع. شريط featured + chip Sponsored + أولوية فرز.
- `isVerified?` — منظِّم موثّق-من-المحرّر + برنامج نشط. مطلوب للـ entries الإنتاجية.
- `fundingAvailable?` — الفرصة تحمل فائدة نقدية. تعرض chip نجمة-مال.
- `applicationUrl · string` — وجهة التقديم الخارجية. CTA Apply يفتحها في tab جديد.
كيانات فرعية منظَّمة
- `organizer: OpportunityOrganizer` — الاسم، النوع، الدولة، شعار اختياري + موقع. تظهر كسطر المنظِّم على الكروت + التفاصيل.
- `benefits: OpportunityBenefit[]` — كتل فوائد منظَّمة.
- `eligibility: OpportunityEligibilityItem[]` — معايير أهلية منظَّمة.
- `requirements: OpportunityRequirementItem[]` — ما يجب أن يحضّره المؤسس.
- `timeline: OpportunityTimelineStep[]` — خطوات دورة الحياة المرتّبة.
- `sponsors?: OpportunitySponsor[]` — علامات شركاء/رعاة مرتبطة بالفرصة (مختلفة عن flag isSponsored على مستوى المنصة).
