← 포트폴리오 목록

AI 의사 찾기 챗봇 대화 화면

본 프로젝트의 요구사항(질문 이해와 조건 구조화, DB 근거 의사·병원 매칭, 대화 맥락 유지)을 기반으로 직접 구현한 맞춤 챗봇 프로젝트입니다.

프로젝트 납품 요약

아래 프로젝트 개요와 핵심 기능에서 구현 화면을 확인할 수 있습니다.

서비스 타입Web
업종헬스케어
기술 스택
ReactTypeScriptTailwind CSSNode.js + ExpressPostgreSQL + PrismapgvectorOpenAI API
주요 기능
  • 조건 칩 기반 질문 이해
  • 근거 카드 의사·병원 매칭
  • 후속 질문·비교·더 보기
  • 동의 기반 지역·거리 탐색

프로젝트 개요

범위: 개발, 디자인, 기획

본 프로젝트의 요구사항(질문 이해와 조건 구조화, DB 근거 의사·병원 매칭, 대화 맥락 유지)을 기반으로 직접 구현한 맞춤 챗봇 프로젝트입니다. 환자·보호자가 대화로 의사를 찾고 근거 카드로 결과를 확인하는 흐름을 React와 Node.js 기반으로 설계합니다.

작업 범위

  • 조건 칩 기반 질문 이해: 질환·진료과·지역·치료방법 조건을 대화에서 읽어 필수·선호·제외 칩으로 보여주고, 모호하면 되묻습니다
  • 근거 카드 의사·병원 매칭: 의사·병원 후보를 DB 레코드 근거 카드로 보여주고 조건 일치 이유와 상세 링크를 함께 제공합니다
  • 후속 질문·비교·더 보기: '첫 번째 병원' 같은 지칭 해석, 대상 비교, 더 보기 중복 제거, 조건 완화 동의 확인을 한 대화 안에서 지원합니다
  • 동의 기반 지역·거리 탐색: 시·도·시·군·구 지정 탐색과 위치 동의 후 주변 거리 필터를 제공합니다

주요 업무

  • 조건 칩 기반 질문 이해 화면: LLM 구조화 출력으로 조건 JSON을 만들고 칩 편집이 곧바로 다음 질의에 반영되는 구조
  • 근거 카드 의사·병원 매칭 화면: DB 조회 결과만 카드에 렌더링하고 평가 정보가 없으면 확인된 정보만 표시하는 구조
  • 후속 질문·비교·더 보기 화면: 세션별 결과 스택과 조건 이력을 서버에서 관리하는 대화 상태 구조
  • 동의 기반 지역·거리 탐색 화면: 위치 동의 상태를 세션에 두고 동의 전에는 좌표를 수집하지 않는 구조
AI 의사 찾기 챗봇 대화 화면
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

증상 입력만으로 질환을 단정하지 않으면서 관련 진료과를 안내하는 답변 경계 설계가 필요하며

금지 문구 규칙과 템플릿 응답으로 대응합니다

동의어·약어가 많은 질환명을 표준질환으로 연결

사전과 임베딩 검색의 결합 가중치 설계가 필요합니다

'그 병원'

'두 번째' 같은 지칭이 주제 전환 뒤에도 올바른 결과를 가리키도록 대화 상태 설계가 필요합니다

평가 데이터가 없는 의사·병원을 불리하게 정렬하지 않으면서 확인된 정보만 노출하는 정렬 규칙 설계가 필요합니다

구현 내용

핵심 기능 상세

핵심 기능 1

조건 칩 기반 질문 이해

질환·진료과·지역·치료방법 조건을 대화에서 읽어 필수·선호·제외 칩으로 보여주고, 모호하면 되묻습니다. LLM 구조화 출력으로 조건 JSON을 만들고 칩 편집이 곧바로 다음 질의에 반영되는 구조.

  • LLM JSON 스키마 출력과 zod 검증으로 조건 구조화 설계
  • 필수·선호·제외 3분류 칩 상태를 서버 세션과 동기화
  • 모호 입력 시 되묻기 질문 후보를 우선순위 규칙으로 생성

질문 한 줄을 필수·선호·제외 조건으로 분해하고 사용자가 칩으로 즉시 수정할 수 있는 구조를 구현합니다.

조건 칩 기반 질문 이해
조건 칩 기반 질문 이해 실제 화면
핵심 기능 2

근거 카드 의사·병원 매칭

의사·병원 후보를 DB 레코드 근거 카드로 보여주고 조건 일치 이유와 상세 링크를 함께 제공합니다. DB 조회 결과만 카드에 렌더링하고 평가 정보가 없으면 확인된 정보만 표시하는 구조.

  • Prisma 쿼리로 질환별 의사 랭킹·세부진료분야 조인
  • 카드 필드를 DB 레코드 ID와 1:1 매핑해 환각 값 렌더링 차단
  • 평가 데이터 유무에 따른 카드 변형 컴포넌트 설계

답변의 모든 의사·병원 정보를 레코드 ID에 연결해 DB에 없는 정보는 화면에 나타나지 않도록 설계합니다.

근거 카드 의사·병원 매칭
근거 카드 의사·병원 매칭 실제 화면
핵심 기능 3

후속 질문·비교·더 보기

'첫 번째 병원' 같은 지칭 해석, 대상 비교, 더 보기 중복 제거, 조건 완화 동의 확인을 한 대화 안에서 지원합니다. 세션별 결과 스택과 조건 이력을 서버에서 관리하는 대화 상태 구조.

  • 세션 상태 테이블에 조건 이력과 노출 결과 ID 목록 저장
  • 지칭 표현을 결과 인덱스로 해석하는 참조 해석 모듈 설계
  • 더 보기 호출 시 노출 이력 기반 중복 제거 쿼리 적용

이전 결과를 참조하는 후속 질문과 비교 요청을 대화 상태 기반으로 처리하고, 조건 완화는 이용자 동의 후에만 적용합니다.

후속 질문·비교·더 보기
후속 질문·비교·더 보기 실제 화면
핵심 기능 4

동의 기반 지역·거리 탐색

시·도·시·군·구 지정 탐색과 위치 동의 후 주변 거리 필터를 제공합니다. 위치 동의 상태를 세션에 두고 동의 전에는 좌표를 수집하지 않는 구조.

  • 행정구역 코드 테이블 기반 지역 필터 설계
  • PostGIS 없이 하버사인 거리 계산 쿼리로 주변 정렬
  • 위치 동의 토글 상태에 따른 요청 파라미터 분기

위치 동의를 명시적으로 받은 경우에만 거리 필터를 적용하고, 거부 시 지역명 기반 탐색으로 자연스럽게 전환합니다.

동의 기반 지역·거리 탐색
동의 기반 지역·거리 탐색 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

대화 조건 모델·질환 사전 DB 설계 · 2026.10

조건 JSON 스키마, 표준질환·동의어 사전, 의사·병원 테이블 ERD 설계

STEP 2

하이브리드 검색·매칭 API 개발 · 2026.10

키워드와 pgvector 임베딩 결합 검색, 의사 랭킹 조회 API 구현

STEP 3

대화 상태·근거 카드 화면 개발 · 2026.10

세션 상태 관리와 3분할 대화 화면, 근거 카드 컴포넌트 구현

STEP 4

시나리오 통합 테스트 · 2026.10

연속 대화·비교·더 보기 시나리오 테스트 케이스 작성과 검증

개발 결과

조건 칩 동기화 구조 설계LLM 구조화 출력을 zod로 검증하고 칩 편집을 세션 조건과 양방향 동기화하는 구조를 설계합니다.
레코드 ID 연결 근거 카드 구현카드 필드를 DB 레코드 ID에 1:1 연결해 DB에 없는 의사·병원 정보가 렌더링되지 않는 구조를 구현합니다.
지칭 해석 대화 상태 모듈 설계결과 스택과 조건 이력을 세션에 저장해 '첫 번째', '그 병원' 같은 지칭을 해석하는 모듈을 설계합니다.
동의 기반 조건 완화 흐름 구축결과가 없을 때 완화 제안 카드를 노출하고 동의 후에만 조건을 변경하는 상태 전이를 구축합니다.

기술적 주안점

  • 질문 한 줄을 필수·선호·제외 조건으로 분해하고 사용자가 칩으로 즉시 수정할 수 있는 구조를 구현합니다
  • 답변의 모든 의사·병원 정보를 레코드 ID에 연결해 DB에 없는 정보는 화면에 나타나지 않도록 설계합니다
  • 이전 결과를 참조하는 후속 질문과 비교 요청을 대화 상태 기반으로 처리하고, 조건 완화는 이용자 동의 후에만 적용합니다

유사한 프로젝트를 기획하고 계신가요?

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의