소명자료 상세 페이지 영문 상태코드 한글화
목차
소명자료 상세 페이지에서 영문 코드가 그대로 노출되던 문제를 잡고, 빈 상태 카드도 함께 정리했다.
왜 이 작업이 우선순위에 올라왔나
compliance 쪽 화면은 내부 운영자가 주로 쓰는 영역이다. 그런데 소명자료 상세 페이지를 열어보면 특정 항목 값들이 APPROVED, REJECTED, PENDING 같은 영문 코드 그대로 노출되고 있었다. 개발 단계에서는 "어차피 내부 코드니까 나중에 한글화하면 되겠지"라고 넘어간 것들이, 실제 운영 환경에서는 운영자 민원으로 돌아온다. "이게 무슨 상태예요?"라는 질문이 반복되면 그때부터 내가 진짜 일이 두 배가 된다.
팀 내에서 JSP 기반 레거시 화면을 담당하는 범위가 넓다 보니, 이런 한글화 작업들은 우선순위에서 밀리기 쉽다. 하지만 compliance 도메인은 특성상 운영자가 상태값을 보고 빠르게 판단을 내려야 하는 화면이라, 영문 코드 노출은 단순 UI 문제가 아니라 오판 리스크로 이어질 수 있다. 이걸 팀에 공유하면서 이번 스프린트에 끼워 넣었다.
작업 내용
변경 파일은 detail.jsp 하나다. stat가 미지정이긴 한데, 파일이 하나라는 건 핀포인트 수정에 가깝다는 의미다. 크게 두 가지를 손봤다.
1. 영문 코드 → 한글 레이블 매핑
JSP에서 영문 코드를 한글로 전환하는 패턴은 보통 두 가지다.
<%-- 방법 A: JSTL choose 로 직접 분기 --%>
<c:choose>
<c:when test="${detail.statusCode == 'APPROVED'}">승인</c:when>
<c:when test="${detail.statusCode == 'REJECTED'}">반려</c:when>
<c:when test="${detail.statusCode == 'PENDING'}">검토 중</c:when>
<c:otherwise>${detail.statusCode}</c:otherwise>
</c:choose>
<%-- 방법 B: 공통 코드 맵을 EL로 참조 --%>
${codeMap[detail.statusCode]}
이번 케이스에서는 공통 코드 맵이 이미 세팅되어 있었으면 B로 갔을 텐데, 해당 페이지에서는 공통 맵이 내려오지 않는 구조였다. 결국 A 패턴으로 처리했다. 나중에 리팩토링 여지가 있긴 하지만, 지금 당장 한글화가 급했으니 실용적인 선택이었다.
2. 빈 상태 카드 정리
소명자료가 없는 경우 카드 컴포넌트가 빈 껍데기로 렌더링되고 있었다. 데이터가 없을 때 아무것도 보여주지 않거나, 아니면 명확하게 "소명자료가 없습니다" 같은 메시지를 주거나 둘 중 하나를 선택해야 한다. 빈 카드가 그냥 떠 있으면 운영자 입장에서 "로딩 중인가? 오류인가?" 구분이 안 된다.
<c:choose>
<c:when test="${not empty detail.evidenceList}">
<%-- 카드 렌더링 --%>
</c:when>
<c:otherwise>
<div class="empty-state">등록된 소명자료가 없습니다.</div>
</c:otherwise>
</c:choose>
이런 빈 상태 처리는 코드리뷰에서 내가 팀원들에게 자주 지적하는 부분이기도 하다. 리스트나 카드를 렌더링하는 쪽에 항상 빈 상태 분기가 있는지 확인하는 게 습관이 되어야 한다.
회고
| 항목 | 수정 전 | 수정 후 |
|---|---|---|
| 상태값 표시 | APPROVED, REJECTED 등 영문 코드 노출 |
승인, 반려 등 한글 레이블 |
| 빈 상태 | 카드 컴포넌트 빈 껍데기 렌더링 | 빈 상태 안내 메시지 노출 |
| 운영자 혼선 가능성 | 있음 | 제거 |
파일 하나짜리 수정이지만 팀 입장에서는 이런 작업이 쌓여야 운영 품질이 올라간다. 영문 코드 한글화 같은 건 기능 개발에 묻혀서 계속 미뤄지기 쉬운데, compliance 도메인처럼 판단이 중요한 화면에서는 이런 디테일이 꽤 크게 작용한다.
레거시 JSP 화면을 유지보수할 때 공통 코드 맵 연동이 일관성 없이 구현되어 있는 케이스가 종종 보인다. 이번처럼 직접 분기 처리로 임시 해결하는 건 괜찮지만, 기술 부채 목록에는 올려둬야 한다. 나중에 같은 페이지를 건드리는 팀원이 "왜 여기만 이렇게 되어 있지?"라고 의아해하지 않도록, PR 설명에 배경을 남겨두는 게 팀 리드로서 해야 할 일이다.
끝.
댓글 0
첫 댓글 달아줘.