AI 기반 고객 서비스 업무 시뮬레이터입니다. 신입 직원을 위한 고객 응대 연습 도구로, 실제 업무 매뉴얼을 학습한 AI와 다양한 상황을 시뮬레이션할 수 있습니다.
시연영상 : https://www.youtube.com/watch?v=9wFu5BvlJm8&feature=youtu.be
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ Frontend │────▶│ Backend │────▶│ AI Service │
│ (React) │ │ (NestJS) │ │ (FastAPI) │
│ :5173/:80 │ │ :3001 │ │ :8000 │
│ │ │ │ │ │
└─────────────────┘ └────────┬────────┘ └────────┬────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ MySQL │ │ ChromaDB │
│ (TypeORM) │ │ (Vector DB) │
└─────────────────┘ └─────────────────┘
PWS_V3/
├── frontend/ # React 프론트엔드 (Vite + TypeScript)
│ ├── src/
│ │ ├── components/ # UI 컴포넌트
│ │ ├── services/ # API 서비스
│ │ └── types/ # TypeScript 타입
│ └── package.json
│
├── backend/ # NestJS 백엔드
│ ├── src/
│ │ ├── auth/ # 인증 모듈 (JWT)
│ │ ├── projects/ # 프로젝트 모듈
│ │ ├── conversations/# 대화 모듈
│ │ ├── messages/ # 메시지 모듈
│ │ ├── files/ # 파일 모듈
│ │ └── ai/ # AI 프록시 모듈
│ └── package.json
│
└── ai/ # FastAPI AI 서비스
├── main.py # FastAPI 메인
└── requirements.txt
- 프로젝트별 매뉴얼 업로드 및 관리
- 업무 지침 설정
- 파일 임베딩 (PDF, TXT, Excel, Word)
- 고객 역할: AI 직원과 대화하며 서비스 체험
- 직원 역할: AI 고객의 문의에 응대 연습
- 실시간 평가 및 피드백
- 다양한 LLM 지원 (OpenAI, Gemini, Claude, Ollama, Perplexity)
- RAG 기반 컨텍스트 검색
- 매뉴얼 기반 시나리오 자동 생성
- JWT 기반 인증 (회원/비회원 모드)
- 사용자별 설정 저장 (API 키, 모델 선택)
- 프로젝트/대화 사용자 격리
| 구성요소 | 버전 | 비고 |
|---|---|---|
| Node.js | 18.x 이상 | LTS 권장 |
| Python | 3.10 이상 | 3.11 권장 |
| npm | 9.x 이상 | Node.js와 함께 설치됨 |
| 구성요소 | 용도 |
|---|---|
| Ollama | 로컬 LLM 사용 시 필요 |
| CUDA | GPU 가속 임베딩 시 필요 |
git clone <repository-url>
cd PWS_V3cd ai
# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 의존성 설치
pip install -r requirements.txt
# 서버 실행
uvicorn main:app --host 0.0.0.0 --port 8000cd backend
# 환경 변수 설정
cp .env.example .env
# .env 파일을 열어 JWT_SECRET 등 수정
# 의존성 설치
npm install
# 개발 모드 실행
npm run start:dev
# 또는 프로덕션 빌드
npm run build
npm run start:prodcd frontend
# 환경 변수 설정
cp .env.example .env
# .env 파일을 열어 VITE_BACKEND_URL 수정 (필요시)
# 의존성 설치
npm install
# 개발 모드 실행
npm run dev
# 또는 프로덕션 빌드
npm run build브라우저에서 http://localhost:5173 접속
AI 서비스 (/etc/systemd/system/cs-ai.service):
[Unit]
Description=CS Simulator AI Service
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/PWS_V3/ai
Environment="PATH=/path/to/PWS_V3/ai/venv/bin"
ExecStart=/path/to/PWS_V3/ai/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target백엔드 (/etc/systemd/system/cs-backend.service):
[Unit]
Description=CS Simulator Backend
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/PWS_V3/backend
ExecStart=/usr/bin/node /path/to/PWS_V3/backend/dist/main.js
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.targetserver {
listen 80;
server_name your-domain.com;
# Frontend (정적 파일)
location / {
root /path/to/PWS_V3/frontend/build;
try_files $uri $uri/ /index.html;
}
# Backend API
location /api/ {
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
# AI Service (내부용, 필요시)
location /ai/ {
proxy_pass http://localhost:8000/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}docker-compose.yml 예시는 별도 문서 참조
| 변수명 | 설명 | 기본값 |
|---|---|---|
AI_SERVICE_URL |
AI 서비스 URL | http://localhost:8000 |
JWT_SECRET |
JWT 서명 키 (필수 변경) | - |
JWT_REFRESH_SECRET |
리프레시 토큰 키 (필수 변경) | - |
| 변수명 | 설명 | 기본값 |
|---|---|---|
VITE_BACKEND_URL |
Backend API URL | http://localhost:3001 |
- 기본 URL:
http://localhost:3001 - Swagger:
http://localhost:3001/api(개발 모드)
- 기본 URL:
http://localhost:8000 - Swagger:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
- Python 버전 확인 (3.10 이상)
- CUDA 관련 오류 시 CPU 모드로 실행
- 메모리 부족 시 임베딩 모델 변경 고려
- AI_SERVICE_URL 환경 변수 확인
- AI 서비스가 실행 중인지 확인
- 방화벽 포트 설정 확인
- VITE_BACKEND_URL 설정 확인
- CORS 설정 확인 (백엔드)
- 네트워크 탭에서 요청/응답 확인
이 프로젝트는 사내 교육용으로 제작되었습니다.