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 시작 / 끝 엔진 단계 순수 함수 모듈 저장소 쓰기 흐름