PRD: 병원 CS 센터 AI 챗봇 (Gov-chat-bot 기반)
작성일: 2026-03-26
기반 코드: sinmb79/Gov-chat-bot (SmartBot KR v0.2.0)
1. 개요 (Overview)
1.1 목적
전화·방문 위주의 병원 고객센터(CS) 업무를 AI 챗봇으로 1차 응대함으로써 반복 문의를 자동화하고 상담사 부하를 줄인다. 환자·보호자가 24시간 언제든지 진료 예약, 서류 발급, 위치 안내 등 기본 문의를 해결할 수 있도록 한다.
1.2 배경
Gov-chat-bot은 공공기관용 멀티테넌트 AI 챗봇 플랫폼으로, 다음 기능을 이미 갖추고 있다.
- Tier A–D 응답 라우팅: FAQ → RAG 문서 검색 → LLM 생성 → 폴백 순서로 자동 선택
- 개인정보 마스킹: 주민등록번호, 전화번호, 이메일 자동 처리 (의료 현장에서 필수)
- 멀티채널: 웹 위젯 + 카카오톡 채널 동시 지원
- 관리자 대시보드: FAQ·문서·민원·지표 관리
- 감사 로그 / 모더레이션: 운영 투명성 확보
병원 CS 특성상 환자 개인정보 보호, 정확한 의료 정보 제공(할루시네이션 방지), 24시간 응대 요구사항이 있으며, 현 코드베이스는 이 방향에 잘 맞는다.
2. 현재 코드 분석 요약
2.1 아키텍처
2.2 응답 라우팅 (Tier)
| Tier |
방식 |
조건 |
병원 활용 예 |
| A |
FAQ 벡터 유사도 |
유사도 ≥ 0.85 |
"외래 접수 시간은?" → 등록된 답변 즉시 반환 |
| B |
RAG 문서 검색 |
유사도 ≥ 0.70 |
"MRI 촬영 전 주의사항" → 업로드된 안내문 기반 |
| C |
LLM + RAG |
LLM 활성화 + 문서 존재 |
RAG 결과를 Claude/GPT로 자연스럽게 재작성 |
| D |
폴백 |
매칭 없음 |
"담당 상담사에게 연결해 드리겠습니다" |
2.3 강점 (병원 CS 맥락)
- 개인정보 마스킹: 환자 발화에서 주민번호·전화번호 자동 제거 → HIPAA/개인정보보호법 대응 가능
- 할루시네이션 제어: LLM은 RAG 청크가 있을 때만 호출, 시스템 프롬프트에서 추측 금지
- 4.5초 타임아웃: 카카오톡 5초 제한에 맞춘 설계
- 감사 로그: 관리자 행동 전체 기록 (의료기관 컴플라이언스 필요)
- 멱등성 캐시: 동일 요청 중복 처리 방지 (환자 버튼 연타 등)
2.4 현재 한계 / 개선 필요 사항
| 구분 |
현재 상태 |
병원 적용 시 필요한 개선 |
| 대화 맥락 |
이전 턴 저장 없음 (무상태) |
예약 확인 등 멀티턴 흐름 필요 |
| 예약 시스템 연동 |
없음 |
HIS(병원정보시스템) API 연동 필요 |
| 상담사 이관 |
Tier D 폴백 텍스트만 |
실시간 상담사 연결 흐름 필요 |
| 카카오 채널 인증 |
스킬 서버 → 백엔드 서명 없음 |
HMAC 검증 추가 권장 |
| 속도 제한 |
유저키 기반 모더레이션만 |
병원 규모에 따라 IP/분당 제한 추가 고려 |
| 문서 버전 UI |
DB 컬럼은 있으나 UI 미노출 |
진료 안내문 개정 이력 관리 필요 |
| 임베딩 모델 |
ko-sroberta (단일 고정) |
의료 도메인 파인튜닝 모델 교체 고려 |
3. 제품 목표 (Goals)
3.1 핵심 목표
- 반복 문의 자동화율 70% — 진료 시간·예약 방법·위치·서류 발급 등 상위 문의 유형 70% 이상을 챗봇이 자체 해결
- 24시간 응대 — 야간·주말에도 기본 문의 처리
- 개인정보 0 노출 — 발화 원문 비저장, PII 자동 마스킹으로 의료 개인정보보호 준수
- 상담사 업무 경감 — CS 인입 콜 20% 이상 감소
3.2 비목표 (Out of Scope)
- 의학적 진단·처방 안내 (챗봇은 의료 행위 불가)
- 실시간 진료 예약 처리 (1차 목표; HIS 연동은 2단계)
- 보험청구 업무 처리
4. 사용자 및 시나리오
4.1 사용자 유형
| 유형 |
설명 |
주요 문의 |
| 외래 환자 |
진료 예약, 접수, 검사 안내 |
"내과 예약은 어떻게 해요?" "오늘 대기 얼마나 걸려요?" |
| 입원 환자/보호자 |
병동 규정, 면회, 식사 안내 |
"면회 시간이 언제예요?" "보호자 주차 어떻게 해요?" |
| 서류 발급 문의 |
진단서, 소견서 등 |
"진단서 발급 비용이 얼마예요?" "어디서 받나요?" |
| 응급 상황 문의 |
응급실 위치·이용 방법 |
"응급실은 24시간인가요?" |
| 병원 관리자 |
FAQ·문서 관리, 지표 확인 |
대시보드 사용 |
4.2 핵심 시나리오
시나리오 1 — 진료 예약 안내 (Tier A)
시나리오 2 — 문서 기반 검사 안내 (Tier B/C)
시나리오 3 — 상담사 이관 (Tier D)
5. 기능 요구사항
5.1 MVP (1단계)
| ID |
기능 |
구현 방법 |
우선순위 |
| F-01 |
병원 FAQ 챗봇 (진료시간·위치·예약방법) |
기존 Tier A/B 그대로 활용 |
P0 |
| F-02 |
카카오톡 채널 연동 |
기존 /skill/{tenant} 활용 |
P0 |
| F-03 |
웹사이트 위젯 삽입 |
기존 govbot-widget.js 활용 |
P0 |
| F-04 |
관리자 FAQ 등록/수정 |
기존 Admin Dashboard 활용 |
P0 |
| F-05 |
의료 안내 문서 업로드 (PDF/Word) |
기존 문서 업로드 파이프라인 활용 |
P0 |
| F-06 |
PII 마스킹 (환자 발화 보호) |
기존 masking 서비스 활용 |
P0 |
| F-07 |
병원 전용 폴백 메시지 설정 |
tenant_configs에서 관리 |
P0 |
| F-08 |
LLM 연동 (Claude Haiku) |
.env에서 LLM_PROVIDER=anthropic 설정 |
P1 |
| F-09 |
민원/문의 로그 열람 (마스킹 상태) |
기존 Complaints 페이지 활용 |
P1 |
| F-10 |
응답 지표 대시보드 |
기존 Metrics 페이지 활용 |
P1 |
5.2 2단계 (개선 과제)
| ID |
기능 |
비고 |
| F-11 |
멀티턴 대화 컨텍스트 유지 |
Redis에 세션 저장, 예약 흐름 지원 |
| F-12 |
HIS 예약 시스템 API 연동 |
실시간 예약 가능 여부 조회 |
| F-13 |
상담사 이관 (LiveChat 연동) |
Tier D 시 Slack/Zendesk 알림 |
| F-14 |
진료과별 FAQ 분류 |
category 필드 활용, 탭 UI 추가 |
| F-15 |
음성 입력 (STT) 지원 |
고령 환자 접근성 향상 |
| F-16 |
문서 개정 이력 UI |
supersedes_id 컬럼 활용 |
| F-17 |
의료 도메인 임베딩 모델 교체 |
ko-sroberta → 의료 파인튜닝 모델 |
6. 비기능 요구사항
| 구분 |
요구사항 |
| 응답 속도 |
95 퍼센타일 3초 이내 (카카오 5초 제한 준수) |
| 가용성 |
99.5% 이상 (월 3.6시간 이하 다운타임) |
| 개인정보 |
환자 발화 원문 미저장, PII 자동 마스킹 의무화 |
| 보안 |
JWT 24시간 만료, bcrypt 비밀번호 해시, CORS 화이트리스트 |
| 컴플라이언스 |
개인정보보호법, 의료법 제21조 (정보 누설 금지) 준수 |
| 감사 |
관리자 모든 행동 audit_logs 기록 |
| 확장성 |
멀티테넌트 구조 — 분원·부속병원 추가 용이 |
7. 기술 스택 및 인프라
현재 스택 (변경 없이 활용 가능)
배포 환경 (CLAUDE.md 기준)
8. 데이터 모델 (병원 맥락 주요 테이블)
9. 구현 로드맵
Phase 1 — MVP (4주)
| 주차 |
작업 |
| 1주 |
NAS Docker 배포, 병원 테넌트 생성, .env 설정 (Claude API 키 등) |
| 2주 |
주요 FAQ 100건 이상 등록 (진료과별 운영시간, 예약, 위치, 서류 발급) |
| 3주 |
의료 안내 문서 업로드 (검사 전 주의사항 PDF 등), 웹 위젯 홈페이지 삽입 |
| 4주 |
카카오톡 채널 연동, QA 테스트, 오픈 |
Phase 2 — 고도화 (8주)
| 주차 |
작업 |
| 5–6주 |
멀티턴 컨텍스트, 진료과별 FAQ 분류 UI |
| 7–8주 |
상담사 이관 흐름 (Tier D → 알림 발송) |
| 9–10주 |
HIS 예약 API 파일럿 연동 |
| 11–12주 |
성과 분석, 임베딩 모델 튜닝 검토 |
10. 성공 지표 (KPI)
| 지표 |
목표 |
측정 방법 |
| 자동 해결율 |
≥ 70% |
Tier A+B+C 응답 비율 (admin_metrics) |
| 평균 응답 시간 |
≤ 2초 |
complaint_logs.response_ms 중앙값 |
| 폴백(Tier D) 비율 |
≤ 30% |
Tier D 응답 비율 |
| 카카오 타임아웃 |
≤ 1% |
complaint_logs.is_timeout 비율 |
| 상담 콜 감소율 |
≥ 20% |
월별 CS 인입 콜 수 비교 (오픈 3개월 후) |
| 관리자 FAQ 갱신 주기 |
≤ 2주 |
faqs.updated_at 기준 |
11. 리스크 및 대응
| 리스크 |
가능성 |
영향 |
대응 |
| 챗봇이 잘못된 의료 정보 제공 |
중 |
높음 |
LLM 시스템 프롬프트에 의학적 판단 금지 명시, RAG 기반만 사용, 민감 키워드 Tier D 강제 라우팅 |
| 환자 개인정보 유출 |
낮 |
매우 높음 |
PII 마스킹 (기존 구현), 발화 원문 미저장, HTTPS 필수 |
| 카카오톡 API 변경 |
낮 |
중 |
웹 위젯 병행 운영 |
| 임베딩 유사도 오매칭 |
중 |
중 |
Tier A 임계값(0.85) 유지, 주기적 FAQ 품질 검토 |
| NAS 단일 장애점 |
중 |
높음 |
백업 스케줄, 향후 클라우드 이전 검토 |
12. 참고 문서
docs/운영가이드.md — 시스템 운영 절차
docs/WSL2_가이드.md — Windows 개발 환경 설정
backend/app/core/config.py — 환경변수 전체 목록
docker-compose.yml — 서비스 구성
.env.example — 환경변수 템플릿