Skip to content

[개선] cli/__init__.py 파일을 여러 모듈로 분리하여 유지보수성 개선 #167

@ParkGyeongTae

Description

@ParkGyeongTae

현재 cli/init.py 파일에는 다음과 같은 다양한 역할이 한 곳에 혼재되어 있습니다:

  • CLI 엔트리포인트 정의 (click.group, 글로벌 옵션 처리)
  • 환경 변수 로딩 로직 (.env, 프롬프트 디렉토리, VectorDB 설정)
  • Streamlit 실행 관련 함수 및 커맨드 (run_streamlit_command, run-streamlit 서브커맨드)
  • Query 실행 관련 커맨드 (query 서브커맨드, SQL 변환 로직)

이로 인해 파일이 지나치게 커지고 복잡해져 유지보수성과 가독성이 떨어집니다.
따라서 기능별로 파일을 분리하여 코드 구조를 개선할 필요가 있습니다.

개선 방향(Proposed Changes):

  • cli/init.py
    • CLI 엔트리포인트(click.group)와 커맨드 등록만 남김
  • cli/commands/query.py
    • query_command 정의 (자연어 → SQL 변환 로직)
  • cli/commands/streamlit.py
    • run_streamlit_command, run_streamlit_cli_command 정의
  • cli/utils/env_loader.py
    • .env 파일 로드, 프롬프트 디렉토리 설정, VectorDB 환경 변수 설정 로직 이동
  • (선택) cli/utils/logging.py
    • 로깅 설정 관련 공통 유틸 분리

기대 효과(Benefits):

  • 관심사 분리(Separation of Concerns): CLI 진입점, 쿼리 실행, Streamlit 실행, 환경 변수 로직이 명확히 분리됨
  • 테스트 용이성: 각 기능을 독립적으로 단위 테스트 가능
  • 확장성 확보: 새로운 CLI 커맨드를 추가할 때 cli/commands/ 디렉토리에만 추가하면 됨
  • 가독성 개선: 코드 리뷰와 유지보수가 쉬워짐

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions