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 모델
- 전자정부프레임워크 센터: 표준 가이드
Metadata
Release files for devbooster 1.5.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| devbooster-1.5.3.tar.gz | 35.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| devbooster-1.5.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 71.8 kB
Release files / devbooster-1.5.3.tar.gz
| Download URL | devbooster-1.5.3.tar.gz |
|---|---|
| Size | 35.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf0db8249fffba76e089bdf7c50624f4208fd16905e239be7a10e385dd412956
|
|
BLAKE2b-256 checksum How to use checksums |
88f8f41ab4810a3ca1622b239b6ecf6216e9484042f80a1f50f864ed14de65fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / devbooster-1.5.3-py3-none-any.whl
| Download URL | devbooster-1.5.3-py3-none-any.whl |
|---|---|
| Size | 36.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
52db96c7a717ccdd97c7893b7323f8d52f65ad7980345007da9a318a47931894
|
|
BLAKE2b-256 checksum How to use checksums |
feb1c553e5c59860b6bc4dd1f99c76e08344f99585152328b490acc0a514f4b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|