Skip to content

[PR] feat: 데이터베이스 스키마 설계 및 인프라 구축 자동화 스크립트 추가 #268

Description

@oosuhada

📝 PR 본문 (Body)

🎯 작업 목적

  • RAG 파이프라인의 핵심인 **상향식(Bottom-up) 지식 트리 및 의존성 관계(Fan-in)**를 표현하는 PostgreSQL 17 + pgvector 기반 DB 스키마 설계
  • 리눅스/로컬 개발 환경에서 도커 컨테이너 실행, 포트 포워딩, 방화벽 허용 및 스키마 자동 주입까지 원클릭으로 완료할 수 있는 인프라 실행 환경 구축
  • 기획 및 개발 사양에 맞춰 전체 가이드 문서(README, GETTING_STARTED, 마스터 기능명세서)에 Python 3.12 및 React 19 환경 버전 규격 동기화

✨ 주요 변경 사항

  • .gitignore 수정: python venv 규칙에 가려 무시되던 루트 level의 /scripts/ 폴더를 예외 처리(!/scripts/)하여 형상 관리에 안전하게 포함시켰습니다.
  • database/init.sql 추가: vector 익스텐션 활성화, 대용량 소스코드 원문 테이블(source_files), 코사인 유사도 검색용 청크 테이블(code_chunks), 파일 간의 import 참조 관계를 기록하는 의존성 테이블(file_dependencies) 설계 및 HNSW 인덱스 적용.
  • scripts/setup_env.sh 추가: PostgreSQL 17 + pgvector 컨테이너 기동 셸 스크립트. 기존 충돌 컨테이너 자동 제거, 볼륨 마운트, 5432:5432 포트 포워딩, 최대 커넥션(500) 및 TZ 설정 포함.
  • scripts/init_db.sh 추가: pg_isready를 활용해 DB 컨테이너가 준비될 때까지 대기 후 init.sql 스크립트를 자동 주입하는 초기화 셸 스크립트 구현.
  • scripts/docker-compose.yml 수정: docker run 명령어와 동일하게 작동되도록 pg17 이미지 정보 및 DB 설정 1:1 매핑.
  • 버전 규격 명세화: README.md, GETTING_STARTED.md, CodeMap_Master_Specification.md에 Python v3.12 및 React v19.2 버전 요건 명시 및 동기화.

🛠️ 리뷰 및 로컬 테스트 방법

리뷰어가 로컬 환경에서 다음과 같이 인프라 기동 및 스키마 자동 초기화 결과를 테스트할 수 있습니다.

  1. 브랜치 체크아웃:
    git checkout feat/infra-and-db-setup
  2. PostgreSQL pg17 컨테이너 구동 (포트 포워딩):
    # setup_env.sh 실행
    sh CodeMap/scripts/setup_env.sh
    # 5432 포트로 postgresql-17 컨테이너가 가동되는지 확인
    docker ps
  3. 스키마 초기화 스크립트 구동:
    # init_db.sh 실행 (pg_isready 대기 후 init.sql 주입)
    sh CodeMap/scripts/init_db.sh
  4. 스키마 및 pgvector 생성 검증:
    # 컨테이너 psql에 진입해 생성된 테이블 리스트 확인
    docker exec -it postgresql-17 psql -U codemap -d codemap -c "\dt"
    # pgvector 익스텐션 활성화 여부 확인
    docker exec -it postgresql-17 psql -U codemap -d codemap -c "\dx"

📸 실행 결과 (선택)

  • init_db.sh 실행 시 콘솔 출력 결과:
데이터베이스 스키마 초기화가 성공적으로 완료되었습니다!
=============================================

⚠️ 리뷰어에게 당부하는 점

  • pgvector HNSW 인덱스 생성 및 코사인 유사도 검색용 인덱스 쿼리(vector_cosine_ops)가 init.sql에 올바르게 적용되어 있는지 검토해 주세요.
  • 기존 .gitignore 변경으로 인해 scripts/ 폴더 내 다른 파일들이 예외 처리로 올라가지 않도록, /scripts/로 절대 경로 매핑을 한 부분이 정상 작동하는지 확인해 주세요.

Originally authored by smmini as PR #7

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions