Skip to content

Latest commit

 

History

History
15 lines (12 loc) · 3.1 KB

spec-alignment.md

File metadata and controls

15 lines (12 loc) · 3.1 KB

방 내부 스펙 정합화

기준: 공통, 백엔드, 2026-09-15 개정.

  • Phase 1은 인증 피드·멤버십·초대·자동 강퇴 세 종류·신고/차단이다. 방 공지·댓글 API는 매핑하지 않으며, 사람이 집행하는 강퇴·위임·클레임은 기존 기능 플래그로 비활성화한다.
  • V18에서 방장(사용자)의 공지 Notice·읽음 NoticeRead·댓글/답글 room_comments를 제거한다. 운영자 공지 announcements와 /api/v1/admin/notices, 인앱 notifications, 감시자 watcher_notices, 범용 RoomActivityLog는 유지한다. pinnedNotice:null 응답 호환도 유지한다.
  • AutomaticKickService가 챌린지 → 멤버 순서로 잠그고 원인 이벤트 UNIQUE와 함께 강퇴 근거, 멤버십 종료, 랭킹 제거, 알림을 기록한다. 부정행위는 영구 차단, 나머지는 1·2·4주씩 증가한다. 보관 가능한 날짜의 최대치 외에 정책 상한은 없다.
  • challenge_kicks는 방 삭제 후에도 남는다. 제재 이력 조회와 영구 차단 게이트가 이 원천을 사용한다. 자진 탈퇴도 challenge_rejoin_backoffs에 1주를 기록하지만 강퇴 횟수는 올리지 않는다.
  • 인증 모듈은 권한 공백과 안내를 함께 기록한다. 감지 시점에 걸친 부분 주기는 제외하고 다음 공통 사이클부터 두 사이클을 기다린다. 이후 측정이 도착하면 대기를 해소한다. 재가입 전의 이벤트는 현재 멤버를 강퇴하지 않는다.
  • 점수 모듈의 마감 이벤트를 아웃박스로 받아 2연속 실패 경고, 3연속 실패 강퇴를 집행한다. 강퇴 자체에 연속 실패 추가 감점을 붙이지 않는다. 권한 강퇴 점수는 별도 아웃박스로 전달한다.
  • 인증 대상 생성이 전부 끝나고, 재시도로 미뤄진 PENDING 판정까지 소진돼야 완료 마커를 쓴다. 랭킹은 이 마커를 확인한 뒤 하루 한 번 갱신한다. 재기동 시 빠진 대상 생성도 복구한다.
  • 방 밖 랭킹은 멤버별 기여분을 일일 스냅샷으로 보존한다. 이탈 트랜잭션에서 해당 기여분과 순위를 즉시 정리하며, 다른 멤버의 새 판정은 다음 일일 갱신까지 반영하지 않는다. 파생 스냅샷은 역방향 FK 잠금 충돌을 피하기 위해 논리 참조하며, 방 삭제 트랜잭션에서 명시적으로 정리한다.
  • 실패 피드 노출 시 verificationId/shareableAt/viewedAt을 기록한다. 신고 스냅샷에는 심사 전 원문·상태와 해당 방 멤버십·인증 근거를 보존한다. 일반 사용자 응답에는 스냅샷을 노출하지 않는다.

V59는 현재 V1~V11 베이스라인으로 통합되기 전의 이력 번호다. V59는 강퇴/재가입 원천, 권한 대기, 판정 완료 마커와 랭킹 기여분을 추가한다. 기존 멤버십 필드는 확장 배포 호환용으로 유지한다. 이전 버전으로 앱만 되돌리면 새 기록이 갱신되지 않으므로 마이그레이션 이후에는 이 버전 이상을 사용한다.