Skip to content

feat: beta-tester 배지 추가와 mode 축 enum 개조 - #15

Merged
kobenlys merged 2 commits into
developfrom
feature/beta-tester-badge
Aug 25, 2026
Merged

kobenlys merged 2 commits into
developfrom
feature/beta-tester-badge

Conversation

@kobenlys

@kobenlys kobenlys commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

🏷️ 작업 유형

  • 🐛 버그 픽스
  • ✨ 개발
  • 📝 문서 추가 및 수정
  • ♻️ 리팩터링
  • 🔧 ETC

📋 변경 사항

클로즈드 베타(2026-07~08) 기여자용 터미널 창 배지 beta-tester를 추가했습니다.

고정 스냅샷 아키텍처

  • 표시 값이 마감된 구간의 집계라 렌더마다 변하면 안 됩니다. badge_snapshot 테이블에 미리 계산한 JSON을 저장하고 렌더는 복합 PK로 한 번만 읽습니다.
  • (github_id, badge_code) 복합 PK가 유일한 조회 경로라 추가 인덱스를 만들지 않았습니다. 값이 고정된 다른 배지도 이 테이블을 그대로 재사용합니다.
  • 렌더 경로 쿼리가 5회에서 1회로 줄었습니다.

마이그레이션

  • V6 — badge_snapshot 테이블, 표시용 단위 축약 함수 badge_compact_number, 배지 카탈로그 등록
  • V7 — 베타 참여자(created_at < 2026-08-09 00:00+09)의 스냅샷·자격(user_badge_grant)·이력(badge_grant_history) 일괄 적재

?mode= 축 enum 개조

  • 3색 모드 (cyan/green/purple)을 노출하려면 boolean isDark로는 값이 둘밖에 표현되지 않아 BadgeMode enum으로 바꿨습니다.
  • 테마별 supportedModes()/defaultMode()로 미지원 값을 접어 캐시 키 카디널리티를 테마 지원 집합으로 묶습니다.
  • 기존 배지 3종(gpu·claude·grass-claude)은 패밀리 훅에서 boolean isDark를 유지해 렌더 결과가 바뀌지 않습니다. 기존 테마 테스트의 단언을 한 줄도 고치지 않고 통과합니다.

✅ 테스트

  • ./mvnw clean verify — 유닛 476건 / 통합 37건 전부 통과
  • 신규 유닛: BadgeModeTest, BadgeSnapshotIdTest, BetaTester{BadgeTheme,Mascot,ProviderMark,Snapshot}Test
  • 신규 통합: BadgeSnapshotRepositoryIntegrationTest — Testcontainers 실 PostgreSQL에서 payload::text jsonb 왕복, 복합키 격리, badge_compact_number 표기 계약 검증
  • 마스코트 픽셀은 프로토타입에서 스크립트로 추출한 뒤 rect 42개·좌우대칭·round-trip diff 0으로 검증

클로즈드 베타 기여자용 터미널 창 배지를 추가한다. 표시 값이 마감된 구간의
집계라 렌더마다 변하면 안 되므로, badge_snapshot 테이블에 미리 계산한 JSON을
복합 PK로 저장하고 렌더는 그것만 읽는다. V7이 스냅샷·자격·이력을 함께 적재한다.

악센트 3색(cyan/green/purple)을 ?mode= 축에 노출하기 위해 boolean isDark를
BadgeMode enum으로 바꿨다. 기존 배지 3종은 패밀리 훅에서 boolean을 유지해
렌더 결과가 바뀌지 않는다.
@kobenlys
kobenlys merged commit 1952cc7 into develop Aug 25, 2026
2 checks passed
@kobenlys
kobenlys deleted the feature/beta-tester-badge branch August 25, 2026 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant