창립기념일 일정 등록 통계 제외 설계
목적
isAnniversary: true로 표시된 창립기념일 연례 일정은 일정 등록 횟수(postCount)에 포함하지 않는다. 이 규칙은 기존 통계 재계산과 앞으로의 일정 삭제에 동일하게 적용해, 재계산 후에도 해당 일정이 다소의 일정 등록 수를 다시 늘리지 않게 한다.
범위
- 창립기념일 일정은 모든 사용자의
postCount에서 제외한다. - 참석 횟수(
attendCount)와 그 밖의 통계는 그대로 유지한다. - 일반 게임 일정과 공지의 기존 통계 동작은 변경하지 않는다.
현재 문제
통계 화면의 일정 목록과 일부 표시에는 이미 isAnniversary 제외 조건이 있지만, stats/global 전체 재계산은 모든 type: "event" 문서에 대해 postCount를 증가시킨다. 따라서 수동으로 다소의 등록 횟수를 0으로 바꿔도 재계산하면 창립기념일 일정 수만큼 다시 증가한다.
현재 일정 삭제 트랜잭션도 모든 게임 일정을 postCount 차감 대상으로 취급하므로, 통계에 원래 포함되지 않아야 하는 창립기념일 일정도 삭제 시 차감할 수 있다.
설계
등록 횟수 포함 기준
일정이 type === "event"이면서 isAnniversary !== true일 때만 일정 등록 횟수에 포함한다. isAnniversary가 없거나 false인 기존 일반 일정은 종전과 동일하게 포함한다.
통계 재계산
관리자 재계산은 모든 게임 일정에서 참석 횟수는 계속 집계한다. 단, postCount 증가는 일반 일정에만 적용한다. 따라서 창립기념일의 작성자는 재계산 뒤에도 해당 일정으로 등록 횟수가 증가하지 않는다.
일정 삭제
삭제 트랜잭션은 최신 게시글 문서를 다시 읽은 뒤, 일반 게임 일정일 때만 작성자의 postCount를 감소시킨다. 창립기념일 일정과 공지는 게시글만 삭제하며 등록 횟수는 변경하지 않는다.
검증
- 재계산 시 창립기념일 일정의 작성자
postCount는 증가하지 않는다. - 동일 일정의 참석자는 기존처럼
attendCount가 증가한다. - 창립기념일 삭제는
postCount를 변경하지 않는다. - 일반 일정 삭제는 기존처럼
postCount를 1 감소시키되 음수가 되지 않는다. - 공지 삭제는 등록 횟수를 변경하지 않는다.