콘텐츠로 이동

Backend

FastAPI API와 Canonical PostgreSQL 데이터·업무 규칙을 소유합니다. Python 3.12 이상과 uv를 사용하며 의존성은 pyproject.toml과 uv.lock에서 관리합니다.

실행

저장소 루트에서 다음을 실행합니다.

cd backend
uv sync
uv run uvicorn app.main:app --reload --port 8005

최초 설정 시 backend/envs/.env.example을 같은 폴더의 .env로 복사하고, DATABASE_URL에 준비된 로컬 개발 DB를 지정합니다. 실제 .env는 Git에서 제외하며 설정 예시만 추적합니다. 앱·Alembic·운영 CLI는 실행 위치와 관계없이 이 파일을 읽고, 프로세스에 주입된 환경변수가 파일보다 우선합니다.

서버 기본 API prefix는 /procedure-hub, 위 실행 명령의 health 주소는 http://127.0.0.1:8005/procedure-hub/health입니다. 실행 전 사용할 앱 포트의 점유를 확인합니다.

DB schema는 alembic/에서 관리합니다. 로컬 DB dump는 저장소 밖에서 보관하며, 서버 시작은 초기 데이터를 적재하지 않습니다.

폴더 역할

위치 책임
app/modules/ 도메인·애플리케이션·저장소 구현
app/router/ 외부 공개 compatibility API
app/core/ 설정·DB·트랜잭션 등 공통 기반
envs/ 로컬 환경 파일과 공유 설정 예시
alembic/ DB schema migration
scripts/ release·조회·검토 운영 CLI
tests/ 도메인·API·저장소 회귀 검증
tests/integration/ 기존 시술·번역 데이터가 필요한 DB 통합 검증

검증

backend/에서 실행합니다.

uv run ruff check app tests scripts
DATABASE_URL=sqlite+aiosqlite:///:memory: uv run pytest --ignore=tests/integration

CI도 같은 범위의 테스트를 실행하고, 별도로 빈 PostgreSQL의 Alembic schema를 검증합니다. tests/integration/은 기존 시술·번역 데이터와 일부 고정 데이터 건수를 전제로 하므로 CI에서 실행하지 않습니다. 필요한 데이터를 갖춘 별도 테스트 DB를 명시해 DATABASE_URL=... uv run pytest tests/integration으로 실행합니다. 일부 검증은 데이터를 수정하므로 개발·운영 DB를 지정하지 않습니다.

release 게시·검토· rollback CLI는 일반 검증 명령이 아니며, 실행 원장과 배포 가이드의 해당 절차를 따릅니다.

API 계약 · 도메인 메서드 계약 · 문서 지도