피드로 돌아가기
Dev.toBackend
원문 읽기
Calendar UI에서 Constraint-Solving 기반 스케줄링 구조로의 전환
Building a shift schedule generator taught me that scheduling is harder than it looks
AI 요약
Context
단순 테이블 형태의 데이터 할당으로 접근했던 Shift Scheduling의 복잡성 한계 직면. 단순 유효성 검증을 넘어 상충하는 제약 조건과 공정성(Fairness)을 동시에 만족시켜야 하는 최적화 문제로 정의함.
Technical Solution
- 단순 UI 캘린더 관점을 배제하고 각 Shift를 채워야 할 Slot으로 정의하는 Constraint-Solving 모델 도입
- 절대 준수해야 하는 Hard Constraints(동시 근무 불가, 가용성 제한)와 최적화 대상인 Soft Constraints(근무 시간 균형, 불평등 분배 방지)로 로직 분리
- 4-on/2-off, Pitman 등 산업 표준 Rotation Pattern을 초기 상태(Initial State)로 설정하여 탐색 공간 최적화
- 생성된 결과물이 수학적 정답을 넘어 인간 관리자가 수용 가능한 'Reasonable'한 수준이 되도록 Fairness Rule 적용
- 입력 데이터 부족으로 인한 생성 실패 시 단순 에러 반환 대신 제약 조건 충돌 지점을 분석하여 사용자에게 제공하는 Feedback Loop 설계
실천 포인트
1. 도메인 모델 설계 시 단순 CRUD 수준의 데이터 매핑인지, 제약 조건 기반의 최적화 문제인지 먼저 구분할 것
2. 비즈니스 요구사항을 Hard Constraint와 Soft Constraint로 계층화하여 알고리즘의 우선순위를 정의할 것
3. 완전히 자동화된 결과보다 인간의 직관(Reasonableness)을 반영할 수 있는 휴리스틱 규칙을 설계에 포함할 것
4. 시스템 실패 시 단순 Exception 처리가 아닌, 제약 조건의 병목 지점을 설명하는 진단 로직을 구축할 것