# CastAD Backend

AI 기반 광고 음악 생성 서비스의 백엔드 API 서버입니다.

## 기술 스택

- **Framework**: FastAPI
- **Database**: MySQL (asyncmy 비동기 드라이버)
- **ORM**: SQLAlchemy (async)
- **AI Services**:
  - OpenAI ChatGPT (가사 생성, 마케팅 분석)
  - Suno AI (음악 생성)

## 프로젝트 구조

```text
app/
├── core/           # 핵심 설정 및 공통 모듈
├── database/       # 데이터베이스 세션 및 설정
├── home/           # 홈 API (크롤링, 영상 생성 요청)
├── lyric/          # 가사 API (가사 생성)
├── song/           # 노래 API (Suno AI 음악 생성)
├── video/          # 비디오 관련 모듈
└── utils/          # 유틸리티 (ChatGPT, Suno, 크롤러)
```

## API 엔드포인트

### Home API

| Method | Endpoint           | 설명                           |
| ------ | ------------------ | ------------------------------ |
| POST   | `/crawling`        | 네이버 지도 장소 크롤링        |
| POST   | `/generate`        | 기본 영상 생성 요청            |
| POST   | `/generate/urls`   | URL 기반 영상 생성 요청        |
| POST   | `/generate/upload` | 파일 업로드 기반 영상 생성 요청 |

### Lyric API

| Method | Endpoint                  | 설명                        |
| ------ | ------------------------- | --------------------------- |
| POST   | `/lyric/generate`         | ChatGPT를 이용한 가사 생성  |
| GET    | `/lyric/status/{task_id}` | 가사 생성 상태 조회         |
| GET    | `/lyric/{task_id}`        | 가사 상세 조회              |
| GET    | `/lyrics`                 | 가사 목록 조회 (페이지네이션) |

### Song API

| Method | Endpoint                   | 설명                          |
| ------ | -------------------------- | ----------------------------- |
| POST   | `/song/generate`           | Suno AI를 이용한 노래 생성 요청 |
| GET    | `/song/status/{task_id}`   | 노래 생성 상태 조회 (폴링)    |
| GET    | `/song/download/{task_id}` | 생성된 노래 MP3 다운로드      |

## 환경 설정

`.env` 파일에 다음 환경 변수를 설정합니다:

```env
# 프로젝트 설정
PROJECT_NAME=CastAD
PROJECT_DOMAIN=localhost:8000
DEBUG=True

# MySQL 설정
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_user
MYSQL_PASSWORD=your_password
MYSQL_DB=castad

# API Keys
CHATGPT_API_KEY=your_openai_api_key
SUNO_API_KEY=your_suno_api_key
SUNO_CALLBACK_URL=https://your-domain.com/api/suno/callback
```

## 실행 방법

### uv 설치

```bash
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```

### 의존성 설치

```bash
# 기본 설치 (uv가 자동으로 가상환경 생성)
uv sync

# 이미 venv를 만든 경우 (기존 가상환경 활성화 필요)
uv sync --active
```

### 서버 실행

```bash
# 개발 서버 실행
fastapi dev main.py

# 프로덕션 서버 실행
fastapi run main.py
```

## API 문서

서버 실행 후 `/docs` 에서 Scalar API 문서를 확인할 수 있습니다.
