ai-review/README.md
2025-06-16 13:42:04 +09:00

226 lines
5.7 KiB
Markdown

# 🍽️ AI Review - 소상공인을 위한 AI 기반 경쟁업체 분석 및 액션 추천 시스템
소상공인들이 카카오맵 리뷰 데이터를 기반으로 경쟁업체를 분석하고, AI가 제안하는 맞춤형 비즈니스 개선 방안을 받을 수 있는 마이크로서비스 기반 플랫폼입니다.
## 🎯 시스템 개요
### 핵심 가치 제안
- **🔍 스마트 경쟁업체 발견**: 지역과 업종 기반으로 유사한 경쟁업체 자동 탐지
- **📊 대량 리뷰 데이터 분석**: 카카오맵 리뷰를 수집하여 고품질 인사이트 도출
- **🤖 AI 기반 맞춤 컨설팅**: Claude AI가 제공하는 실행 가능한 비즈니스 액션 플랜
- **⚡ 완전 자동화**: API 기반으로 모든 과정이 자동화된 솔루션
### 비즈니스 임팩트
- **소상공인**: 데이터 기반 경영 의사결정으로 매출 향상 지원
- **경쟁 우위**: AI 기반 개인화된 비즈니스 전략으로 차별화
- **운영 효율**: 수작업 시장조사 대비 시간과 비용 90% 절감
## 🏗️ 서비스 아키텍처
본 시스템은 3개의 독립적인 마이크로서비스로 구성되어 있습니다:
### 📍 Restaurant Service
**음식점 검색 및 정보 수집 서비스**
- **핵심 기능**: 카카오 로컬 API 기반 음식점 검색 및 상세 정보 수집
- **주요 API**:
- 음식점 검색 (`/restaurants/search`)
- 음식점 상세 정보 (`/restaurants/{restaurant_id}`)
- **기술 스택**: FastAPI, Python 3.11, Kakao Local API
- **포트**: 18000
### 📝 Review Service
**카카오맵 리뷰 수집 및 분석 서비스**
- **핵심 기능**: 카카오맵 리뷰 대량 수집, 감정 분석, 키워드 추출
- **주요 API**:
- 리뷰 수집 (`/reviews/collect`)
- 리뷰 분석 (`/reviews/analyze`)
- **기술 스택**: FastAPI, Python 3.11, BeautifulSoup, Sentiment Analysis
- **포트**: 19000
### 🧠 Vector Service
**Vector DB 구축 및 AI 비즈니스 컨설팅 서비스**
- **핵심 기능**: ChromaDB 기반 Vector 검색, Claude AI 연동 액션 추천
- **주요 API**:
- Vector DB 구축 (`/find-reviews`)
- AI 액션 추천 (`/action-recommendation`)
- **기술 스택**: FastAPI, ChromaDB, Sentence Transformers, Claude AI
- **포트**: 8000
## 🚀 AKS 배포 가이드
### 1. 사전 준비
#### Local Ubuntu 접속 후 소스 다운로드
```bash
cd ~/workflow
git clone https://github.com/cna-bootcamp/ai-review.git
cd ai-review
```
#### Azure Cloud 로그인
```bash
az login --use-device-code
```
#### AKS Credential 취득
```bash
az aks get-credentials aks-digitalgarage-03 -f ~/.kube/config
```
#### Namespace 생성 및 이동
```bash
k create ns ai-review-ns
kubens ai-review-ns
```
#### Image Pull Secret 생성
```bash
./restaurant/create-imagepullsecret.sh acrdigitalgarage03 rg-digitalgarage-03
```
### 2. Restaurant Service 배포
#### 디렉토리 이동
```bash
cd ~/workspace/ai-review/restaurant
```
#### 베이스 이미지 빌드
```bash
./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03
```
#### 서비스 이미지 빌드
```bash
./build.sh latest acrdigitalgarage03 rg-digitalgarage-03
```
#### Manifest 수정
- **Deployment yaml** (`deployment/manifest/deployment.yaml`)의 image명을 서비스 이미지명으로 변경
- **Ingress yaml** (`deployment/manifest/ingress.yaml`)의 host 수정
```bash
# Ingress IP 확인
k get svc -n ingress-nginx
```
#### 배포 실행
```bash
k apply -f deployment/manifest
```
#### 배포 확인
```bash
# Pod 상태 확인
k get po
# Ingress 확인
k get ing
# Swagger 페이지 접속
# http://{ingress 주소}/docs
```
### 3. Review Service 배포
#### 디렉토리 이동
```bash
cd ~/workspace/ai-review/review
```
#### 베이스 이미지 빌드
```bash
./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03
```
#### 서비스 이미지 빌드
```bash
./build.sh latest acrdigitalgarage03 rg-digitalgarage-03
```
#### Manifest 수정
- **Deployment yaml** (`deployment/manifest/deployment.yaml`)의 image명을 서비스 이미지명으로 변경
- **Ingress yaml** (`deployment/manifest/ingress.yaml`)의 host 수정
```bash
# Ingress IP 확인
k get svc -n ingress-nginx
```
#### 배포 실행
```bash
k apply -f deployment/manifest
```
#### 배포 확인
```bash
# Pod 상태 확인
k get po
# Ingress 확인
k get ing
# Swagger 페이지 접속
# http://{ingress 주소}/docs
```
### 4. Vector Service 배포
#### 디렉토리 이동
```bash
cd ~/workspace/ai-review/vector
```
#### 베이스 이미지 빌드
```bash
./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03
```
#### 서비스 이미지 빌드
```bash
./build.sh latest acrdigitalgarage03 rg-digitalgarage-03
```
#### Manifest 수정
- **Deployment yaml** (`deployment/manifest/deployment.yaml`)의 image명을 서비스 이미지명으로 변경
- **Ingress yaml** (`deployment/manifest/ingress.yaml`)의 host 수정
```bash
# Ingress IP 확인
k get svc -n ingress-nginx
```
#### 배포 실행
```bash
k apply -f deployment/manifest
```
#### 배포 확인
```bash
# Pod 상태 확인
k get po
# Ingress 확인
k get ing
# Swagger 페이지 접속
# http://{ingress 주소}/docs
```
## 🔧 서비스 상태 확인
### 전체 서비스 상태 점검
```bash
# 모든 Pod 상태 확인
kubectl get pods -n ai-review-ns
# 모든 Service 확인
kubectl get svc -n ai-review-ns
# 모든 Ingress 확인
kubectl get ing -n ai-review-ns
# 로그 확인 (예: restaurant 서비스)
kubectl logs -l app=restaurant-api -n ai-review-ns --tail=100
```