generated from ttipo/project-base
fix(backend): 계절별 영업시간을 날짜의 달로 골라 영업 중 표시를 바로잡음 #10
Reference in New Issue
Block a user
Delete Branch "fix/seasonal-hours"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
무엇을 · 왜
하절기·동절기처럼 계절마다 시간표가 다른 곳을 어느 계절인지 모른 채 읽고 있었다. 개발 DB 1,117곳 중 30곳이 여기에 해당한다.
4월·912월에도 아침 8시에 영업 중으로 나왔다. 이 달들은 9시에 연다.AI 코스 구현 2단계(후보 거르기·이동 시간·시간표·검증)는 날짜와 시각으로 영업을 확인한다. 그래서 그 전에 고친다.
바뀐 것 —
backend/src/shared/utils/opening-hours.tsseasons): 아래 세 가지 표기를 계절로 읽는다.[5월~8월]08:00~19:00하절기(4월~10월) …,- 3월~10월 09:00~18:0010:00~23:00 (4월~11월)isOpenAt(parsed, 'YYYY-MM-DD', 분): 요일 대신 날짜를 받아 그 달의 시간표를 고른다. 자정을 넘긴 영업은 전날의 달로 본다.kstClock은{ date, minutes }를 돌려준다. 장소 목록·상세의openNow는 그 날짜로 판단한다(place.service.ts).restSeasons): 시기마다 쉬는 요일이 다른 표기를 읽는다. 예를 들어 대구창의융합교육원은 37월·912월에는 월요일, 1·2·8월에는 일요일에 쉰다.closedPeriods): 쉬는날 칸에 기간만 적은 것("매년 12월3월")과 쉰다는 말이 붙은 기간("12월2월 휴장")을 읽는다.달 없이 "하절기/동절기"만 적은 곳 (7곳)
하절기는 4
9월, 동절기는 122월만 확실하다고 본다. 대구 원문의 계절 범위가 기관마다 310월·49월·410월·411월 등으로 달라서다.3·10·11월에는 두 시간표의 답이 같을 때만 판단한다. 예를 들어 수창청춘맨숀은 하절기 10:00
19:00, 동절기 10:0018:00이다. 11월 14시에는 두 시간표 모두 열려 있어 영업 중으로 나온다. 18시 반에는 답이 갈려 미확인으로 나온다.계절 경계가 달 중간에 있으면(예: 3월 15일부터) 그 달도 확실하지 않은 달로 둔다.
쉬는날 칸에 기간만 적은 곳
그 기간 내내 휴무로 읽는다. 강변축구장은 쉬는날 칸에 "동절기 (11월
2월)"라고 적혀 있고, 영업시간 칸의 동절기는 103월이라 둘이 어긋난다. 이 경우 쉬는날 칸을 따라 11~2월을 휴장으로 본다.이전 파서와 비교 — 개발 DB 1,117곳
2026년 각 달의 7일을 30분 간격으로 두 파서에 넣어 영업 중 판단을 비교했다.
계절과 상관없는 곳은 해석 결과가 하나도 바뀌지 않았다.
남은 한계 (장소 DB 문서 §4.1 에 적었다)
문서
docs/design/ai-course.md: §3.3 영업·영업시간 미확인 판단, §14 2단계 순서docs/design/place-db.md: §4.1 계절별 시간표docs/ai-eval/README.md: 계절별 시간표 항목확인 방법
개발 DB 는 이미 다시 해석해 두었다. 한 번 더 돌려도 바뀌는 곳은 0곳이다.
다른 DB 에 배포할 때는
reparse-hours를 한 번 돌린다. 그 전에는 저장된 해석 결과가 예전 그대로라 영업 중 판단도 예전과 같다(위 30곳도 예전처럼 나온다).영향 범위
체크리스트
npm run sync:error-codes실행 후 생성 파일까지 커밋: 해당 없음🤖 Generated with Claude Code