📋 프로젝트 개요
기존 브랜드
1472
신규 브랜드
irosafe
백엔드
SB 2.5.2 → 3.3
Java 8 → 17
DB
MariaDB 10.6
신스키마 재설계
1472 문서 파쇄 ERP 시스템을 irosafe 브랜드 로 이관하면서 기술 스택 전반을 현대화하는 프로젝트.
- 📦 대상: 1472s_shred-system (Spring Boot Java) + 1472s_shred-android (WebView)
- 🔄 버전업: Spring Boot 2.5.2 → 3.3 LTS, Java 8 → 17 (또는 21)
- 🗄️ DB 재설계: ILSA_SHREDDING → irosafe_shred, 스키마 정상화 (30 결함 식별)
- 🧹 코드 정리: 데드코드 + 미사용 import + 미사용 의존성 자동 정리
- 🎨 브랜드: sgisframe → irosafe (1149 occurrences), 도메인·SSL·로고 모두 변경
🎯 마일스톤
Phase 0 — 분석·설계 ✅ 완료
100%14 산출물 finalize. 운영 dump (1.3GB) luna 로딩, ERD v0.4, ENUM 21, ETL 28 모듈, 데드코드 plan, SB3 가이드, 브랜드 자동화 모두 완료.
Phase 1 — DB 신스키마 구축
대기 (운영자 확인 5건)Flyway V1 + JPA 엔티티 (7 도메인) + ETL 실행. 예상 2~3주.
Phase 2 — Spring Boot 3 / Java 17 마이그
javax→jakarta, Security 6, OpenRewrite 자동화. 예상 1~2주.
Phase 3 — 코드 정리·브랜드 이관
패키지 refactor, 데드코드 정밀 정리, 디자인 자산 교체. 예상 1주.
Phase 4 — 신규 레포 이관 + 컷오버
irosafe/shred-backend + shred-android push, 운영 컷오버. 예상 3~5일.
Phase 5 — Swagger·테스트·운영 안정화
SpringDoc, 테스트 커버리지, 모니터링. 1~2개월 안정화.
🏗️ 아키텍처 분석
백엔드 (1472s_shred-system)
- • Spring Boot 2.5.2 / Java 8
- • Thymeleaf 3.0 + JPA + MyBatis
- • Spring Security 5 + JWT (jjwt 0.11.2)
- • Spring Data Envers (audit)
- • JasperReports + iText/lowagie (PDF)
- • ZXing 3.4.1 (barcode), POI 5.0.0 (Excel)
- • lucy-xss-servlet 2.0.0 (Naver, SB3 비호환)
- • sgis-common-frame.jar (사내 프레임워크)
- • 카카오 비즈톡 (biztalk-api.com)
안드로이드 (1472s_shred-android)
- • WebView 기반 hybrid 앱
- • Native 부분 최소
- • 패키지·URL·로고 변경 필요 (Phase 3)
운영 인프라
- • MariaDB 10.6.12 (운영) → luna 10.11.16 (개발 공유)
- • nginx 정적 + reverse proxy
- • Spring Boot war 패키징
🗄️ DB 재설계
30
기존 결함
7
신규 도메인
21
ENUM 확정
28
ETL 모듈
주요 결함 (요약)
| # | 결함 | 조치 |
|---|---|---|
| 1 | varchar 날짜/시간 (DATETIME 미사용) | DATETIME(6) 변환 |
| 2 | FK 제약 0개 | RESTRICT + soft delete |
| 3 | denormalized BRANCH_OFFICE_NAME | 정규화 |
| 4 | ID/SEQ 이중 식별자 | 단일 BIGINT PK + 자연키 UNIQUE |
| 5 | 매직 코드 (C1320000 등) | ENUM 21개 변환 |
| 14 | 오타: BUSSINESS_NUMBER, Aisa/Seoul | 정정 |
| 21 | contract.STATUS 의미 혼재 (C2X/C4X) | approval_status 분리 |
| 23 | work_job.JOB_PAY_TYPE 6-way 카오스 | ENUM + UNSPECIFIED |
전체 결함 목록 + 신스키마 ERD: _docs/03_DB재설계/
🎨 브랜드 이관
매핑 점
1149
sgisframe occurrences
자동화 스크립트
6
scripts/brand_migration/
신규 도메인
shred.irosafe.co.kr
컷오버 시점
| 기존 | 신규 |
|---|---|
com.sgisframe.* | com.irosafe.shred.* |
ILSA_SHREDDING (DB 스키마) | irosafe_shred |
1472 (브랜드명 / 클래스명) | irosafe |
| sgis-common-frame.jar | 호환성 검증 → 재빌드 또는 대체 |
🧹 데드코드 정리
1차 검출 결과 (grep)
- ✅ CustomExpriedStrategy.java — 클래스명 오타, 미참조 → 삭제
- ⚠️ Crm1472.java — 활성 외부 콜백 (AWS 13.124.4.31, 23회/15일) → 보존 + rename
- ⚠️ libs/sgis-common-frame.jar — Spring auto-config 가능성 검증 필요
- ⚠️ SSF_SAMPLE 테이블 → 신스키마 제외
정밀 정리 plan (Phase 1 진입 시)
- • OpenRewrite recipe 7개 (RemoveUnusedImports, RemoveUnusedPrivateMethods, ...)
- • IntelliJ Inspect Code 클래스 단위 unused
- • dependency-analysis plugin 미사용 jar
- • Spring 자동 등록 어노테이션 보호
- • 6 PR 분리 (#4-A·B·C·D·#5·#6)
⬆️ Spring Boot 3 / Java 17 마이그
| 의존성 | 현재 | 목표 | 호환성 |
|---|---|---|---|
| Spring Boot | 2.5.2 | 3.3 LTS | ✅ OpenRewrite |
| Java | 8 | 17 (또는 21) | ✅ toolchain |
| Spring Security | 5 | 6 | ⚠️ WebSecurityConfigurerAdapter 폐기 |
| javax.* | javax | jakarta | ✅ OpenRewrite 자동 |
| MyBatis Spring Boot Starter | 2.x | 3.0+ | ✅ |
| Thymeleaf | 3.0 | 3.1 | ⚠️ #request/#response 폐기 |
| jjwt | 0.11.2 | 0.12.x | ✅ |
| lucy-xss-servlet | 2.0.0 | 대체 필요 | ❌ SB3 비호환 → 자체 필터 |
| Spring Data Envers | 현재 | 6.x | ✅ |
| sgis-common-frame.jar | 사내 | 검증 / 재빌드 | ⚠️ 호환성 분석 |
상세 plan: _docs/05_버전업/00_마이그레이션_플랜.md
🤖 워커 분담
| 워커 | 모델 | 담당 |
|---|---|---|
worker-irosafe_shred | claude-sonnet-4-6 | 종합·결정·문서·dashboard |
codex-irosafe_shred | gpt-5.5-xhigh | 외부 평가·SB3 가이드 |
opencode-irosafe_shred | qwen3-coder-480b | 코드 생성·자동화 스크립트 |
deepseek-irosafe_shred | deepseek-v4-flash | 빠른 코드 분석·검증 |
tui-irosafe_shred | qwen3.5:35b (로컬) | 일상 dispatch·로컬 코딩 |
⏳ 잔여 task
운영자 확인 5건 (Phase 1 진입 전 컨펌 필요)
- Crm1472 콜백 — AWS 13.124.4.31 (서울 EC2) 의 정체? (외부 CRM SaaS / 거래처 / 자체)
- password_hash 알고리즘 — bcrypt? SHA-256?
- console.CRUSHER_STATUS = 'C1100000' 이상치 1건 의미 (공통코드 미정의)
- certificate 미발급 50% 의 진짜 의미 (정상 비율 vs 누락)
- worktype.WORK_TYPE = 'kg' 651건 의미