From 718404918686ee91f3789081c9df88da2dde61c0 Mon Sep 17 00:00:00 2001 From: caadiq Date: Sat, 2 May 2026 18:56:22 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8D=AC=EB=8D=B0=EC=9D=B4=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B4=ED=94=8C=20cron=20+=20=EC=9C=88=EB=8F=84=EC=9A=B0?= =?UTF-8?q?=EC=97=90=20=EB=AA=A9=EC=9A=94=EC=9D=BC=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?(=EA=B8=88=EC=9A=94=EC=9D=BC=20=EA=B3=B5=ED=9C=B4=EC=9D=BC=20?= =?UTF-8?q?=EB=8C=80=EC=9D=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 금요일이 공휴일이면 목요일에 선공개되는 케이스 지원. - cron 스케줄: 목/금 9시 ('0 9 * * 4,5') - currentWeekFriday: 목요일이면 내일 금요일을 week_start 로 (이번 주 사이클로 흡수) - isInSundayWindow: 목요일도 포함. 해당 주차 row 가 없으면 어차피 available: false Co-Authored-By: Claude Opus 4.7 (1M context) --- backend/services/sundayMaple.js | 16 +++++++++------- backend/services/sundayMapleCron.js | 6 +++--- 2 files changed, 12 insertions(+), 10 deletions(-) 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 스케줄 등록'); }