AI 의사 찾기 챗봇 대화 화면
본 프로젝트의 요구사항(질문 이해와 조건 구조화, DB 근거 의사·병원 매칭, 대화 맥락 유지)을 기반으로 직접 구현한 맞춤 챗봇 프로젝트입니다.
프로젝트 개요
본 프로젝트의 요구사항(질문 이해와 조건 구조화, DB 근거 의사·병원 매칭, 대화 맥락 유지)을 기반으로 직접 구현한 맞춤 챗봇 프로젝트입니다. 환자·보호자가 대화로 의사를 찾고 근거 카드로 결과를 확인하는 흐름을 React와 Node.js 기반으로 설계합니다.
작업 범위
- 조건 칩 기반 질문 이해: 질환·진료과·지역·치료방법 조건을 대화에서 읽어 필수·선호·제외 칩으로 보여주고, 모호하면 되묻습니다
- 근거 카드 의사·병원 매칭: 의사·병원 후보를 DB 레코드 근거 카드로 보여주고 조건 일치 이유와 상세 링크를 함께 제공합니다
- 후속 질문·비교·더 보기: '첫 번째 병원' 같은 지칭 해석, 대상 비교, 더 보기 중복 제거, 조건 완화 동의 확인을 한 대화 안에서 지원합니다
- 동의 기반 지역·거리 탐색: 시·도·시·군·구 지정 탐색과 위치 동의 후 주변 거리 필터를 제공합니다
주요 업무
- 조건 칩 기반 질문 이해 화면: LLM 구조화 출력으로 조건 JSON을 만들고 칩 편집이 곧바로 다음 질의에 반영되는 구조
- 근거 카드 의사·병원 매칭 화면: DB 조회 결과만 카드에 렌더링하고 평가 정보가 없으면 확인된 정보만 표시하는 구조
- 후속 질문·비교·더 보기 화면: 세션별 결과 스택과 조건 이력을 서버에서 관리하는 대화 상태 구조
- 동의 기반 지역·거리 탐색 화면: 위치 동의 상태를 세션에 두고 동의 전에는 좌표를 수집하지 않는 구조



프로젝트 핵심 과제
증상 입력만으로 질환을 단정하지 않으면서 관련 진료과를 안내하는 답변 경계 설계가 필요하며
금지 문구 규칙과 템플릿 응답으로 대응합니다
동의어·약어가 많은 질환명을 표준질환으로 연결
사전과 임베딩 검색의 결합 가중치 설계가 필요합니다
'그 병원'
'두 번째' 같은 지칭이 주제 전환 뒤에도 올바른 결과를 가리키도록 대화 상태 설계가 필요합니다
평가 데이터가 없는 의사·병원을 불리하게 정렬하지 않으면서 확인된 정보만 노출하는 정렬 규칙 설계가 필요합니다
핵심 기능 상세
조건 칩 기반 질문 이해
질환·진료과·지역·치료방법 조건을 대화에서 읽어 필수·선호·제외 칩으로 보여주고, 모호하면 되묻습니다. LLM 구조화 출력으로 조건 JSON을 만들고 칩 편집이 곧바로 다음 질의에 반영되는 구조.
- LLM JSON 스키마 출력과 zod 검증으로 조건 구조화 설계
- 필수·선호·제외 3분류 칩 상태를 서버 세션과 동기화
- 모호 입력 시 되묻기 질문 후보를 우선순위 규칙으로 생성
질문 한 줄을 필수·선호·제외 조건으로 분해하고 사용자가 칩으로 즉시 수정할 수 있는 구조를 구현합니다.


근거 카드 의사·병원 매칭
의사·병원 후보를 DB 레코드 근거 카드로 보여주고 조건 일치 이유와 상세 링크를 함께 제공합니다. DB 조회 결과만 카드에 렌더링하고 평가 정보가 없으면 확인된 정보만 표시하는 구조.
- Prisma 쿼리로 질환별 의사 랭킹·세부진료분야 조인
- 카드 필드를 DB 레코드 ID와 1:1 매핑해 환각 값 렌더링 차단
- 평가 데이터 유무에 따른 카드 변형 컴포넌트 설계
답변의 모든 의사·병원 정보를 레코드 ID에 연결해 DB에 없는 정보는 화면에 나타나지 않도록 설계합니다.


후속 질문·비교·더 보기
'첫 번째 병원' 같은 지칭 해석, 대상 비교, 더 보기 중복 제거, 조건 완화 동의 확인을 한 대화 안에서 지원합니다. 세션별 결과 스택과 조건 이력을 서버에서 관리하는 대화 상태 구조.
- 세션 상태 테이블에 조건 이력과 노출 결과 ID 목록 저장
- 지칭 표현을 결과 인덱스로 해석하는 참조 해석 모듈 설계
- 더 보기 호출 시 노출 이력 기반 중복 제거 쿼리 적용
이전 결과를 참조하는 후속 질문과 비교 요청을 대화 상태 기반으로 처리하고, 조건 완화는 이용자 동의 후에만 적용합니다.


동의 기반 지역·거리 탐색
시·도·시·군·구 지정 탐색과 위치 동의 후 주변 거리 필터를 제공합니다. 위치 동의 상태를 세션에 두고 동의 전에는 좌표를 수집하지 않는 구조.
- 행정구역 코드 테이블 기반 지역 필터 설계
- PostGIS 없이 하버사인 거리 계산 쿼리로 주변 정렬
- 위치 동의 토글 상태에 따른 요청 파라미터 분기
위치 동의를 명시적으로 받은 경우에만 거리 필터를 적용하고, 거부 시 지역명 기반 탐색으로 자연스럽게 전환합니다.


프로젝트 진행 단계
대화 조건 모델·질환 사전 DB 설계 · 2026.10
조건 JSON 스키마, 표준질환·동의어 사전, 의사·병원 테이블 ERD 설계
하이브리드 검색·매칭 API 개발 · 2026.10
키워드와 pgvector 임베딩 결합 검색, 의사 랭킹 조회 API 구현
대화 상태·근거 카드 화면 개발 · 2026.10
세션 상태 관리와 3분할 대화 화면, 근거 카드 컴포넌트 구현
시나리오 통합 테스트 · 2026.10
연속 대화·비교·더 보기 시나리오 테스트 케이스 작성과 검증
개발 결과
기술적 주안점
- 질문 한 줄을 필수·선호·제외 조건으로 분해하고 사용자가 칩으로 즉시 수정할 수 있는 구조를 구현합니다
- 답변의 모든 의사·병원 정보를 레코드 ID에 연결해 DB에 없는 정보는 화면에 나타나지 않도록 설계합니다
- 이전 결과를 참조하는 후속 질문과 비교 요청을 대화 상태 기반으로 처리하고, 조건 완화는 이용자 동의 후에만 적용합니다