lifecarelog
개발일지

데이터 밀도 높은 리서치 콘솔을 만들며 배운 4가지

근거를 인용으로 묶어 환각을 막고, 판단을 결정론적 규칙으로 바꾸고, 실행 전에 시뮬레이션을 기본값으로 두는 — 데이터가 빽빽한 대시보드를 만들며 정리한 엔지니어링 패턴이에요.

6분 읽기

개인적으로 흩어진 리서치를 한곳에 정리하려고, 데이터가 빽빽한 대시보드형 콘솔을 하나 만들고 있어요. 화면에 숫자와 표가 많은 도구라, 평소 만들던 웹앱과는 다른 고민이 많았어요. 이 글은 특정 분야 이야기가 아니라, 데이터 밀도가 높은 도구를 만들 때 쓸 만한 엔지니어링 패턴을 정리한 거예요.

1. 근거는 '인용'으로 묶어 환각을 막아요

여러 출처에서 모은 정보를 AI로 요약하면 편한데, 그대로 두면 출처와 요약이 섞여서 "이거 진짜 근거 있는 말이야?"가 헷갈려요. 그래서 자료를 다룰 때 원문을 그대로 노출하지 않고, 항상 인용(citation)으로만 연결되게 했어요.

  • 모든 항목은 어떤 근거에서 나왔는지 태그가 붙어요.
  • 검증 상태(확인됨/미확인)를 따로 추적해요.
  • 근거 없는 문장은 화면에 못 올라오게 막아요.

AI가 그럴듯하게 지어낸 문장을 거르는 가장 단순한 방법은, 근거 없는 건 아예 표시하지 않는 것이더라고요.

2. 판단을 '결정론적 규칙'으로 바꿔요

처음엔 "상황 보고 알아서 판단" 식으로 만들려다가, 결과가 매번 달라져서 검증이 안 됐어요. 그래서 판단 기준을 사람의 감이 아니라 **결정론적 규칙(같은 입력이면 항상 같은 결과)**으로 코드에 적었어요.

이렇게 하니 두 가지가 좋아졌어요. 결과를 재현할 수 있고, 규칙이 틀렸을 때 어디를 고쳐야 하는지가 분명해져요. "왜 이런 결과가 나왔지?"에 답할 수 있는 시스템이 된 거예요.

3. 실제 실행 전에 '시뮬레이션'을 기본값으로

이건 자동화에서 자주 말하는 false green과 같은 맥락이에요. 무언가를 실제로 실행하기 전에, 항상 모의(시뮬레이션)로 먼저 돌려보는 걸 기본값으로 뒀어요. 진짜 동작은 명시적으로 선택해야만 일어나게요.

기본이 '안전한 쪽'이면 실수로 위험한 동작이 일어나지 않아요. 그리고 시뮬레이션 결과를 쌓아두면, 규칙이 실제로 쓸 만한지를 데이터로 확인할 수 있어요.

4. 빽빽한 데이터일수록 더 절제해서 보여줘요

숫자가 많은 화면은 조금만 화려해도 금방 어지러워요. 그래서 반대로 갔어요.

  • 배경은 어두운 콘솔 톤으로, 숫자가 도드라지게요.
  • 모든 수치는 고정폭 글꼴로 자릿수를 정렬해서, 위아래 숫자를 눈으로 비교할 수 있게요.
  • 차트는 무거운 라이브러리 대신 가볍게 직접 그리고, 상태(좋음·주의·경고)만 색으로 구분했어요.
  • 애니메이션은 진입할 때 한 번만, 과하지 않게요.

데이터가 많을수록 디자인은 더 조용해야 읽혀요.

어떻게 만들었나

화면은 Next.js와 React로, 데이터를 다루는 뒤쪽은 FastAPI로 나눴어요. 근거를 모아 정리하는 부분은 검색·요약 흐름을 단계로 묶어 처리하고, 임베딩 검색으로 관련 자료를 찾아요. 숫자를 다루는 도구라 테스트를 촘촘히 붙여가며 만들고 있어요.

정리

  • 근거 없는 정보는 표시하지 않는 것이 가장 단순한 환각 방지예요.
  • 판단은 결정론적 규칙으로 — 재현 가능해야 고칠 수 있어요.
  • 위험한 동작은 시뮬레이션을 기본값으로 두고, 진짜는 명시적으로요.
  • 데이터가 빽빽할수록 화면은 더 절제해야 읽혀요.

분야가 무엇이든, 데이터가 많고 정확성이 중요한 도구를 만든다면 비슷하게 쓸 수 있는 패턴이라고 생각해요.

#devlog#RAG#FastAPI#데이터시각화#아키텍처

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.