미래 날짜 하나로 예약 발행을 만들었습니다
연재 글을 여러 편 준비하자 곧바로 예약 발행이 필요해졌습니다. 처음에는 scheduled_at 같은 새 필드를 만들 수도 있었습니다. 하지만 예약일과 화면에 보이는 날짜를 따로 관리하면 언젠가 둘이 어긋납니다.
연재 글을 여러 편 준비하자 곧바로 예약 발행이 필요해졌습니다. 처음에는 scheduled_at 같은 새 필드를 만들 수도 있었습니다. 하지만 예약일과 화면에 보이는 날짜를 따로 관리하면 언젠가 둘이 어긋납니다.
처음에는 기존 date를 예약일까지 겸하게 했습니다. 실제 원고가 늘자 이 이름은 작성일인지 발행일인지 자꾸 설명이 필요했습니다. 결국 뜻을 숨기지 않는 publish_on 하나를 예약일의 기준으로 정했습니다. 21시 수집 작업은 status: ready이면서 publish_on이 다음 자정까지 도달한 글만 가져갑니다. 더 먼 날짜의 글은 그대로 예약 대기로 남습니다.
사람에게는 “publish_on에 적은 날짜에 뜹니다”라고 설명할 수 있습니다. 파일명 앞 여덟 자리와 publish_on도 같아야 합니다. 둘이 다르면 운영자가 보는 순서와 실제 발행일이 갈라지므로 검수 단계에서 멈춥니다.
예약 취소도 별도 기능이 필요 없습니다. ready를 다시 draft로 돌리면 됩니다. 사람이 발행 의사를 거두는 것이므로 같은 사람 게이트를 그대로 사용합니다.
실제 구현에서는 다음 자정 경계, 하루 뒤, 먼 미래, 이미 지난 날짜까지 테스트했습니다. 특히 경계에서 하루가 밀리거나 당겨지는 오류가 없도록 날짜 조건을 따로 확인했습니다.
CHANGE LOG
- 예약일 기준을 뜻이 분명한
publish_on한 곳으로 통일 - 파일명 날짜와
publish_on불일치 시 검수 차단 - 21시 수집에서
publish_on <= 다음 자정 날짜조건 적용 - 미래
ready원고는 예약 대기로 유지