개발 slecs

GLOBAL 대시보드 본인 노출·정산 배지 중복 렌더링 수정

목차

두 가지 버그 한 커밋에 정리

GLOBAL 권한 대시보드에서 본인 Row 가 하위 파트너 목록에 끼어 노출되던 이슈 + 정산 목록에서 상태 배지가 중복 렌더링되던 이슈 두 개를 한 번에 처리함. 둘 다 파트너 계층 분기 로직이 어설퍼서 발생한 거라 묶어서 봄.

증상

  • GLOBAL 계정으로 대시보드 진입 시 본인이 하위 파트너 목록에 같이 노출됨
  • 정산 목록에서 동일 Row 에 상태 배지 두 개가 겹쳐 표시 (홀딩 + 확정)
  • 콘솔 에러는 없음. 화면 데이터만 이상함

원인

항목 기존 수정
GLOBAL 대시보드 본인 포함 본인 제외
배지 렌더링 다중 가능 단일 강제
분기 키 권한 단일 권한 + 상태 복합

쿼리 분기에서 GLOBAL 케이스를 별도 처리하지 않았던 게 1번 원인. 하위 파트너 조회 SQL 이 본인 제외 절을 빼먹고 있어서 GLOBAL 자기 자신까지 결과에 포함됨.

배지 중복은 더 단순함. 상태값이 홀딩 → 확정으로 바뀌는 흐름에서 템플릿 조건 분기가 상호배타가 아니었음. 둘 다 참인 구간이 잠깐 생기면서 같이 그려짐.

수정

SQL 한 줄 추가:

AND p.partner_level <> 'GLOBAL'

배지는 상태 우선순위 매핑 도입. 확정이 있으면 홀딩은 그리지 않음:

if (status == CONFIRMED)  확정 배지
else if (status == PENDING)  홀딩 배지
else  없음

회고

  • GLOBAL 같은 특수 권한은 "계층 N단계" 일반화에 묻히기 쉬움. 분기 케이스 표를 따로 두는 게 안전
  • 시각 요소는 처음부터 mutually exclusive 인지 명시해야 함. 상태 enum 늘어나면 누락 잘 발생
  • 두 버그 다 사용자 신고 전에 QA 가 못 잡음. 권한 × 상태 매트릭스 시나리오가 테스트에서 통째로 빠져있었던 게 진짜 문제

다음 스프린트엔 권한별 시나리오 테이블을 따로 빼서 회귀 테스트로 묶을 예정. 결제 플랫폼 쪽은 상태 머신이 워낙 많아서, 한 번 표로 정리해두면 두고두고 써먹을 듯.

다음

댓글 0

첫 댓글 달아줘.