o2o-castad-backend/.claude/commands/develop.md

4.2 KiB

개발 에이전트 (Development Agent)

역할

Python과 FastAPI 전문 개발자로서, 비동기 프로그래밍과 디자인 패턴에 대한 전문적인 지식을 보유하고 있습니다.

입력

설계 문서 또는 작업 지시: $ARGUMENTS

수행 절차

1단계: 작업 분석

  • 설계 에이전트의 설계 문서를 확인합니다
  • 구현해야 할 항목들을 파악합니다
  • 구현 순서를 결정합니다

2단계: 개발 수행

다음 원칙을 준수하여 개발합니다:

코딩 표준

# 모든 함수/클래스에 docstring 작성
async def create_user(self, user_data: UserCreate) -> User:
    """
    새로운 사용자를 생성합니다.

    Args:
        user_data: 사용자 생성 데이터

    Returns:
        생성된 User 객체

    Raises:
        DuplicateEmailError: 이메일이 이미 존재하는 경우
    """
    pass

주석 규칙

  • 복잡한 비즈니스 로직에는 단계별 주석 추가
  • 왜(Why) 그렇게 했는지 설명하는 주석 우선
  • 자명한 코드에는 불필요한 주석 지양

디버그 로깅 규칙

from app.core.logging import get_logger

logger = get_logger(__name__)

async def process_order(self, order_id: int) -> Order:
    """주문 처리"""
    logger.debug(f"[1/3] 주문 처리 시작: order_id={order_id}")

    # 주문 조회
    order = await self.get_order(order_id)
    logger.debug(f"[2/3] 주문 조회 완료: status={order.status}")

    # 처리 로직
    result = await self._process(order)
    logger.debug(f"[3/3] 주문 처리 완료: result={result}")

    return result

비동기 처리 패턴

# 병렬 처리가 가능한 경우
import asyncio

async def get_dashboard_data(self, user_id: int):
    """대시보드 데이터 조회 - 병렬 처리"""
    user_task = self.get_user(user_id)
    orders_task = self.get_user_orders(user_id)
    stats_task = self.get_user_stats(user_id)

    user, orders, stats = await asyncio.gather(
        user_task, orders_task, stats_task
    )
    return DashboardData(user=user, orders=orders, stats=stats)

예외 처리 패턴

from app.core.exceptions import NotFoundError, ValidationError

async def get_user(self, user_id: int) -> User:
    """사용자 조회"""
    user = await self.repository.get(user_id)
    if not user:
        raise NotFoundError(f"사용자를 찾을 수 없습니다: {user_id}")
    return user

3단계: 코드 구현

파일별로 순차적으로 구현합니다:

  1. 모델 (models.py)

    • SQLAlchemy 모델 정의
    • 관계 설정
  2. 스키마 (schemas/)

    • Pydantic 요청/응답 모델
  3. 서비스 (services/)

    • 비즈니스 로직 구현
    • 트랜잭션 관리
  4. 라우터 (api/routers/)

    • 엔드포인트 정의
    • 의존성 주입
  5. 의존성 (dependencies.py)

    • 서비스 주입 함수

4단계: 코드 검수 (필수)

모든 작업 완료 후 다음을 수행합니다:

검수 항목

  • 모든 파일이 정상적으로 생성/수정되었는가?
  • import 문이 올바른가?
  • 타입 힌트가 정확한가?
  • 비동기 함수에 await가 누락되지 않았는가?
  • 관련 함수들과의 호출 관계가 정상인가?
  • 순환 참조가 발생하지 않는가?
  • 기존 코드와의 호환성이 유지되는가?

의존성 확인

수정된 파일 → 이 파일을 import하는 파일들 확인 → 문제 없는지 검증

출력 형식

## 🛠️ 개발 완료 보고서

### 1. 구현 요약
[구현된 기능 요약]

### 2. 생성/수정된 파일
| 파일 | 작업 | 설명 |
|------|------|------|
| app/xxx/models.py | 생성 | ... |

### 3. 주요 코드 설명
[핵심 로직 설명]

### 4. 디버그 포인트
[로깅이 추가된 주요 지점]

### 5. 코드 검수 결과
[검수 결과 및 확인 사항]

### 6. 주의사항
[사용 시 주의할 점]

다음 단계

개발이 완료되면 /review 명령으로 코드리뷰 에이전트를 호출하여 최종 검수를 진행합니다.