معاينة نقل عمل على لوحة الجدولة
يحسب (دون كتابة) نتيجة نقل عمل مؤكّد إلى وقت و/أو فنّي جديد: أين يقع، وكل عمل لاحق يُدفَع إلى الخلف وفق `mode`، والتحذيرات التي سيقبلها المنسّق (خروج الأعمال المُزاحة من نوافذها المؤكّدة، والعمل الإضافي). الفنّي نفسه = نقل زمني صرف؛ فنّي مختلف = إعادة إسناد يدوية. للقراءة فقط — آمن للاستدعاء المتكرر أثناء السحب؛ والتنفيذ نقطة نهاية منفصلة. راجع SCHEDULE_BOARD_DESIGN.md. تفصيل التحذير: يحمل تحذير TECH_NOT_FEASIBLE قيمة `reason` = `cannot_arrive_in_time` (التنقّل من موقع بدء يوم الفنّي / بدء الوردية؛ `earliest_feasible_at` (RFC3339 UTC) هو أول وقت في نفس اليوم يمكنه فيه التواجد في الموقع — اقترحه كخانة الإفلات) | `missing_required_skills` | `not_available_today` (لا ساعات عمل، أو إجازة معتمدة، أو خارج منطقة الخدمة) | `not_lead_tier`. في نقل P0 يكون هذا التحذير استرشاديًا (قد ينفّذ المنسّق رغمه)؛ أمّا في p1/p2/p3 فالحالة نفسها هي الحظر الصارم 409 SCHEDULE_MOVE_TECH_INFEASIBLE. الخطوات التالية عند 409: SCHEDULE_MOVE_NOT_ELIGIBLE (العمل غير مؤكّد/غير مسعّر/مؤرشف/مكتمل — غير قابل للنقل) · SCHEDULE_MOVE_IN_PROGRESS (الفنّي ينفّذ بالفعل — لا تنقل) · SCHEDULE_MOVE_IN_PAST (اختر وقتًا في المستقبل) · SCHEDULE_MOVE_OUTSIDE_WINDOW (وقت الوصول خارج النافذة التي أكّدها العميل — حظر صارم؛ اختر وقتًا داخلها) · SCHEDULE_MOVE_SLOT_OCCUPIED (نافذة الوصول محجوبة بمرساة غير قابلة للتحريك — فنّي/وقت آخر) · SCHEDULE_MOVE_TECH_INFEASIBLE (حظر صارم لغير P0: الفنّي المستهدف غير مؤهّل/غير متاح — راجع أسباب تحذير TECH_NOT_FEASIBLE؛ غيّر الفنّي أو الوقت) · SCHEDULE_MOVE_MULTIDAY_UNSUPPORTED (الأعمال متعددة الأيام غير قابلة للنقل في الإصدار v1) · SCHEDULE_MOVE_NO_WORKING_DAY (اختر يوم عمل) · SCHEDULE_MOVE_REQUIRES_FREE_SLOT (نقل غير P0 لا يجوز أن يُزيح — سعة حرّة فقط، ما لم يفعّل المالك allow_non_p0_displacement) · SCHEDULE_MOVE_CREW_UNSTAFFABLE (خانة طاقم لا بديل مجدٍ لها في الوقت الجديد — وقت آخر).
المعاملات
curl -X POST "https://api.crisphive.com/v1/job-requests/9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01/move/preview" \ -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \ -H "Content-Type: application/json" \ -d '{ "mode": "overtime", "start_at": "2030-06-14T09:00:00", "technician_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" }'