-
Notifications
You must be signed in to change notification settings - Fork 10
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
기능 설명 (Description)
- 현재 Lang2SQL 프로젝트는 여러 CLI 옵션을 통해 실행 및 설정을 해야 합니다. 예를 들어, Streamlit 웹 UI 실행을 위해
lang2sql --datahub_server <서버주소> run-streamlit -p <포트>처럼 복수의 플래그를 지정해야 합니다. - 이러한 복잡한 CLI 실행 옵션을 웹 UI 내에서 통합 관리하고자 합니다. 즉, 다양한 실행 파라미터(데이터허브 서버 URL, DB연결정보, VectorDB설정 등)를 UI에서 설정하도록 하여 사용자가 명령어 옵션을 직접 입력하지 않고도 편리하게 앱을 실행하고 구성할 수 있는 기능을 추가하려고 합니다.
왜 필요한가요? (Motivation / Use Case)
- 사용 편의성 향상: 현재는 OpenAI API 키, DataHub 서버 주소 등 여러 설정을 .env 파일에 기입하고, 실행 시에도 여러 CLI 플래그를 전달해야 합니다. 초기 세팅 진입 장벽이 높아 비개발자나 초심자에게 어려움을 줍니다. UI 통합을 통해 이러한 설정을 그래픽 인터페이스에서 입력할 수 있다면 설정 과정이 단순해집니다.
- 실행 시나리오: 사용자가 웹 UI에 접속하자마자 데이터허브 서버나 데이터베이스 연결 정보를 입력/선택하고 OpenAI API Key 등을 설정하는 화면을 제공하고, 이후 자연어 쿼리 -> SQL 변환 기능을 사용하는 흐름을 생각할 수 있습니다. 이러한 시나리오에서는 처음부터 CLI로 옵션을 넣고 재실행할 필요 없이, 웹에서 바로 설정 변경과 재시작/새로고침이 가능해집니다.
제안하는 해결 방법 (Proposed Implementation)
- 환경변수 통합 관리: 기존에 .env로 설정하던 OPENAI_API_KEY, LANGCHAIN_ 시리즈, DATAHUB_SERVER* 등의 변수를 UI에서 관리할 수 있도록 합니다
- UI에 “설정(Settings)” 페이지 또는 모달을 만들어 OpenAI API Key, DataHub 서버 URL 등을 입력받고, 애플리케이션 내부 환경 변수나 설정 객체를 업데이트하도록 구현합니다.
- CLI 진입점 최소화: lang2sql 실행 명령을 간소화합니다. 기본 동작으로 바로 Streamlit UI를 실행하도록 하고, port 옵션정도만 남깁니다.
- 구성 관리 모듈화: 설정값을 전역으로 관리하는 Config 클래스를 도입하거나, 현재 전역 변수/환경변수 사용 부분을 리팩토링하여 단일 진입점에서 설정 로드/저장이 가능하도록 합니다. 앱 시작 시 .env나 OS 환경변수를 읽고, UI에서 변경이 발생하면 해당 Config를 업데이트하며, 이 Config를 참조하는 각 컴포넌트(LLM 프롬프트 생성 모듈, DataHub 연동 모듈 등)가 실시간으로 반영받도록 구조를 개선합니다.
- 문서 업데이트: CLI 옵션을 UI로 이전함에 따라 기존 README와 사용법 문서 수정이 필요합니다. 새로운 UI 설정 방법, 그리고 여전히 CLI로 설정할 수 있는 항목이 있다면 (예: 초기 포트 지정 등) 그 부분을 명시합니다.
대안 (Alternatives)
- TBD
추가 고려사항 (Additional Context)
- 보안 및 키 관리: UI에서 API 키 등을 입력받도록 할 경우, 해당 키를 백엔드 세션에 안전하게 저장하고 로그 등에 노출되지 않도록 해야 합니다. 환경변수로 관리하면 코드에는 노출되지 않지만 UI에서 입력 시 암호 필드 처리, 혹은 암호화 저장 등의 대비가 필요합니다.
- 향후 확장성: 이번 UI 통합 작업은 추후 멀티 DB 지원과도 연계됩니다. 예를 들어, UI 설정에 여러 개의 DB 커넥션(프로덕션, 스테이징 등)을 등록/선택할 수 있게 확장하는 방안을 미리 염두에 두고 구조를 잡으면 향후 요구사항도 수월하게 수용할 수 있습니다. 또한 DBMS 전환 기능 구현 시 현재 UI의 설정 관리 컴포넌트에 해당 옵션을 추가하는 식으로 발전시킬 수 있습니다. 157 이슈, 139 이슈
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request