irosafe_shred

1472 → irosafe 브랜드 이관 + Spring Boot 3 / Java 17 마이그레이션

최근 업데이트
2026-05-08
Phase 0
분석·설계
100% 완료
Phase 1
DB 신스키마
대기 (운영자 확인 5건)
Phase 2
SB3 / Java 17
가이드 작성 완료
Phase 3
코드 정리·브랜드
자동화 스크립트 완료
Phase 4
신규 레포 이관
대기
Phase 5
Swagger·테스트
대기

📋 프로젝트 개요

기존 브랜드
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 모듈

주요 결함 (요약)

#결함조치
1varchar 날짜/시간 (DATETIME 미사용)DATETIME(6) 변환
2FK 제약 0개RESTRICT + soft delete
3denormalized BRANCH_OFFICE_NAME정규화
4ID/SEQ 이중 식별자단일 BIGINT PK + 자연키 UNIQUE
5매직 코드 (C1320000 등)ENUM 21개 변환
14오타: BUSSINESS_NUMBER, Aisa/Seoul정정
21contract.STATUS 의미 혼재 (C2X/C4X)approval_status 분리
23work_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 Boot2.5.23.3 LTS✅ OpenRewrite
Java817 (또는 21)✅ toolchain
Spring Security56⚠️ WebSecurityConfigurerAdapter 폐기
javax.*javaxjakarta✅ OpenRewrite 자동
MyBatis Spring Boot Starter2.x3.0+
Thymeleaf3.03.1⚠️ #request/#response 폐기
jjwt0.11.20.12.x
lucy-xss-servlet2.0.0대체 필요❌ SB3 비호환 → 자체 필터
Spring Data Envers현재6.x
sgis-common-frame.jar사내검증 / 재빌드⚠️ 호환성 분석

상세 plan: _docs/05_버전업/00_마이그레이션_플랜.md

🤖 워커 분담

워커모델담당
worker-irosafe_shredclaude-sonnet-4-6종합·결정·문서·dashboard
codex-irosafe_shredgpt-5.5-xhigh외부 평가·SB3 가이드
opencode-irosafe_shredqwen3-coder-480b코드 생성·자동화 스크립트
deepseek-irosafe_shreddeepseek-v4-flash빠른 코드 분석·검증
tui-irosafe_shredqwen3.5:35b (로컬)일상 dispatch·로컬 코딩

⏳ 잔여 task

운영자 확인 5건 (Phase 1 진입 전 컨펌 필요)

  1. Crm1472 콜백 — AWS 13.124.4.31 (서울 EC2) 의 정체? (외부 CRM SaaS / 거래처 / 자체)
  2. password_hash 알고리즘 — bcrypt? SHA-256?
  3. console.CRUSHER_STATUS = 'C1100000' 이상치 1건 의미 (공통코드 미정의)
  4. certificate 미발급 50% 의 진짜 의미 (정상 비율 vs 누락)
  5. worktype.WORK_TYPE = 'kg' 651건 의미