Flowchart · RV Badminton PointCalculator
하루 단위 리플레이 — 정산, 출석 장벽, 피드포워드
하루 단위 리플레이 — 정산, 출석 장벽, 피드포워드
recalc_from_date가 경계일 이후 원장을 지우고 직전 스냅샷으로 MMR을 시드한 뒤, 오늘 이하의 스포츠데이를 하루씩 돌며 그날 매치를 제로섬 정산하고, 종료 시점 출석 패스를 적용하고, end_of_day_mmr을 다음 날로 넘긴다. 루프가 끝나면 게임 포인트를 집계하고 Redis 리더보드를 재구축한다.
예 · 그날을 정산
아니오 · 종료
다음 날로
recalc_from_date
POST /recalc {from_date}
경계일 이후 원장 삭제 · MMR 시드
fetch_end_of_day_mmr_before(경계일)
다음 스포츠데이가
≤ 오늘(KST)?
그날 매치를 제로섬 정산
settlement.py → match_mmr_delta
종료 시점 출석 패스
attendance_pass.py → sportsday_mmr
end_of_day_mmr 피드포워드
다음 날 첫 매치의 시작 MMR
게임 포인트 집계 · Redis 재구축
leaderboard:* · leaguelevel:*
200 OK
출석은 표시용 오버레이가 아니다.
다음 날의 첫 매치는 이 값에서 시작하므로
리플레이는 매치 순이 아니라 하루 순이어야 한다.
MMR(t) = 500 + Σ match_delta + Σ attendance_delta
기본 500 · 최소 0 · 시즌 리셋 없음
LEGEND
시작 / 끝
엔진 단계
순수 함수 모듈
저장소 쓰기
흐름