https://github.com/terry960302/nl2sql-excel-exporter
AI를 활용해 자연어를 SQL로 변환하고, 에이전트가 연결된 데이터베이스에 해당 쿼리를 실행한 뒤, 결과를 다운로드 가능한 Excel 파일로 제공하는 SaaS 파이프라인을 구축하는 MSA + Desktop App프로젝트입니다.
https://github.com/terry960302/nl2sql-excel-exporter
agent excel grafana java llm micronaut msa nlp postgresql prometheus python saas schema spring-boot sql tauri
Last synced: 5 months ago
JSON representation
AI를 활용해 자연어를 SQL로 변환하고, 에이전트가 연결된 데이터베이스에 해당 쿼리를 실행한 뒤, 결과를 다운로드 가능한 Excel 파일로 제공하는 SaaS 파이프라인을 구축하는 MSA + Desktop App프로젝트입니다.
- Host: GitHub
- URL: https://github.com/terry960302/nl2sql-excel-exporter
- Owner: terry960302
- Created: 2025-05-26T04:26:43.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-23T05:44:58.000Z (11 months ago)
- Last Synced: 2025-07-23T07:25:54.881Z (11 months ago)
- Topics: agent, excel, grafana, java, llm, micronaut, msa, nlp, postgresql, prometheus, python, saas, schema, spring-boot, sql, tauri
- Language: Java
- Homepage:
- Size: 3.24 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NL2SQL Studio
> NL2SQL Studio는 한국어 자연어 질의를 기반으로 사전에 정의된 데이터베이스 스키마에 맞춰 SQL을 자동 생성·실행하고, 그 결과를 엑셀 파일로 다운로드할 수 있는 설치형 애플리케이션입니다.

## 주요 기능
* **자연어 → SQL 변환**
한국어 입력을 SQL로 변환하여 복잡한 쿼리 작성 없이도 데이터 추출 가능
* **로컬 실행**
사용자의 로컬 환경에서 SQL을 실행해 보안 위험 최소화
* **엑셀 자동 생성**
조인·셀 병합 구조를 유지한 채 읽기 쉬운 Excel 파일로 내보내기
* **다중 DB 지원**
MySQL, PostgreSQL, Oracle 등 주요 RDBMS 지원
* **경량화된 모델 연동**
CPU 환경에서도 실행 가능한 경량 LLM 또는 외부 API 연동
## 아키텍처
```text
┌───────────────┐ ┌───────────────┐
│ NL2SQL Studio│ ─────▶ │ SaaS 관리 서버│
│ (Desktop App) │ │ (API & UI) │
└───────────────┘ └───────────────┘
│
│ SQL 실행 및 결과 전송
▼
┌────────────────────────┐
│ 로컬 DB 커넥터 │
│ (JDBC: MySQL, PG, Oracle) │
└────────────────────────┘
```
* **NL2SQL Studio**: React/Electron 또는 Tauri 기반 설치형 프론트엔드
* **로컬 DB 커넥터**: Spring Boot 기반 백엔드 모듈, JDBC 드라이버로 SQL 실행
* **SaaS 관리 서버**: 사용자·스키마 관리, 로그 및 사용량 집계용 REST API 서버
## 저장소 구조
```text
nl2sql-studio/
├── backend/ # 백엔드 모듈
│ ├── agent-studio/ # 에이전트 스튜디오 프로젝트
│ │ └── agent-studio-server/ # 에이전트 서버 코드
│ ├── docs/ # API·ERD·아키텍처·프로세스 문서
│ ├── domains/ # 마이크로서비스 도메인별 모듈
│ ├── infrastructure/ # 게이트웨이 등 인프라 코드
│ ├── shared/ # MSA 계약(공통 모듈)
│ ├── settings.gradle # Gradle 설정
│ ├── gradlew* # 빌드 스크립트
│ └── README.md # 백엔드 개요
├── frontend/ # 프론트엔드 모듈
│ ├── agent_studio_app/ # Flutter 기반 Desktop App
│ └── landing-page/ # React/Vite 랜딩 페이지
└── README.md # 프로젝트 루트 개요
```
## 설치 및 실행
### 1. 사전 요구사항
* Java 17 이상
- Ubuntu 기준 설치 예시: `sudo apt-get install openjdk-17-jdk`
* Node.js 16 이상 (프론트엔드 빌드용)
* 각 DB에 대한 JDBC 드라이버 (MySQL, PostgreSQL, Oracle)
### 2. 백엔드(SQL 실행 모듈) 실행
```bash
cd backend/agent-studio/agent-studio-server
./gradlew bootRun # 개발용 실행
./gradlew build # 빌드: build/libs/*.jar 생성
java -jar build/libs/*.jar # 로컬 테스트
```
### 3. 프론트엔드(Desktop App) 빌드 및 실행
```bash
cd frontend/agent_studio_app
flutter pub get
flutter run # 개발 모드 실행
# 또는
flutter build windows # Windows 빌드 예시
```
### 4. 랜딩 페이지 실행
```bash
cd frontend/landing-page
npm install
npm run dev # 개발 서버 실행
npm run build # 프로덕션 빌드
```
### 5. 서버(SaaS 관리) 실행
```bash
cd server
./gradlew bootRun # 개발용 실행
```
## 환경 변수 설정
* **backend/agent-studio-server**/.env
```properties
DB_URL=jdbc:mysql://localhost:3306/yourdb
DB_USER=username
DB_PASS=password
```
* **frontend/landing-page**/.env
```properties
VITE_API_URL=https://api.yourdomain.com
```
* **server**/.env
```properties
SERVER_PORT=8080
JWT_SECRET=your-secret-key
```
## 사용 예시
1. 앱 실행 후 상단 검색창에 자연어 질의 입력
2. ‘실행’ 클릭 시 로컬 DB에 SQL 실행
3. 결과 테이블 미리보기 및 ‘엑셀 다운로드’ 클릭
4. 병합·형식이 유지된 `.xlsx` 파일 즉시 저장
## 배포
* **Desktop App**: 각 OS용 설치 프로그램 생성 후 배포
* **Server**: Docker 이미지로 패키징 후 Kubernetes 또는 VM에 배포
## 기여 방법
1. 이 저장소를 Fork 합니다.
2. 브랜치를 생성합니다: `git checkout -b feature/your-feature`
3. 변경 사항을 커밋합니다: `git commit -m "Add your feature"`
4. 원격 저장소에 Push 합니다: `git push origin feature/your-feature`
5. PR(Pull Request)을 생성하고 리뷰를 요청합니다.
## 라이선스
MIT License
자세한 내용은 `LICENSE` 파일을 참조하세요.