현장 이슈 대시보드의 '한눈에 보기' 화면을 5년 추이, 최근 3개월, 시기별 주의 순서로 설계했다. 인사이트 문장을 미리 써 두고 데이터가 기준을 넘을 때만 보여주는 방식과, 시스템 전환 때문에 생기는 추이 차트 착시를 막은 방법을 정리했다.
이 글의 순서
대시보드가 카드 모음이 되는 이유
이슈 데이터 포털의 첫 화면은 탭 여섯 개에 카드가 가득했다. 건수 카드, 비율 카드, 전년 대비 카드가 탭마다 비슷하게 반복됐다. 보는 사람은 숫자를 다 읽고 나서 스스로 결론을 내려야 했다.
원인은 '보여줄 수 있는 지표'에서 출발했기 때문이다. 다시 설계하면서 출발점을 '보는 사람이 알고 싶은 순서'로 바꿨다. 길게 보고, 최근을 보고, 지금 주의할 것을 본다.
한눈에 보기 흐름
탭도 이슈 동향, 처리 현황, 이슈 분석, AI 서비스 네 묶음으로 정리했고, 같은 의미의 카드는 하나로 합쳤다.
인사이트 문장: 사람이 쓰고 데이터가 켠다
숫자 옆에 "겨울철 넘어짐 이슈에 주의하세요" 같은 한 줄이 있으면 화면이 훨씬 쉬워진다. 문제는 이 문장을 누가 쓰느냐다.
- LLM에게 매번 쓰게 하면 그럴듯하지만 검증하기 어렵다. 틀린 문장이 한 번 나가면 화면 전체의 신뢰가 무너진다.
- 고정 문장을 박아 두면 데이터가 그렇지 않은 시기에도 보인다. 이슈가 줄었는데 "늘고 있다"고 말하는 화면이 된다.
그래서 둘을 나눴다. 문장과 기준은 담당자가 미리 쓴다. 화면에 보일지는 데이터가 기준을 넘었는지로 정한다. 문장은 사람이 책임지고, 노출은 데이터가 책임진다.
기준 월에 따라 달라지는 인사이트
| 문장 | 현재 값 | 노출 |
|---|
예시 데이터다.
import operator
OPS = {">=": operator.ge, "<=": operator.le}
INSIGHTS = [
{"text": "겨울철 넘어짐 이슈가 늘어나는 시기입니다.",
"months": [12, 1, 2],
"metric": "slip_share_same_period_5y", "op": ">=", "threshold": 0.25},
{"text": "최근 3개월 이슈가 전년 동기간보다 늘었습니다.",
"months": None,
"metric": "recent3m_vs_last_year", "op": ">=", "threshold": 0.10},
]
def visible_insights(month, metrics):
shown = []
for r in INSIGHTS:
if r["months"] and month not in r["months"]:
continue
value = metrics.get(r["metric"])
if value is not None and OPS[r["op"]](value, r["threshold"]):
shown.append(r["text"])
return shown문장을 추가하거나 기준을 바꾸는 일은 코드가 아니라 목록 수정이다. 나중에 화면에서 담당자가 직접 관리하게 바꾸기도 쉽다.
추이 차트의 착시를 막는 법
5년 추이 차트를 처음 그렸을 때 마지막 해에 이슈가 폭증한 것처럼 보였다. 실제로 이슈가 늘어난 게 아니었다. 그해 이슈 관리 시스템이 바뀌었고, 새 시스템은 경미 이슈와 잠재 이슈까지 훨씬 꼼꼼하게 기록한다. 기록 방식이 바뀌었을 뿐인데 차트는 '현장이 나빠졌다'고 말하고 있었다.
선택지는 두 가지였다. 과거 데이터를 새 기준에 맞게 보정하거나, 있는 그대로 두고 보는 방법을 바꾸거나. 보정은 가정이 들어가고, 가정이 들어간 숫자는 설명을 요구한다. 있는 그대로 두기로 했다. 대신 차트를 쌓은 막대로 바꾸고, 처음에는 기록 방식의 영향을 거의 받지 않는 중대·등급 이슈만 보이게 했다. 경미·아차는 필요할 때 켠다.
연도별 이슈 건수
예시 데이터다. 2026년부터 새 시스템 기록이다.
핵심보정하지 않고 기본 보기를 바꾸는 것만으로 착시가 사라졌다. 데이터를 손대는 대신 처음에 무엇을 보여줄지를 고르는 것도 설계다.
덜어낸 것들
흐름을 정리하고 나니 덜어낼 것이 많이 보였다.
- 화면 설명 문장: 차트가 말하는 것을 다시 글로 쓴 문장은 전부 지웠다. 설명 줄은 숫자와 결론만 남겼다. 예를 들어 "최근 3개월 62건, 전년 동기간 49건, 13건 증가" 한 줄이다.
- 진행 중인 이슈 표: 상태별로 나뉜 카드와 표 여러 개를 필터가 달린 표 하나로 합쳤다.
- 시기별 주의: 매번 화면을 차지하던 영역을 이슈 동향 화면에 처음 들어올 때 하루 한 번 뜨는 팝업으로 옮겼다. 매일 보는 사람에게 같은 문장을 매번 보여줄 필요가 없다.
정리
- 지표 목록이 아니라 보는 사람이 알고 싶은 순서로 화면을 배치한다.
- 인사이트 문장은 사람이 쓰고, 노출 여부는 데이터 기준으로 정한다.
- 시스템 전환 같은 기록 방식 변화는 보정보다 기본 보기를 바꿔 대응할 수 있다.
- 차트가 이미 말하는 내용은 글로 반복하지 않는다.