썬데이 메이플 cron + 윈도우에 목요일 추가 (금요일 공휴일 대응)

금요일이 공휴일이면 목요일에 선공개되는 케이스 지원.

- cron 스케줄: 목/금 9시 ('0 9 * * 4,5')
- currentWeekFriday: 목요일이면 내일 금요일을 week_start 로 (이번 주 사이클로 흡수)
- isInSundayWindow: 목요일도 포함. 해당 주차 row 가 없으면 어차피 available: false

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
caadiq 2026-05-02 18:56:22 +09:00
parent 928b46f13a
commit 7184049186
2 changed files with 12 additions and 10 deletions

View file

@ -25,22 +25,24 @@ export function detectVariant(title) {
/**
* 금요일 기준의 이번 주차 시작일 (YYYY-MM-DD, KST) 반환
* // 직전 금요일
* /// 이전 금요일
* 다음 금요일 (금요일 공휴일로 목요일 선공개되는 경우 대응)
* // 이번 금요일
* // 지난 금요일
*/
export function currentWeekFriday(now = dayjs().tz(KST)) {
const dow = now.day(); // 0=일 ... 5=금 6=토
// 금요일 기준 diff: 금(5)이면 0, 토(6)이면 -1, 일(0)이면 -2, 월(1)이면 -3 ...
const diff = dow >= 5 ? dow - 5 : dow + 2;
const dow = now.day(); // 0=일 ... 4=목 5=금 6=토
// 목요일은 내일이 금요일이므로 -1
const diff = dow === 4 ? -1 : (dow >= 5 ? dow - 5 : dow + 2);
return now.startOf('day').subtract(diff, 'day').format('YYYY-MM-DD');
}
/**
* ~일요일인지
* 썬데이 메이플 표시 가능한 요일대 (~)
* 목요일은 금요일 공휴일 케이스 대응용. 해당 주차 row 없으면 어차피 available: false.
*/
export function isInSundayWindow(now = dayjs().tz(KST)) {
const dow = now.day();
return dow === 5 || dow === 6 || dow === 0;
return dow === 4 || dow === 5 || dow === 6 || dow === 0;
}
/**

View file

@ -27,9 +27,9 @@ async function runPolling() {
}
/**
* 매주 요일 09:00 KST 실행
* 매주 /09:00 KST 실행 (금요일이 공휴일이면 목요일에 게시되는 경우 대응)
*/
export function scheduleSundayMapleCron() {
cron.schedule('0 9 * * 5', runPolling, { timezone: 'Asia/Seoul' });
console.log('[sunday-maple cron] 매주 요일 09:00 KST 스케줄 등록');
cron.schedule('0 9 * * 4,5', runPolling, { timezone: 'Asia/Seoul' });
console.log('[sunday-maple cron] 매주 목/금 09:00 KST 스케줄 등록');
}