التوظيف: ينتقل المرشحون عبر مسار الشاغر (الفرز، والتقييم، والمقابلة، والعرض) حتى يُعيَّن أحدهم.
الموارد
| المورد | الواجهة البرمجية | الصفحات |
|---|---|---|
| الطلبات | قراءة، وإنشاء (إضافة مرشح إلى شاغر)، ونقل بين المراحل، ورفض، وتعيين | الطلبات |
| المقابلات | قراءة، وإنشاء (عرض مواعيد)، وتعديل (اقتراح مواعيد جديدة أو إلغاء) | المقابلات |
| العروض | قراءة، وتنزيل خطاب العرض | العروض |
المسار المعتاد
- أضف مرشحًا إلى شاغر:
POST /api/v1/applicationsمع{ "openingId": "…", "candidate": { "externalSystem": "jobboard", "externalId": "C-881" } }. - تابع نتائج الفرز والتقييم بـ
application.updatedوapplication.stage_changed. - اعرض مواعيد المقابلة:
POST /api/v1/interviews؛ فيختار المرشح موعدًا (interview.updated)، وتقيّمها اللجنة (interview.completed). - انقل الطلب إلى
OFFERED(recruitment.offer.issue)، ثم اقرأ خطاب العرض من/api/v1/offers/{id}/file(يحتاجrecruitment.candidate.contact). - عيّن:
POST /api/v1/applications/{id}/hire. يصبح المرشح موظفًا: تتلقىapplication.hiredوemployee.created، وتنتقل روابط المرشح الخارجية إلى الموظف.
قواعد تستحق المعرفة
- إضافة مرشح تتبع مسار التوظيف للشاغر، كما في صفحة الوظائف (
409 conflictمعopening_internal_onlyأوnot_yet_external)؛ ويتقدم المرشح مرة واحدة لكل شاغر (already_applied). - يجب أن يكون الشاغر
OPEN(opening_not_open). - التعيين يشغّل عملية التسليم نفسها التي يشغلها زر التعيين في التطبيق، بما فيها فحص سعة المقعد (
position_full). - الطلب المعيَّن نهائي: نقله أو رفضه أو تعيينه مرة أخرى يعيد
409 conflict(already_hired). والطلب المرفوض لا يمكن تعيينه (already_rejected)؛ أعده أولاً إلى مرحلة نشطة. - إلغاء مقابلة ملغاة بالفعل لا يغير شيئًا؛ والمقابلة المكتملة تعيد
409 conflict(interview_closed).