새기능 #5831
완료됨새기능 #5814: ITN-HUB 공공저작물 신유형개방 사업관리 시스템 구축
[ITN-HUB] 공통코드 도입 및 하드코딩 제거
100%
설명
개요¶
진행단계·처리결과·공공누리 유형 같은 선택지가 소스 곳곳에 박혀 있어, 항목 하나 바꾸려면 여러 파일을 동시에 고쳐야 했다. 선택지를 데이터로 옮기고 소스에서 코드값 리터럴을 없앱다.
발단¶
13단계를 하나 늘리려니 백엔드 4곳·프런트 8곳·테스트 6곳을 동시에 고쳐야 했다. 앞으로도 선택지 변경 요청이 계속 들어올 터라 구조를 먼저 정리했다.
조사 결과 — 중복 실측¶
| 코드체계 | 정의된 곳 |
|---|---|
처리완료 |
프런트 6 + 자바 2 + SQL 5 = 13곳 |
| 공공누리 유형 | 3곳 (7개/5개/6개로 개수도 순서도 다름) |
| 담당자 구분 | 5곳 |
| 진행단계 | 5곳 |
DB에 코드테이블이 아예 없었고, 값의 정본이 화면 파일 안에 있었다.
구조¶
code_group / code 두 테이블에 12그룹 62코드를 넣고, 서버가 기동 후 한 번 읽어 메모리에 들고 있다가 /api/meta/codes 하나로 내려준다. 화면은 로그인 직후 한 번만 받아 전체가 나눠 쓴다.
저장값은 지금 쓰는 한글 문자열을 그대로 둔다. 영문 키로 바꾸면 기존 데이터를 전부 변환하고 엑셀 양식까지 손봐야 해서 위험 대비 실익이 없다.
코드마다 붙는 속성¶
단순 목록만으로는 부족해 속성을 달았다.
| 속성 | 쓰임새 |
|---|---|
progress |
진행상태(신청/진행중/완료) |
kpiFrom |
이 단계부터 해당 KPI에 집계 |
scopes |
공공누리 유형이 쓰이는 자리(변호사판정/권리처리/기존부착) |
allowed |
세부항목별로 고를 수 있는 처리결과 |
tone |
색 이름표 |
공공누리 유형 세 곳의 목록이 달랐던 것은 실수가 아니라 쓰이는 자리가 달라서였다. 그냥 합쳤으면 권리처리 화면에 「보류」가 잘못 나올 뻔했다.
진행 순서¶
화면 동작을 건드리지 않는 순서로 나눠 진행했다. 각 단계 완료 조건은 기존 테스트가 그대로 통과하는 것이었다.
- 코드테이블·시드·조회 API (V13~V15)
- 화면 8개를 코드표에 연결, 옵션 배열 삭제
- 쿼리·자바에 남은 리터럴 제거
쿼리는 코드표를 참조할 방법이 없어 서비스가 값을 읽어 파라미터로 넘긴다.
검증¶
형식만 바뀜 게 아님을 확인하는 테스트를 넣었다. 코드표에서 「완료」 표시를 미처리 쪽으로 옮기면 진행률과 상태 필터가 실제로 뒤집힌다. 예전 구조에서는 코드표를 바꿔도 아무 일도 일어나지 않았다.
특이사항¶
- 시드를 쓸 때 화면 소스를 안 보고 의미만으로 색을 골랐다가 칸반 색과 담당자 표시명이 바뀔 뻔했다. 문정원을 「주관기관」으로 넣었는데 화면에는 「문정원」으로 나와야 했다. 화면 기준값을 테스트로 잠그고 교정했다.
- 색은 DB에 CSS 클래스를 넣지 않고 이름표만 둔다. 화면 스타일을 바꿀 때마다 DB를 고쳐야 하면 곱란다.
- 값이 바뀔 때 폼을 자동으로 채우는 동작까지 데이터로 옮기지는 않았다. 그러면 코드표 안에 규칙 언어를 새로 만드는 꼴이 된다. 값은 데이터로, 동작은 코드로 나눴다.
표시할 데이터가 없습니다.