# FastAPI Hexagonal Architecture AI 프롬프트 가이드
## 1. 아키텍처 개요 분석
현재 프로젝트는 다음과 같은 헥사고날 아키텍처 구조를 따르고 있습니다:
```7:23:docs/Hexagonal.md
src/
├── app/
│ ├── api/ # Presentation Layer (FastAPI 엔드포인트)
│ │ ├── v1/
│ │ │ ├── endpoints/ # HTTP 라우트 정의
│ │ │ └── schemas/ # 요청 및 응답 데이터 모델 (Pydantic)
│ ├── core/ # Application Core
│ │ ├── domain/ # 도메인 엔티티와 비즈니스 규칙
│ │ ├── ports/ # Ports 인터페이스 정의 (입력/출력 경계)
│ │ └── services/ # Use Cases와 Application Logic
│ ├── adapters/ # Adapters (외부 시스템과의 통합)
│ │ ├── persistence/ # 데이터베이스 접근 (리포지토리 구현)
│ │ ├── external/ # 외부 API 클라이언트
│ │ └── cli/ # CLI와 같은 비 HTTP 인터페이스
│ ├── config/ # 설정 및 환경 변수 관리
│ └── tests/ # 테스트 코드
├── main.py # FastAPI 어플리케이션 초기화
```
## 2. 프롬프트 가이드
### 2.1 도메인 엔티티 생성
```markdown
다음 요구사항에 맞는 도메인 엔티티를 생성해주세요:
- 엔티티 이름: [엔티티명]
- 속성: [속성 목록]
- 비즈니스 규칙: [규칙 목록]
- 값 객체: [값 객체 목록]
주의사항:
1. 외부 의존성 없이 순수 도메인 로직만 포함
2. dataclass 데코레이터 사용
3. 비즈니스 메서드 포함
4. 불변성 보장
```
### 2.2 포트 인터페이스 정의
```markdown
다음 요구사항에 맞는 포트 인터페이스를 정의해주세요:
- 포트 종류: [Query/Command/Repository]
- 대상 도메인: [도메인명]
- 필요한 작업: [작업 목록]
주의사항:
1. Protocol 클래스 사용
2. 추상 메서드로 정의
3. 명확한 입출력 타입 명시
4. 단일 책임 원칙 준수
```
### 2.3 어댑터 구현
```markdown
다음 요구사항에 맞는 어댑터를 구현해주세요:
- 어댑터 종류: [DB/외부API/캐시 등]
- 구현할 포트: [포트 인터페이스명]
- 기술 스택: [사용할 기술]
주의사항:
1. 포트 인터페이스 완벽 구현
2. 기술 종속적 코드 격리
3. 예외처리 포함
4. 트랜잭션 관리
```
### 2.4 API 엔드포인트 구현
```markdown
다음 요구사항에 맞는 API 엔드포인트를 구현해주세요:
- 엔드포인트: [HTTP 메서드 및 경로]
- 입력 스키마: [요청 데이터 구조]
- 출력 스키마: [응답 데이터 구조]
- 의존성: [필요한 서비스/포트]
주의사항:
1. FastAPI 라우터 사용
2. Pydantic 모델로 검증
3. 의존성 주입 활용
4. 예외처리 포함
```
### 2.5 서비스 레이어 구현
```markdown
다음 요구사항에 맞는 서비스를 구현해주세요:
- 서비스명: [서비스명]
- 사용할 포트: [포트 목록]
- 구현할 유스케이스: [유스케이스 목록]
주의사항:
1. 단일 책임 원칙 준수
2. 포트를 통한 의존성 주입
3. 트랜잭션 관리
4. 도메인 이벤트 처리
```
## 4. 품질 체크리스트
각 컴포넌트 구현 시 다음 사항을 확인하세요:
1. 도메인 중심
- [ ] 순수한 도메인 로직
- [ ] 외부 의존성 없음
- [ ] 비즈니스 규칙 캡슐화
2. 포트와 어댑터
- [ ] 명확한 인터페이스 정의
- [ ] 구현 교체 가능성
- [ ] 단방향 의존성
3. 의존성 주입
- [ ] 생성자 주입 사용
- [ ] 인터페이스 의존
- [ ] 구현체 분리
4. 테스트 용이성
- [ ] 단위 테스트 가능
- [ ] 목킹 가능
- [ ] 통합 테스트 준비
##한국어로 답변해줘
fastapi
golang
mako
python
First Time Repository
Python
Languages:
Mako: 0.6KB
Python: 68.1KB
Created: 12/9/2024
Updated: 1/5/2025