# 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), 관리자