ko
예약긴급 삽입 + 연쇄 재조정 커밋

긴급 삽입 + 연쇄 재조정 커밋

/emergency/preview에서 미리 본 연쇄 재조정을 적용합니다: 긴급 작업을 기사에게 배정하고 밀려나는 작업들을 뒤로 미룹니다(또는 `displacement_mode=reassign`이면 먼저 미리보기된 대체 기사에게 재배정), 원자적으로 처리됩니다. Idempotency-Key를 지원합니다. 서버는 잠금 하에서 계획을 재계산하고 각 작업을 status_version으로 펜싱합니다 — 미리보기 이후 무언가 바뀌었다면 409 EMERGENCY_RESCHEDULE_PLAN_DRIFTED를 반환합니다(다시 미리보기하세요). preview와 동일한 본문 + 선택적 `emergency_expected_version`. 독립된 기능입니다(EMERGENCY_RESCHEDULE_DESIGN.md 참고). 409 다음 단계: EMERGENCY_RESCHEDULE_PLAN_DRIFTED — 미리보기와 이 커밋 사이에 일정이 바뀜(다른 예약/이동이 레인을 차지함): /preview를 다시 호출하고, 새 계획을 보여준 뒤 커밋하세요. EMERGENCY_RESCHEDULE_SLOT_OCCUPIED — 도착 창이 이동 불가 앵커(P0/크루/멀티데이)에 막힘: 다른 기사나 시각을 선택하세요. 그 외 코드 — /candidates와 동일한 대응책.

인수

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.
displacement_modeenumbody선택
밀려나는 작업의 처리 방식: reschedule(기본값) 또는 reassign — 미리보기와 일치해야 합니다.
emergency_expected_versionintegerbody선택
미리보기된 작업의 낙관적 잠금 펜스(0 = 서버에서 읽은 버전으로 펜싱).
emergency_job_idstringbody필수
삽입할 P0 작업의 ID.
expected_move_idsarray<string>body선택
ExpectedMoveIDs — 미리보기가 반환한 밀려나는 작업 ID들(data.days[].moves[].job_id와 data.reassignments[].job_id를 모두 그대로 전달). 권장 사항: 재계산된 연쇄가 다른 집합을 건드리게 되면(미리보기 이후 레인에 예약된 작업 등) 커밋은 코디네이터가 본 적 없는 작업을 밀어내는 대신 EMERGENCY_RESCHEDULE_PLAN_DRIFTED로 거부됩니다. 사용하지 않으려면 생략하세요.
modeenumbody필수
연쇄 모드: overtime | next_day (미리보기와 일치해야 합니다).
start_atstringbody필수
원하는 시작 시각 — 비즈니스 로컬 naive datetime. 미래 시각이어야 합니다.
technician_idstringbody필수
대상 기사(비즈니스에 속해야 함).
POST/v1/job-requests/emergency/commit
curl -X POST "https://api.crisphive.com/v1/job-requests/emergency/commit" \
  -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \
  -H "Content-Type: application/json" \
  -d '{
  "displacement_mode": "reschedule",
  "emergency_expected_version": 1,
  "emergency_job_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01",
  "expected_move_ids": [
    "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01"
  ],
  "mode": "overtime",
  "start_at": "2030-06-14T09:00:00",
  "technician_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01"
}'
요청 본문
{
"displacement_mode": ,
"emergency_expected_version": ,
"emergency_job_id": ,
"expected_move_ids": [
],
"mode": ,
"start_at": ,
"technician_id":
}

응답