الحجوزات›تنفيذ نقل عمل على لوحة الجدولة
تنفيذ نقل عمل على لوحة الجدولة
يطبّق النقل الذي عاينته /move/preview: يضع العمل على الفنّي في الوقت الجديد ويدفع الأعمال المُزاحة إلى الخلف، بشكل ذرّي (قفل إرشادي لكل فنّي؛ يعيد الخادم حساب الخطة ويثبّت كل عمل على status_version الخاص به — والانحراف منذ المعاينة يُرجع 409 SCHEDULE_MOVE_PLAN_DRIFTED، أعد المعاينة). نفس متن المعاينة + `expected_version` اختياري. راجع SCHEDULE_BOARD_DESIGN.md. الخطوات التالية عند 409: SCHEDULE_MOVE_PLAN_DRIFTED — تغيّر الجدول منذ معاينتك (أو لم تعد expected_move_ids متطابقة): أعد المعاينة، واعرض الخطة الجديدة، ونفّذ مجددًا. جميع الرموز الأخرى — العلاجات نفسها كما في /move/preview.
المعاملات
idstringpathمطلوب
معرّف طلب العمل (UUID أو short_code)
Idempotency-Keystringheaderاختياري
Unique key making retries safe: a repeat send with the same key replays the original response (header Idempotent-Replayed: true) instead of re-running the operation. Reusing a key with a different body returns 422 IDEMPOTENCY_KEY_REUSE.
expected_member_idsarray<string>bodyاختياري
ExpectedMemberIDs — لنقل الطواقم فقط: مجموعة الأعضاء الكاملة التي وفّرتها المعاينة (أعد إرسال data.members[].technician_id). إذا كانت إعادة تخطيط التنفيذ ستوفّر مجموعة مختلفة (حُجز بديل مُعايَن في هذه الأثناء)، يُرفض التنفيذ بـ SCHEDULE_MOVE_PLAN_DRIFTED — لا يُوافَق على تبديلات الطاقم دون رؤيتها أبدًا. أغفله لإلغاء هذا الخيار.
expected_move_idsarray<string>bodyاختياري
ExpectedMoveIDs — معرّفات الأعمال المُزاحة التي أرجعتها المعاينة (أعد إرسال data.days[].moves[].job_id). اختياري لكنه موصى به: إذا تغيّر الجدول بحيث يدفع التنفيذ مجموعة مختلفة (مثل عمل حُجز على الفنّي المستهدف منذ المعاينة)، يُرفض التنفيذ بـ SCHEDULE_MOVE_PLAN_DRIFTED بدلًا من دفع عمل غير مرئي بصمت.
expected_versionintegerbodyاختياري
ExpectedVersion — قيمة status_version للعمل المنقول من المعاينة (0 = التثبيت على القيمة المقروءة من الخطة الجديدة؛ القيم السالبة مرفوضة).
modeenumbodyمطلوب
Cascade mode: overtime | next_day (must match the preview).
start_atstringbodyمطلوب
New start — business-local naive datetime, no offset. Must match the preview and be in the future.
technician_idstringbodyمطلوب
Target technician (must match the preview).
POST/v1/job-requests/{id}/move/commit
curl -X POST "https://api.crisphive.com/v1/job-requests/9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01/move/commit" \ -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \ -H "Content-Type: application/json" \ -d '{ "expected_member_ids": [ "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" ], "expected_move_ids": [ "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" ], "expected_version": 1, "mode": "overtime", "start_at": "2030-06-14T09:00:00", "technician_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" }'
نص الطلب
{
"expected_member_ids": [
],
"expected_move_ids": [
],
"expected_version": ,
"mode": ,
"start_at": ,
"technician_id":
}
Bearer