Skip to content

fix: 빈 식단 칸이 없어질 때까지 재확인하고 중복 업로드 방지 - #39

Merged
rover0811 merged 11 commits into
mainfrom
fix/reconcile-menu-schedule
Sep 30, 2026
Merged

rover0811 merged 11 commits into
mainfrom
fix/reconcile-menu-schedule

Conversation

@rover0811

@rover0811 rover0811 commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

한 줄 요약

크롤러는 이제 빈 식단 칸이 없어질 때까지 다시 확인합니다. 이미 있는 칸은 다시 올리지 않습니다.

리뷰어가 할 일

  • functions/handler.py의 publish_if_missing을 확인합니다. 모든 POST가 이 함수를 통과합니다.
  • 아래 "배포 규칙" 2개를 읽습니다.

prod에는 9/30에 이미 배포했습니다. 지금 정상으로 동작합니다.

무엇이 고장났나요?

  1. 크롤러는 날짜마다 한 번만 확인했습니다. 그때 식단이 없으면 그 날짜는 영원히 비었습니다. (9/29 화요일)
  2. 기숙사 사이트는 일요일을 요청하면 다음 주를 보냅니다. 그래서 일요일 식단이 매주 비었습니다. (9/27, 10/4)

무엇을 바꿨나요?

  1. POST 전에 GET으로 확인합니다. 식단이 있으면 올리지 않습니다. GET이 실패해도 올리지 않습니다.
  2. 빈 칸은 다음 실행에서 다시 확인합니다. 기숙사는 매일 08시, 09시, 10시에 실행합니다.
  3. 기숙사 사이트에는 항상 그 주의 월요일을 요청합니다. 그래서 일요일 식단도 받습니다.

배포 규칙

  1. 캐시 없이 빌드합니다. rm -rf .aws-sam 후 make deploy를 실행합니다. 캐시에 남은 오래된 파일 때문에 Lambda가 15분 동안 멈췄습니다.
  2. ReservedConcurrentExecutions를 추가하지 않습니다. 계정의 동시 실행 한도가 10이라서 배포가 실패합니다.
자세한 내용 (필요할 때만 읽으세요)

실행 시각 (KST)

식당 시각 확인하는 기간
기숙사 매일 08:00, 09:00, 10:00 이번 주
다른 식당 일요일 16:00 다음 주
다른 식당 월요일부터 목요일까지 16:05 이번 주의 남은 날짜

재시도

  • 일요일 16:00 실행만 Step Functions로 재시도합니다. 2시간 간격으로 9회 재시도하고, 월요일 10:00 무렵에 끝납니다.
  • 재시도가 자정을 넘으면 delayed_schedule로 같은 주를 확인합니다.
  • 다른 실행은 재시도하지 않습니다. 다음 실행이 재시도를 대신합니다.

알림

  • 기숙사는 10:00 실행 후에 오늘 칸이 비어 있으면 Slack으로 알립니다.
  • 다른 식당은 재시도가 끝난 후에도 칸이 비어 있으면 알립니다.

테스트

전체 197개가 통과합니다. 추가한 회귀 테스트는 다음과 같습니다.

  • 08:00에는 월요일만 있고 09:00에 나머지가 올라오는 경우
  • 이미 있는 칸을 POST하지 않는 경우
  • GET이 실패하면 POST하지 않는 경우
  • 일요일을 요청해도 그 주의 월요일로 요청하는 경우
  • 자정을 넘긴 재시도가 같은 주를 확인하는 경우

이 PR이 하지 않는 것

  • 주중에 바뀐 식단은 반영하지 않습니다. 이미 있는 칸은 수정하지 않습니다.
  • 일요일 스케줄 논리 ID는 WeeklySeoulSchedule로 바꿨습니다. CloudFormation이 같은 ID의 타입 변경을 거부하기 때문입니다.

@rover0811
rover0811 merged commit e72603e into main Sep 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant