AI-powerd CRUD code generator for eGov Framework with intelligent PK analysis
Project description
DevBooster
전자정부프레임워크 CRUD 코드 자동 생성기
특징
- 📊 Excel 명세서 기반: 테이블 정의서(Excel)만 있으면 CRUD 코드 자동 생성
- 🤖 AI 기반 분석: Ollama를 활용한 지능형 PK 컬럼 분석 (v1.5 NEW!)
- 🔍 3단계 분석: 명시적 PK → AI 분석 → 규칙 기반 폴백
- 🎯 전정프 표준: 전자정부프레임워크 4.x 기준 완벽 준수
- 📦 즉시 사용: Mapper.xml, VO, Service, Controller 한 번에 생성
- ⚙️ 설정 기반: TXT 파일로 필터링 규칙 관리 (v1.5 NEW!)
- 🐳 컨테이너 지원: Docker + Kubernetes 배포 가능
- 🚀 FastAPI 서버: REST API로 코드 생성 서비스 제공
- 🔒 폐쇄망 지원: 오프라인 설치 가능
📦 설치
CLI 버전 (권장)
git clone https://github.com/your-username/devbooster.git
cd devbooster
pip install -e .
의존성 (자동 설치):
- click>=8.1.0
- pandas>=2.0.0
- openpyxl>=3.1.0
- jinja2>=3.1.0
- fastapi>=0.104.0 (API 서버용)
- requests>=2.31.0 (AI 연동용)
Docker 버전
# Docker 이미지 빌드
docker build -t devbooster:latest .
# 실행
docker run -p 5000:5000 devbooster:latest
Kubernetes 배포
# Kind 클러스터에 배포
kind load docker-image devbooster:latest --name devbooster-ai
kubectl apply -f devbooster-k8s.yaml
kubectl apply -f service-ai.yaml
# 접속
kubectl port-forward service/devbooster-svc 8080:80
# http://localhost:8080/docs
빠른 시작
# Excel 파일로 CRUD 생성
devbooster generate -i tables.xlsx
# 결과: generated/generated.zip
API 서버 모드
# FastAPI 서버 실행
uvicorn devbooster.api.main:app --host 0.0.0.0 --port 5000
# Swagger UI: http://localhost:5000/docs
🤖 AI 기능 (v1.5)
AI 기반 PK 분석
Ollama를 활용하여 테이블 구조를 분석하고 PK 컬럼을 자동으로 추론합니다.
3단계 분석 프로세스:
1단계: 명시적 PK 체크
└─ Excel의 PK 컬럼 확인
2단계: AI 분석 (Ollama)
└─ Qwen 2.5 Coder 7B 모델
컬럼명, 타입, 설명 분석
→ PK 추론
3단계: 규칙 기반 폴백
└─ _ID, _NO, _SEQ 패턴 매칭
설정:
# Ollama 설치 (https://ollama.ai)
ollama pull qwen2.5-coder:7b
# 환경 변수 (선택)
export OLLAMA_HOST=http://localhost:11434
예시:
$ devbooster generate -i tables.xlsx
📋 분석 중: TB_NOTICE
1단계: 명시적 PK 없음
2단계: AI 분석...
→ NOTICE_ID (신뢰도: 95%)
✅ PK 컬럼: NOTICE_ID
⚙️ 설정 시스템 (v1.5)
config/ 폴더 구조
config/
├─ table_rules.txt # 테이블 제외 패턴
├─ table_whitelist.txt # 테이블 화이트리스트
├─ pk_rules.txt # PK 명명 규칙
├─ prefix_rules.txt # 접두사 제거 규칙
└─ column_rules.txt # 컬럼 타입 매핑
테이블 필터링
자동 제외되는 테이블:
# config/table_rules.txt
# 백업 테이블
_(BAK|BACKUP)$
# 임시 테이블
_(TEMP|TMP)$
^(TEMP|TMP)_
# 날짜 패턴
_\d{6,8}$ # TB_USERS_20241225
^\d{6,8}_ # 20241225_USERS
화이트리스트 (예외 처리):
# config/table_whitelist.txt
# 정식 테이블인데 제외 패턴에 걸리는 경우
USER_TEMP_SETTINGS
PRODUCT_TEST_CONFIG
장점:
- ✅ 코드 수정 없이 규칙 변경 가능
- ✅ 회사별 커스터마이징 용이
- ✅ 유지보수성 향상
📊 입력 형식 (Excel)
시트 구조
시트명이 테이블명이 됩니다 (예: TB_NOTICE)
| 컬럼명 | 데이터타입 | 길이 | PK | NULL | 기본값 | 설명 |
|---|---|---|---|---|---|---|
| NOTICE_ID | NUMBER | 10 | Y | N | 공지사항ID | |
| TITLE | VARCHAR2 | 200 | N | N | 제목 | |
| CONTENT | CLOB | N | Y | 내용 | ||
| USE_YN | CHAR | 1 | N | N | 사용여부 |
지원 기능:
- ✅ PK 명시 (Y/N)
- ✅ PK 없는 테이블 지원 (AI가 추천)
- ✅ 복합키 지원
- ✅ 임시 테이블 자동 필터링
- ✅ 논리삭제 (USE_YN, DEL_YN) 자동 처리
예제 파일
# 샘플 Excel 생성
python -m devbooster.examples.create_sample
📦 생성 결과
generated/
├─ notice/
│ ├─ NoticeMapper.xml # MyBatis Mapper
│ ├─ NoticeMapper.java # Mapper Interface
│ ├─ NoticeVO.java # Value Object
│ ├─ NoticeService.java # Service Interface
│ ├─ NoticeServiceImpl.java # Service 구현체
│ └─ EgovNoticeController.java # Controller
└─ generated.zip # 전체 압축파일
🎨 주요 기능
1. 테이블 진단
$ devbooster generate -i tables.xlsx
📋 처리 중: TB_NOTICE
PK: NOTICE_ID (AI 분석)
품질: good
파일: 6개 생성 완료 ✅
2. PK 없는 테이블 지원
📋 처리 중: TB_ATTACH
⚠️ PK 없음 - Identifier 지정 필요
💡 AI 추천 Identifier:
1. BOARD_ID + FILE_SEQ (복합키, 신뢰도: 92%)
2. FILE_SEQ (단일키, 신뢰도: 78%)
3. 논리삭제 자동 처리
USE_YN 또는 DEL_YN 컬럼이 있으면:
- DELETE 쿼리 → UPDATE로 자동 변경
- 목록 조회 시 자동 필터링
4. 임시 테이블 자동 필터링
📋 Excel 파싱 중...
✅ TB_USERS (처리)
⚠️ TB_USERS_BAK (제외: 백업 테이블)
⚠️ TEMP_ORDER (제외: 임시 테이블)
⚠️ TB_TEST_20241225 (제외: 날짜 패턴)
🛠️ 고급 사용
CLI 옵션
# 프레임워크 선택
devbooster generate -i tables.xlsx -f egov # 전정프 (기본)
devbooster generate -i tables.xlsx -f boot # Spring Boot
# 데이터베이스 선택
devbooster generate -i tables.xlsx -d oracle # Oracle (기본)
devbooster generate -i tables.xlsx -d mysql # MySQL
# 출력 디렉토리 지정
devbooster generate -i tables.xlsx -o output/
# AI 분석 비활성화
devbooster generate -i tables.xlsx --no-ai
Python API
from devbooster.core.parser import parse_excel
from devbooster.core.analyzer import TableAnalyzer
from devbooster.core.renderer import TemplateRenderer
from devbooster.core.writer import FileWriter
# Excel 파싱
tables = parse_excel("tables.xlsx")
# 분석
analyzer = TableAnalyzer()
diagnosis = analyzer.analyze(tables[0])
# 코드 생성
renderer = TemplateRenderer()
outputs = renderer.render_all(tables[0])
# 파일 저장
writer = FileWriter()
writer.write_files(outputs, tables[0].module)
writer.create_zip()
REST API
# 서버 실행
uvicorn devbooster.api.main:app --host 0.0.0.0 --port 5000
엔드포인트:
POST /generate
Content-Type: multipart/form-data
{
"file": ,
"framework": "egov",
"database": "oracle"
}
Response:
{
"status": "success",
"tables_processed": 5,
"files_generated": 30,
"download_url": "/download/generated.zip"
}
📋 지원 환경
- 전자정부프레임워크: 4.x 이상
- Spring Framework: 5.x 이상
- Java: 8 이상
- Python: 3.10 이상
DevBooster 실행 환경
- Python: 3.10 이상
- OS: Windows, Linux, macOS
- AI (선택): Ollama + Qwen 2.5 Coder 7B
배포 환경 (선택)
- Docker: 20.x 이상
- Kubernetes: 1.24 이상
- Kind: 로컬 테스트용
🔒 폐쇄망 설치
Wheels 방식
# 외부망에서
pip download devbooster -d wheels/
# 폐쇄망에서
pip install --no-index --find-links=wheels/ devbooster
Docker 이미지 방식
# 외부망에서
docker save devbooster:latest -o devbooster.tar
# 폐쇄망에서
docker load -i devbooster.tar
실행파일 방식 (추천, v1.0 릴리즈 후)
# 1. Releases에서 devbooster.exe 다운로드
# 2. 폐쇄망에 복사
# 3. 즉시 실행
devbooster.exe generate -i tables.xlsx
🎯 로드맵
완료된 기능
- v1.0: 전정프 CRUD 생성
- v1.5: AI 기반 PK 분석 (Ollama)
- v1.5: 설정 파일 시스템
- v1.5: FastAPI 서버 모드
- v1.5: Docker + Kubernetes 지원
예정된 기능
- v1.6: PyPI 배포 (2025년 1월)
- v1.7: Spring Boot 완전 지원
- v1.8: GUI 버전
- v2.0: 다국어 지원 (영어, 일본어)
- v2.1: 코드 품질 분석 (SonarQube 연동)
🤝 기여
이슈와 PR은 언제나 환영합니다!
개발 환경 설정
git clone https://github.com/KTC-GIT/devbooster.git
cd devbooster
pip install -e ".[dev]"
# 테스트 실행
pytest
# 코드 스타일 검사
flake8 src/
black src/
📝 라이선스
MIT License - 상업적 사용 가능
🔗 링크
- GitHub: https://github.com/KTC-GIT/devbooster
- Issues: https://github.com/KTC-GIT/devbooster/issues
- Discussions: https://github.com/KTC-GIT/devbooster/discussions
🙏 감사의 말
- Ollama: AI 분석 엔진 제공
- Qwen Team: Qwen 2.5 Coder 모델
- 전자정부프레임워크 센터: 표준 가이드
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devbooster-1.5.3.tar.gz.
File metadata
- Download URL: devbooster-1.5.3.tar.gz
- Upload date:
- Size: 35.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf0db8249fffba76e089bdf7c50624f4208fd16905e239be7a10e385dd412956
|
|
| MD5 |
9ca4a874f9f61240b23500e2514e9f6a
|
|
| BLAKE2b-256 |
88f8f41ab4810a3ca1622b239b6ecf6216e9484042f80a1f50f864ed14de65fb
|
File details
Details for the file devbooster-1.5.3-py3-none-any.whl.
File metadata
- Download URL: devbooster-1.5.3-py3-none-any.whl
- Upload date:
- Size: 36.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52db96c7a717ccdd97c7893b7323f8d52f65ad7980345007da9a318a47931894
|
|
| MD5 |
4eef330d8819061298f5ddce6760cf68
|
|
| BLAKE2b-256 |
feb1c553e5c59860b6bc4dd1f99c76e08344f99585152328b490acc0a514f4b6
|