# النمط: pipeline — معالجة روابط الوظائف المنتظرة (Second Brain)

معالجة وفحص روابط الوظائف المخزنة في صندوق الوارد بملف `data/pipeline.md`. يقوم المستخدم بإضافة روابط الفرص التي تسترعي انتباهه في أي وقت، ثم يقوم بتشغيل الأمر `/career-ops pipeline` ليقوم النظام بمعالجتها وتقييمها بالكامل تلقائياً.

---

## مسار العمل التنفيذي

1. **قراءة الملف** `data/pipeline.md` ← البحث عن العناصر المحددة بـ `- [ ]` (غير المكتملة) في قسم "Pending" (الفرص المنتظرة).
2. **لكل رابط منتظر في القائمة**:
   a. حساب الرقم التسلسلي القادم للتقرير `REPORT_NUM` (بقراءة محتويات مجلد `reports/` وأخذ أكبر رقم مضافاً إليه 1).
   b. **استخراج تفاصيل متطلبات الوظيفة (JD)** باستخدام Playwright (`browser_navigate` + `browser_snapshot`) ← ثم استخدام WebFetch ← كخيار بديل أخير استخدام WebSearch.
   c. إذا كان الرابط غير قابل للوصول ← قم بتغيير العلامة إلى `- [!]` مع تدوين سبب الخطأ واستمر في معالجة الروابط الأخرى.
   d. **تنفيذ المسار التلقائي بالكامل**: تشغيل التقييم من A إلى G ← إنشاء ملف تقرير بصيغة md ← توليد ملف PDF للسيرة الذاتية المخصصة (فقط إذا كان التقييم 3.0 فما فوق) ← التوثيق الفوري في جدول التتبع.
   e. **نقل العنصر من قسم "Pending" إلى قسم "Processed" (المعالجة)** بصيغة: `- [x] #NNN | URL | Company | Role | Score/5 | PDF ✅/❌`.
3. **إذا كان هناك 3 روابط أو أكثر منتظرة**: قم بإطلاق وكلاء فرعيين بالتوازي (باستخدام أداة الوكلاء الفرعيين مع خيار التشغيل في الخلفية `run_in_background`) لرفع سرعة المعالجة للحد الأقصى.
4. **بعد اكتمال جميع التقييمات**: قم بتشغيل `node merge-tracker.mjs` لدمج جميع إضافات التتبع في ملف `data/applications.md` وتجنب التكرارات.
5. **في النهاية**: اعرض جدولاً يلخص الفرص التي تمت معالجتها:

```text
| # | الشركة | الوظيفة | التقييم | السيرة الذاتية PDF | الإجراء المقترح |
```

---

## هيكل وصيغة ملف pipeline.md

```markdown
## Pending
- [ ] https://jobs.example.com/posting/123
- [ ] https://boards.greenhouse.io/company/jobs/456 | Company Inc | Senior PM
- [!] https://private.url/job — Error: login required

## Processed
- [x] #143 | https://jobs.example.com/posting/789 | Acme Corp | AI PM | 4.2/5 | PDF ✅
- [x] #144 | https://boards.greenhouse.io/xyz/jobs/012 | BigCo | SA | 2.1/5 | PDF ❌
```

---

## الاستخراج الذكي لمتطلبات الوظيفة (JD) من الرابط

1. **أداة Playwright (الخيار المفضل):** استخدام أداة التنقل وأخذ لقطة للصفحة (`browser_navigate` + `browser_snapshot`). تعمل بكفاءة عالية مع كافة تطبيقات الصفحة الواحدة (SPAs).
2. **أداة WebFetch (الخيار الاحتياطي الأول):** للصفحات الساكنة أو عند عدم توفر Playwright في البيئة المحلية.
3. **أداة WebSearch (الخيار الاحتياطي الأخير):** للبحث في المنصات الثانوية التي تقوم بنسخ وفهرسة الإعلان الأصلي للوظيفة.

**حالات خاصة:**
- **LinkedIn:** قد تطلب المنصة تسجيل الدخول لقراءة محتوى الوصف الوظيفي ← في هذه الحالة، ضع العلامة `[!]` واطلب من المستخدم نسخ ولصق نص الإعلان يدوياً في المحادثة.
- **ملفات PDF:** إذا كان الرابط يشير مباشرة إلى ملف PDF، فاستخدم أداة قراءة الملفات مباشرة لقراءة محتوياته.
- **البادئة `local:`:** لقراءة ملف محلي على الجهاز. مثال: `local:jds/linkedin-pm-ai.md` ← سيقوم النظام بفتح وقراءة الملف المحلي `jds/linkedin-pm-ai.md`.

---

## الترقيم التلقائي للتقارير

1. فحص وسرد كافة الملفات الموجودة في مجلد `reports/`.
2. استخراج الرقم التسلسلي من البادئة الخاصة بكل ملف (مثال: الملف `142-company...` يمثل الرقم 142).
3. تعيين الرقم الجديد للتقرير القادم = أكبر رقم تم العثور عليه مضافاً إليه 1.

---

## التحقق من مزامنة وتناسق البيانات

قبل البدء في معالجة أي رابط، تحقق دائماً من سلامة ومزامنة مصادر البيانات وسيرتك الذاتية عن طريق تشغيل:

```bash
node cv-sync-check.mjs
```

إذا تم اكتشاف أي عدم تطابق أو مشاكل في المزامنة، فقم بتنبيه وتحذير المستخدم فوراً قبل متابعة العمل.
