226 lines
5.7 KiB
Markdown
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
|
|
```
|