FastAPI 프로젝트 생성기
깔끔하고 검증된 FastAPI 프로젝트를 생성합니다. 사용자와 간단히 인터뷰하고, 합리적인 기본값을 추천하며, 스캐폴딩한 후 실제 명령어로 검증합니다.
1단계 - 인터뷰
에이전트에 구조화된 질문 도구가 있다면 사용하세요(사용자 질문 또는 객관식 프롬프트 도구). 없으면 채팅에서 동일한 질문을 짧은 번호 목록과 선택지(추천 옵션 표시)로 제시하고 답변을 기다리세요.
최대 두 라운드로 질문하세요. 사용자가 메시지에서 이미 답변한 질문은 건너뜁니다. 항상 "(추천)"으로 추천 옵션을 먼저 표시하세요. 안전한 기본값이 있는 항목은 묻지 마세요.
1라운드 - 필수 (한 번에 최대 4개 질문):
- 프로젝트 이름 - 자유 텍스트("기타" 사용). 디렉터리 이름을 기반으로 짧은 제안을 제공하세요. 폴더명은 케밥-케이스, Python 이름은 스네이크_케이스로 정규화합니다.
- 대상 폴더 - 옵션: 현재 디렉터리
./<name>(추천), 사용자 지정 경로(기타). - 아키텍처 - 모듈형 계층(추천), 최소, 클린 아키텍처, 헥사고날. 마이크로서비스는 "기타"를 통해서만 나타납니다. 선택한 경우 이유를 묻고 작은 앱에는 권장하지 않는다고 경고하세요(
references/architectures.md참조). - 서비스(다중 선택) - PostgreSQL + SQLAlchemy + Alembic, JWT 인증, Redis, Docker Compose. PostgreSQL과 Docker Compose를 추천합니다.
2라운드 - 선택 사항(해당되는 경우에만 질문, 한 번에):
- 벡터 DB(다중 선택, 사용자가 AI/RAG 또는 Qdrant를 원하는 경우): Qdrant, PostgreSQL pgvector, 없음.
- AI 모듈(다중 선택): 없음(추천), LangChain, LangGraph, RAG, MCP.
- LLM 제공자(AI 모듈 선택된 경우): OpenAI, Anthropic, Google Gemini, Ollama (로컬).
- 대화 상태 유지?(LangGraph 선택된 경우만): 예(Postgres 체크포인터 사용) / 아니요(인메모리).
그런 다음 선택 사항을 6줄로 요약하여 출력하고 진행하세요. 대상 폴더가 비어 있지 않은 경우가 아니면 추가 확인을 요청하지 마세요.
2단계 - 안전 검사
- 대상 경로를 확인합니다. 존재하고 비어 있지 않으면 중단하고 다른 폴더를 사용할지 또는 병합할지 물어보세요. 명시적 승인 없이 기존 파일을 덮어쓰지 마세요.
uv가 설치되었는지 확인합니다(uv --version). 설치되지 않은 경우 설치 방법을 알려주고(curl -LsSf https://astral.sh/uv/install.sh | sh) 중단합니다.- Docker Compose가 선택된 경우에만 Docker가 사용 가능한지 확인하고, 검증 단계에서만 확인합니다.
3단계 - 스캐폴딩
코드를 생성하기 전에 해당 참조 파일을 읽으세요:
- 항상:
references/base-project.md(레이아웃, 시작 파일, uv 규칙, 코드 표준) - 선택한 아키텍처:
references/architectures.md - 선택한 서비스:
references/services.md(의존성, Docker 표준) - 모든 AI 모듈:
references/ai-rag.md
항상 적용되는 규칙:
- Python 3.12, uv만 사용(pip 사용 금지).
backend/pyproject.toml과backend/uv.lock은 함께 유지. [tool.uv] package = false(사용자가 명시적으로 설치 가능한 패키지를 원하는 경우 제외).src/디렉터리 없음. 빈 추상화 계층 없음.- 선택된 서비스에 대해서만
uv add/uv add --dev로 의존성 추가. - 필수 파일:
app/main.py,app/core/config.py,app/api/routes/health.py,tests/test_health.py,.env.example,.gitignore,README.md. /health는 HTTP 200{"status": "ok"}반환, Swagger는/docs.- 소스에 비밀 정보를 절대 넣지 않으며,
.env를 커밋하지 않음. - AI 폴더, 엔드포인트, 의존성은 요청된 경우에만 존재.
4단계 - 검증 (실행하지 않고 성공을 주장하지 마세요)
backend/에서 실행:
uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest -v
Docker Compose가 선택된 경우: docker compose config (프로젝트 루트에서 실행). docker compose up -d는 사용자가 요청하거나 한 번 물어본 후에만 실행하세요. 실패 시 수정하고 다시 실행하세요. 검증할 수 없는 것이 있으면 그렇게 말하세요.
5단계 - 전달 보고서
간결하게 보고:
- 프로젝트 위치
- 선택한 아키텍처
- 포함된 서비스
- 설치된 의존성
- 생성된 파일(트리)
- API 실행 명령어:
cd backend && uv run uvicorn app.main:app --reload - 테스트 실행 명령어:
cd backend && uv run pytest -v - 실제 테스트 및 린트 결과
- 알려진 제한사항
마지막으로 다음 단계 하나를 제안하며 마무리하세요(예: "첫 번째 도메인 모듈 추가", "git init 및 푸시").