장단콩 보드게임 & 미니어처 게임 클럽

시스템 창립기념일 일정 자동 생성 설계

목적

매년 5월 23일 장단콩 클럽 창립기념일 게임 일정을 시스템이 자동으로 생성한다. 생성된 일정은 일반 게임 일정 게시판과 캘린더에서 보이며, 회원은 최대 20명까지 참가 신청할 수 있다.

일정 생성

Firebase Cloud Scheduler가 Asia/Seoul 기준 매일 자정에 실행된다. 실행 시점의 날짜가 5월 23일 이후이고 해당 연도 창립기념일 문서가 없으면 새 문서를 생성한다. 따라서 정기 실행 실패, 함수 최초 배포 시점, 또는 과거 누락으로 인해 빠진 해당 연도 일정도 다음 실행에서 복구된다.

문서 ID는 anniversary-YYYY로 고정한다. 생성 전 해당 ID를 확인하고 없을 때만 만들므로, 재시도와 동시 실행에도 연도별로 한 건만 생성된다.

생성 문서의 필드는 다음과 같다.

게시판과 상세 화면

게임 일정 게시판은 isAnniversary 일정도 불러와 캘린더와 목록에 표시한다. 게시글 상세 화면에서는 authorName이 있으면 이를 우선 표시하므로, 자동 일정의 작성자는 알 수 없음이 아니라 시스템으로 보인다.

참가 신청은 일반 일정과 동일하게 동작한다. 시스템 UID와 일치하는 실제 회원은 없으므로 작성자 전용 확정·수정·삭제 권한은 관리자에게만 있다.

통계 및 삭제

창립기념일 일정은 참가 신청을 받을 수 있지만 시스템의 일정 등록 횟수, 일정 메이커 랭킹, 등록 횟수 기반 트로피에는 포함하지 않는다. 통계 재계산은 isAnniversary === true 일정에서 postCount를 증가시키지 않으며, 참석자에 대한 attendCount는 계속 증가시킨다.

관리자가 창립기념일 일정을 삭제해도 시스템의 postCount를 변경하지 않는다. 일반 일정의 등록 횟수 차감 동작은 바꾸지 않는다.

오류 처리와 검증