diff --git a/backend/services/sundayMaple.js b/backend/services/sundayMaple.js index c977702..93196eb 100644 --- a/backend/services/sundayMaple.js +++ b/backend/services/sundayMaple.js @@ -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; } /** diff --git a/backend/services/sundayMapleCron.js b/backend/services/sundayMapleCron.js index 70aaa8b..759e5bc 100644 --- a/backend/services/sundayMapleCron.js +++ b/backend/services/sundayMapleCron.js @@ -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 스케줄 등록'); }