توثيق الموديولز
حقول البيانات
الكيانات، الحقول، الأنواع.
واجهة `FounderFile` (المعرَّفة في `core/models/founder-file.model.ts`) هي عقد الكيان. الملفات تحمل محتوى تحريرياً، كيانات فرعية منظَّمة (تصنيفات، مواضيع، رعاة)، كتل محتوى لكل لغة (EN + AR + FR اختياري)، وحقول التقاط العملاء.
الهوية + التصنيف
- id · string
- معرّف مستقرّ. الصيغة: `ff-NN`.
- slug · string
- slug الـ URL. وصفي.
- fileNumber · number
- 1، 2، 3، ... يقود `#01` / `#02` المرئي في eyebrow العلامة.
- category · FounderFileCategorySlug
- `funding` | `pitching` | `growth` | `leadership` | `legal` | `operations` | `glossary` | `market-expansion`.
- topics · string[]
- حتى ~6 مواضيع micro للمطابقة Cross-module.
- availableLanguages · SupportedLanguage[]
- أي نسخ لغة موجودة: `["en", "ar"]` لمعظم؛ `["en", "ar", "fr"]` للملفات الثلاثية. يعرض شريط chip اللغة.
كتل محتوى لكل لغة
الـ FounderFile يحمل object `lang: { en?: FounderFileLanguageContent; ar?: FounderFileLanguageContent; fr?: FounderFileLanguageContent }`. كل نسخة لغة لها `title`، `shortDescription`، `bodyHtml`، `tocSections[]`، `learningPoints[]` خاصّة. الـ helper `getLanguageContent(file, locale)` يحلّ اللغة النشطة مع EN fallback.
بنية TOC + نقاط التعلّم
- tocSections · FounderFileTocSection[]
- كل قسم: `{ anchor: string; titleEn: string; titleAr: string; orderIndex: number }`. يقود sidebar القارئ + تمييز القسم النشط.
- learningPoints · FounderFileLearningPoint[]
- كل نقطة. تُعرض كقائمة مرقّمة على صفحة التفاصيل.
حقول الرعاية + التجارية
- `sponsorId?` — يربط بـ FounderFileSponsor entry. حين يُضبط، صفّ راعي مصغّر + chip Sponsored يُعرضان.
- شكل `FounderFileSponsor`: `{ id; name; tier: SponsorTier; logoUrl?; websiteUrl? }`. الـ Tiers: `premier` | `featured` | `supporter`.
- `isFeatured?` — يظهر الملف في كتلة `.card-editorial--spotlight` للقائمة.
بيانات وصفية للقراءة
- `readingTimeMinutes · number` — يحدّده المحرّر.
- `coverImageUrl?` — غلاف اختياري. fallback إلى SVG خاصّ بالملف.
- `publishedAt` / `updatedAt` — يقود ترتيب الفرز على القائمة.
التقاط العميل (تدفّق التحميل)
حين يُرسل المستخدم modal التحميل، entity `DownloadLead` تُنشأ. LeadRole و LeadInterest enums منظَّمان.
