Skip to content

feat: 무인자 비교 팬아웃 경계 — 대표 레벨 상위 10명 상한 (ADR-0008) - #55

Merged
mindongdong merged 2 commits into
mainfrom
feat/fanout-cap-10
Jul 3, 2026
Merged

feat: 무인자 비교 팬아웃 경계 — 대표 레벨 상위 10명 상한 (ADR-0008)#55
mindongdong merged 2 commits into
mainfrom
feat/fanout-cap-10

Conversation

@mindongdong

Copy link
Copy Markdown
Owner

요약

무인자(대상 미지정) 비교가 등록자 전원 무제한이라 가독성(세로로 무한히 자라는 PNG)·조회 속도(넥슨 전역 4req/s 스로틀 아래 인원 비례 지연) 모두 위험 — 사용자 결정으로 K=10 상한 도입. 대상 지정은 파라미터 슬롯(대상1~5)이 이미 5명 상한이라 무변경.

동작 (ADR-0008)

구분 변경 후
/아이템·/유니온 무인자 등록자 중 대표 레벨 내림차순 상위 10명 (동레벨·미상은 닉 가나다)
/스타포스·/잠재 무인자 키 등록자만(키 미등록 행 숨김 — 상한 슬롯 잠식 방지) 중 레벨 상위 10명
잘렸을 때 푸터 안내 1줄: "등록자 N명 중 대표 레벨 상위 10명만 비교했어요 · 특정 인원은 대상 지정(최대 5명)으로 볼 수 있어요"
10명 이하 서버 화면·동작 완전 무변경(안내 줄 없음) — 현재 라이브 서버 전부 해당
대상 지정 경로 무변경 — '키 미등록' 안내 행도 지정 시엔 그대로 유지(부분 성공 철학)
/경험치 수집·백필 무영향 — 상한은 명령 어댑터 계층에만, get_targets/get_history_targets 무변경

구현

  • Target·HistoryTargetlevel 필드 추가(대표 해석 시 이미 메모리에 있던 값 — 쿼리 무변경, 기본값 None으로 기존 생성부 호환)
  • 단일 소스 comparison.cap_by_level + MAX_UNSPECIFIED_TARGETS = 10 + fanout_note
  • 명령 description·파라미터 설명 문구 4명령 동기화, 사이트 commands.json 요약 4곳 동기화
  • ADR-0008 신규 작성(과거 미머지 브랜치에서 유실된 번호 정식 채움)
  • 튜토리얼 S10 카피는 PR #54에서 선보정 완료("레벨 상위 최대 10명과 비교해요")

테스트

  • 신규 tests/test_fanout_cap.py 11건: 상한 경계(10명 무변경·13명→10 정렬·동레벨 타이브레이크·레벨미상 후순위·HistoryTarget 호환) + 핸들러 배선(스타포스 무인자 키미등록 숨김/상한/푸터·지정 시 키미등록 행 유지·유니온 팬아웃 10 경계/푸터)
  • 전체 pytest 810 passed · ruff check/format 클린 · commands.json 드리프트 가드 통과
  • 배포 후 등록자 10명 이하 서버에서 기존 화면 무변경 확인(안내 줄 없어야 정상)

무인자 실행(등록자/키등록자 전원)은 PNG 가 인원만큼 세로로 자라고 넥슨
전역 스로틀(4req/s) 아래서 응답이 인원에 비례해 느려진다 → 경계 도입.

- Target·HistoryTarget 에 level 필드(대표 레벨, 쿼리 무변경 — 대표 해석
  시 이미 메모리에 있던 값)
- comparison.cap_by_level: 레벨 내림차순 상위 10명, 동레벨·미상(None=-1)은
  닉네임 가나다 타이브레이크. MAX_UNSPECIFIED_TARGETS=10 단일 소스
- /아이템·/유니온·/스타포스·/잠재 무인자에 적용 + 잘리면 푸터 안내 1줄
  (10명 이하 서버는 화면 무변경). 대상 지정은 파라미터 5슬롯이 기존 상한
- 이력류 무인자는 '키 미등록' 행 숨김(상한 슬롯 잠식 방지) — 지정 시 유지
- 수집 경로(get_targets/get_history_targets 자체)는 무변경 — /경험치
  스냅샷·백필 무영향
- 명령 description·파라미터 설명 문구 동기화, 테스트 11건(tests/test_fanout_cap.py)
- ADR-0008: K=10·레벨 정렬·이력류 키 미등록 숨김·수집 경로 무변경 결정 기록
  (과거 결정이 미머지 브랜치에서 유실됐던 번호를 정식 채움 — ADR-0009 각주 참조)
- commands.json 아이템·유니온·스타포스·잠재 요약에 상한 문구 추가
  (튜토리얼 S10 은 PR #54 에서 선보정)
@vercel

vercel Bot commented Jul 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
maple-mate Ready Ready Preview, Comment Jul 3, 2026 7:09pm

@mindongdong
mindongdong merged commit 8d03aa1 into main Jul 3, 2026
5 checks passed
@mindongdong
mindongdong deleted the feat/fanout-cap-10 branch July 3, 2026 19:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant