기록의 배경

여러 성우가 참여하는 녹음은 가능한 시간을 모으는 일과 실제 녹음 순서를 정하는 일이 다릅니다. VoiceFinder 캐스팅 스케줄러는 성우별 가용시간을 같은 세션에 모으고, 필요한 녹음시간과 운영 조건을 함께 계산해 비교 가능한 배치안으로 만듭니다.

성우별 가능 시간을 같은 기준으로 모으기

관리자는 녹음 기간이나 특정 날짜, 운영 시간, 참여 성우, 성우별 필요 녹음시간을 세션으로 설정합니다. 각 성우에게는 자신의 가능 시간을 제출할 수 있는 링크가 주어집니다. 제출 결과는 같은 시간 격자에 모이므로 누가 언제 가능한지와 아직 제출하지 않은 대상을 함께 확인할 수 있습니다.

카드의 가용시간 표는 VoiceFinder 실제 스케줄러 UI에 예시 데이터를 넣어 촬영한 자료입니다. 성우 이름과 녹음 날짜는 가상 값이며, 모바일에서 핵심 영역을 보기 쉽도록 오전 시간대와 범례를 집중 표시했습니다. 실제 고객 일정이나 솔버를 실행해 얻은 결과를 공개한 것은 아닙니다. 공개 링크의 접근 보호와 변경 요청 같은 운영 기능도 있지만, 이번 기록은 가용시간이 배치 입력으로 바뀌는 핵심 흐름에 집중합니다.

지켜야 할 제약과 더 좋은 배치의 목표 나누기

CP-SAT 솔버는 성우별 필요 슬롯 수를 정확히 채우고, 한 슬롯에 여러 성우를 겹쳐 배정하지 않으며, 제출 가용시간과 세션의 예약 마감 슬롯을 벗어나지 않도록 계산합니다. 지정한 배정을 잠그는 조건과 성우당 하루 최대 시간도 하드 제약으로 다룹니다. 이 설명은 솔버의 배치 계산에 관한 것이며, 수동 수정이나 최종 확정 화면이 모든 잘못된 상태를 막는다는 보장은 아닙니다.

같은 날 연속 배정, 쪼개짐 방지, 점심 회피, 고립 슬롯과 시간대 일관성은 더 좋은 안을 고르는 소프트 최적화입니다. 숫자 가중치는 고급 설정에서 조정할 수 있으며, 높은 가중치도 반드시 지켜지는 하드 조건과 같지는 않습니다. 가능한 배치가 부족하면 선호 조건이 충족되지 않을 수 있어 운영자가 결과를 확인합니다.

가능한 안과 불가능한 조건을 구분하기

배치 후보를 만드는 경로도 나눴습니다. AI 보조 방식은 메모에서 시간 조건을 추출해 그리디 배치를 제안하고, 솔버 방식은 OR-Tools CP-SAT로 제약을 계산합니다. 두 방식의 안을 비교하되, 최종 선택은 운영자에게 남깁니다.

솔버는 제약을 만족하는 배치를 찾으면 후보안을 만들고, 만족하는 조합이 없으면 불가 상태를 명시합니다. 이 결과는 주어진 조건 묶음 안에서 가능한 해를 찾지 못했다는 근거입니다. 입력 화면이 모든 잘못된 상태를 막았다는 보장이나, 현실의 모든 선택지를 검토했다는 뜻은 아닙니다.

불가 결과가 나오면 조건을 단계적으로 완화해 다시 시도할 수 있지만 무한히 규칙을 낮추지는 않습니다. 운영자는 어떤 제약을 바꿨는지 확인하고, 여러 후보안을 비교하거나 필요하면 수동으로 조정합니다. 특정 성우의 배정을 잠가 두고 나머지만 다시 계산하는 흐름도 지원합니다.

최종 선택은 운영 판단으로 남기기

스케줄러는 후보를 계산하지만 최종안을 자동으로 확정하지 않습니다. 관리자가 안을 비교해 선택하고 고객사 컨펌을 거쳐 최종 일정으로 확정합니다. 이후 캘린더 충돌 확인과 알림 흐름이 이어지지만, 외부 연동 성공을 솔버의 유효성이나 최종 확정과 같은 의미로 묶지 않습니다.

기록 정보

2026년 10월 2일에 기능과 설계를 정리한 기술 기록입니다. 표시된 날짜는 이 글의 정리일이며, 각 기능의 개발일이나 출시일을 뜻하지 않습니다.

일정 이미지는 실제 ScheduleBoard·SchedulePreview 컴포넌트에 익명 성우 A·B·C와 가상 시간표를 넣은 캡처를 바탕으로 AI 편집했습니다. 조건 도식은 하드 제약과 소프트 목적을 구분합니다. 실제 고객 일정·솔버 실행·고객 컨펌·외부 등록 성공의 증거가 아닙니다. 2026년 10월 6일에 그림 배치를 교체했으며 제목·설명은 별도 웹 텍스트입니다.