توثيق الموديولز
منطق الحالة والشارات
كيف تتبدّل الحالات وما الشارات التي تظهر.
مكتمل
حالة الفرصة محسوبة في وقت العرض من `deadlineAt`، ليست مخزَّنة كحقل. طريقة `OpportunityService.computeStatus()` تعيد واحدة من `Open` / `ClosingSoon` / `Closed` / `Rolling` — وكل عنصر بصري (لون الشريط، فئة الـ chip، pill الموعد) يُشتقّ من تلك الحالة.
الحالات المحسوبة الأربع
- Open · أخضر (.chip-success، bg-badge-verified)
- deadlineAt > اليوم + 7 أيام. الشريط العلوي + chip الحالة + pill الموعد كلها تُعرض ملوّنة بالأخضر.
- ClosingSoon · برتقالي (.chip-orange، bg-brand-orange)
- deadlineAt ≤ اليوم + 7 أيام (ولا يزال في المستقبل). عاجل. قد يحرّك pill الموعد بنبضة لطيفة.
- Closed · رمادي مكتوم (.chip-muted، bg-muted-foreground)
- deadlineAt < اليوم. الكرت يبقى مرئياً (لتاريخ كيان SEO/AEO) لكن de-emphasized. CTA Apply مخفي.
- Rolling · بنفسجي (.chip-primary، bg-primary)
- deadlineAt هو NULL (لا موعد ثابت). الفرصة تقبل التقديمات باستمرار. pill الموعد يعرض "Rolling".
تسميات pill الموعد
- `or.deadline.rolling` — "Rolling deadline" / "موعد متجدّد"
- `or.deadline.closed` — "Closed" / "أُغلق"
- `or.deadline.today` — "Closes today" / "ينتهي اليوم"
- `or.deadline.inDays` — "Closes in {n} days" / "ينتهي خلال {n} أيام" (حين ≤ 7 أيام)
- `or.deadline.on` — "Closes on {date}" / "ينتهي في {date}" (حين 8-60 يوم)
- `or.deadline.openUntil` — "Open until {date}" / "مفتوحة حتى {date}" (حين > 60 يوم)
