Initial commit: AutonetSellCar platform with deployment system

- Frontend: Next.js 14 with TypeScript
- Backend: FastAPI with SQLAlchemy
- Agent: Carmodoo sync agent
- Deployment: Docker Compose based staging/production setup
- Scripts: Automated deployment with rollback support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
AutonetSellCar Deploy
2025-12-30 13:24:39 +09:00
commit 1f0dcb1ddb
224 changed files with 55119 additions and 0 deletions

179
docs/BUSINESS_LOGIC.md Normal file
View File

@@ -0,0 +1,179 @@
# AutonetSellCar Business Logic Documentation
## Overview
이 문서는 AutonetSellCar 플랫폼의 핵심 비즈니스 로직을 정의합니다.
모든 개발자는 이 문서를 참조하여 기능을 구현해야 합니다.
---
## 1. CC (Car Credit) 시스템
### 1.1 CC란?
- 플랫폼 내 가상 화폐
- 차량 추천 서비스에 사용
- 신규 가입 시 1 CC 지급 (10대 추천 가능)
### 1.2 CC 사용 기준
| 기능 | 비용 | 설명 |
|------|------|------|
| 차량 추천 | 1 CC | 10대 차량 추천 받을 수 있음 |
### 1.3 CC 충전 패키지
| 충전 금액 | 받는 CC | 추천 가능 차량 | 할인율 |
|-----------|---------|----------------|--------|
| $10 | 10 CC | 100대 | - |
| $27 | 30 CC | 300대 | 10% |
| $40 | 50 CC | 500대 | 20% |
### 1.4 결제 수단
- **Stripe**: Visa/Mastercard (몽골 사용자)
- **몽골 파트너 계좌**: 수동 충전 (러시아 사용자)
---
## 2. 차량 정보 접근 권한
### 2.1 일반 차량 (비배너)
| 정보 유형 | 비로그인 | 로그인 |
|-----------|----------|--------|
| 기본 정보 (제조사, 모델, 연식, 가격) | O | O |
| 대표 이미지 (1장) | O | O |
| 전체 이미지 | X (블러) | O |
| 딜러 연락처 | X | O |
| 성능점검표 | X | O |
> **참고**: 로그인 사용자는 모든 차량 정보를 열람할 수 있음. CC는 차량 추천 서비스에만 사용.
### 2.2 배너 차량 (Hero Banner)
**배너 차량이란?** 관리자가 메인 페이지 슬라이더에 등록한 프로모션 차량
| 정보 유형 | 비로그인 | 로그인 |
|-----------|----------|--------|
| 기본 정보 | O | O |
| 전체 이미지 | **O (무료)** | O |
| 딜러 연락처 | **O (무료)** | O |
| 성능점검표 | **O (무료)** | O |
> **참고**: 배너 차량은 비로그인 사용자도 모든 정보 열람 가능 (프로모션)
---
## 3. 성능점검표 (Performance Check)
### 3.1 접근 권한 조건
성능점검표를 볼 수 있는 경우:
1. **관리자** - 무조건 접근 가능
2. **로그인 사용자** - 무료 접근 가능
### 3.2 API 엔드포인트
| 엔드포인트 | 설명 | 인증 |
|------------|------|------|
| `GET /api/carmodoo/car/{id}/performance-check` | 성능점검표 조회 | Required |
| `GET /api/carmodoo/car/{id}/performance-check/pdf` | PDF 다운로드 | Required |
---
## 4. 배너 시스템 (Hero Banner)
### 4.1 배너 차량이란?
관리자가 메인 페이지 슬라이더에 등록한 프로모션 차량
### 4.2 배너 차량 특권
배너에 등록된 차량은 **비로그인 사용자**도 다음 정보 열람 가능:
- 모든 차량 이미지
- 딜러 연락처
- 성능점검표
- 차량 기본 정보
### 4.3 관련 API
| 엔드포인트 | 설명 |
|------------|------|
| `GET /api/hero-banners/check/{car_id}` | 배너 차량 여부 확인 |
| `GET /api/hero-banners/active` | 활성 배너 목록 조회 |
---
## 5. 차량 추천 시스템 (CC 사용)
### 5.1 추천 시스템 개요
```
사용자가 원하는 조건으로 차량 추천 요청:
1. 사용자가 조건 입력 (예산, 연식, 제조사 등)
2. CC 차감 (1 CC = 10대 추천)
3. 시스템이 조건에 맞는 차량 추천
4. 사용자가 추천 차량 열람
※ 배너 차량 여부는 성능점검표 접근에 영향 없음
```
### 5.2 파일 의존성
| 기능 | Backend 파일 | Frontend 파일 |
|------|--------------|---------------|
| 성능점검표 조회 | `app/api/carmodoo.py` | `app/cars/[id]/page.tsx` |
| 배너 차량 확인 | `app/api/hero_banners.py` | `app/cars/[id]/page.tsx` |
| CC 충전 | `app/api/cc.py` | `app/cc/page.tsx` |
| 차량 추천 | `app/api/recommend.py` | `app/recommend/page.tsx` |
---
## 6. 현지딜러 시스템
### 6.1 딜러 등급 및 수수료
몽골 마진(5%)에서 딜러 수수료 지급:
| 등급 | 조건 | 수수료율 |
|------|------|----------|
| 일반 (Standard) | 기본 | 3.0% |
| 실버 (Silver) | 10건+ 판매 | 3.5% |
| 골드 (Gold) | 30건+ 판매 | 4.0% |
| 플래티넘 (Platinum) | 100건+ 판매 | 4.5% |
### 6.2 레퍼럴 시스템
- 딜러가 고객에게 추천 코드 제공
- 고객이 차량 구매 시 딜러에게 수수료 지급
- **1단계 직접 추천만 인정** (다단계 아님)
---
## 7. 변경 이력
| 날짜 | 변경 내용 | 작성자 |
|------|----------|--------|
| 2024-12-23 | 최초 문서 작성 | Claude |
| 2024-12-24 | CC 시스템 변경 (추천 서비스 기반) | Claude |
---
## 8. 주의사항
1. **CC는 차량 추천에만 사용**
- 차량 정보 열람은 로그인만 하면 무료
- CC는 추천 서비스에만 사용 (1 CC = 10대 추천)
2. **배너 차량은 완전 무료**
- 비로그인 사용자도 모든 정보 열람 가능
3. **기능 추가 시 이 문서 업데이트 필수**
- 새로운 유료/무료 기능 추가 시 반드시 문서화
4. **테스트 시나리오 확인**
- 배너 차량 + 비로그인 사용자
- 일반 차량 + 비로그인 사용자
- 일반 차량 + 로그인 사용자
- CC 충전 및 추천 서비스

194
docs/DEPENDENCIES.md Normal file
View File

@@ -0,0 +1,194 @@
# AutonetSellCar Dependencies Documentation
## Overview
이 문서는 주요 기능 간의 의존성을 명시합니다.
기능 추가/수정 시 영향 범위를 파악하는 데 사용합니다.
---
## 1. 성능점검표 (Performance Check) 의존성
### 1.1 Backend 의존성
```
app/api/carmodoo.py
├── get_car_performance_check() # 성능점검표 조회
│ ├── models.CarPerformanceCheck # DB 모델
│ ├── models.PerformanceCheckView # 0.1 CC 결제 기록
│ ├── models.CarView # 1 CC 결제 기록
│ └── auth.get_current_user_optional
├── get_car_performance_check_pdf() # PDF 다운로드
│ ├── models.CarPerformanceCheck
│ ├── models.PerformanceCheckView
│ ├── models.CarView
│ ├── auth.get_current_user # 로그인 필수
│ └── services.pdf_service
app/api/cc.py
├── purchase_performance_check_view() # 0.1 CC 결제
│ ├── models.User
│ ├── models.PerformanceCheckView
│ └── CC 차감 로직
```
### 1.2 Frontend 의존성
```
app/cars/[id]/page.tsx
├── ccApi.getPerformanceCheck() # API 호출
├── ccApi.purchasePerformanceCheck() # 결제 API
├── ccApi.downloadPerformanceCheckPdf()
├── hasPerformanceCheckAccess # 상태
└── performanceCheck # 데이터
lib/api.ts
├── ccApi.getPerformanceCheck()
├── ccApi.purchasePerformanceCheck()
└── ccApi.downloadPerformanceCheckPdf()
```
### 1.3 비즈니스 로직 의존성
```
성능점검표 접근 권한 판단:
┌─────────────────────────────────────────────┐
│ 1. current_user.is_admin == True → 허용 │
│ 2. PerformanceCheckView 존재 → 허용 │
│ 3. CarView 존재 → 허용 │
│ 4. 그 외 → 거부 │
│ │
│ ※ HeroBanner 여부와 무관 │
└─────────────────────────────────────────────┘
```
---
## 2. 배너 차량 (Hero Banner) 의존성
### 2.1 Backend 의존성
```
app/api/hero_banners.py
├── check_car_is_banner() # 배너 차량 확인
│ └── models.HeroBanner
├── get_active_banners() # 활성 배너 목록
│ └── models.HeroBanner
```
### 2.2 Frontend 의존성
```
app/cars/[id]/page.tsx
├── checkBannerCar() # 배너 여부 확인
├── isBannerCar # 상태
└── 이미지/연락처 표시 로직
components/FilmStripSlider.tsx
└── 배너 클릭 시 /cars/{id}로 이동
```
### 2.3 배너 차량이 영향을 주는 기능
| 기능 | 영향 | 설명 |
|------|------|------|
| 차량 이미지 | O | 무료로 전체 공개 |
| 딜러 연락처 | O | 무료로 공개 |
| 성능점검표 | **X** | 여전히 0.1 CC 필요 |
---
## 3. CC 결제 시스템 의존성
### 3.1 결제 타입별 영향
```
┌─────────────────────────────────────────────────────────┐
│ 0.1 CC 결제 (purchase_performance_check) │
├─────────────────────────────────────────────────────────┤
│ → PerformanceCheckView 생성 │
│ → 성능점검표만 접근 가능 │
│ → 이미지/연락처는 별도 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 1 CC 결제 (purchase_car_view) │
├─────────────────────────────────────────────────────────┤
│ → CarView 생성 │
│ → 모든 이미지 접근 가능 │
│ → 딜러 연락처 접근 가능 │
│ → 성능점검표 접근 가능 (포함) │
└─────────────────────────────────────────────────────────┘
```
### 3.2 파일 의존성 맵
```
app/api/cc.py
├── purchase_performance_check_view()
│ ├── models.User.cc_balance
│ ├── models.PerformanceCheckView (생성)
│ └── CC_PERFORMANCE_CHECK_COST = 0.1
├── purchase_car_view()
│ ├── models.User.cc_balance
│ ├── models.CarView (생성)
│ └── CC_VIEW_COST = 1.0
```
---
## 4. 수정 시 체크리스트
### 4.1 성능점검표 로직 수정 시
- [ ] `backend/app/api/carmodoo.py` - `get_car_performance_check()`
- [ ] `backend/app/api/carmodoo.py` - `get_car_performance_check_pdf()`
- [ ] `backend/app/api/cc.py` - `purchase_performance_check_view()`
- [ ] `frontend/src/app/cars/[id]/page.tsx`
- [ ] `frontend/src/lib/api.ts`
- [ ] `docs/BUSINESS_LOGIC.md` 업데이트
- [ ] `backend/tests/test_performance_check.py` 테스트 실행
- [ ] `backend/tests/test_integration_performance_check.py` 테스트 실행
### 4.2 배너 차량 로직 수정 시
- [ ] `backend/app/api/hero_banners.py`
- [ ] `frontend/src/app/cars/[id]/page.tsx` - `checkBannerCar()`
- [ ] `frontend/src/components/FilmStripSlider.tsx`
- [ ] `docs/BUSINESS_LOGIC.md` 업데이트
### 4.3 CC 결제 로직 수정 시
- [ ] `backend/app/api/cc.py`
- [ ] `frontend/src/lib/api.ts`
- [ ] `frontend/src/app/cars/[id]/page.tsx`
- [ ] `docs/BUSINESS_LOGIC.md` 업데이트
---
## 5. 변경 이력
| 날짜 | 변경 내용 | 작성자 |
|------|----------|--------|
| 2024-12-23 | 최초 문서 작성 | Claude |
---
## 6. 주의사항
### 절대 잊지 말아야 할 규칙
1. **배너 차량 ≠ 모든 정보 무료**
- 이미지, 연락처만 무료
- 성능점검표는 0.1 CC 필요
2. **성능점검표 접근 로직 수정 시**
- `carmodoo.py`의 두 함수 모두 수정 필요
- `get_car_performance_check()` + `get_car_performance_check_pdf()`
3. **테스트 필수**
- 모든 사용자 유형 x 차량 유형 조합 테스트
- 비로그인, 로그인(미결제), 로그인(0.1CC), 로그인(1CC), 관리자