Files
GW-renewal/TASK_LIST.md
JAE SIK CHO f8427ee1d0 share job
2026-04-09 11:12:12 +09:00

14 KiB

그룹웨어 마이그레이션 작업 목록

범례: 완료 | 🔄 진행중 | 미착수 원칙: 각 모듈은 백엔드(SQL → Mapper → Service → Controller) → 프론트엔드(API → Types → Page) 순서로 진행


0. 프로젝트 기반 구성

# 작업 상태 비고
0-1 NEW 폴더 구조 생성 backend/, frontend/
0-2 MIGRATION_GUIDE.md 작성 DB 전략, 기술 스택 확정
0-3 Spring Boot 프로젝트 초기 세팅 Gradle, JDK 21, Spring Boot 3.4.x
0-4 Next.js 프로젝트 초기 세팅 pnpm, TypeScript, Tailwind
0-5 DB 설정 (Oracle → MS SQL Server 수정) mssql-jdbc, application-mssql.yml
0-6 docker-compose.yml 초안 작성 Nginx, Backend, Frontend, Redis, RabbitMQ
0-7 Nginx 설정 파일 작성 nginx/nginx.conf (API 프록시 + 파일 서빙)
0-8 Dockerfile 최종 검증 (backend/frontend) backend/Dockerfile, frontend/Dockerfile 존재
0-9 GitHub 레포지토리 연결 .gitignore, 초기 커밋
0-10 Jenkins CI/CD 파이프라인 작성 Jenkinsfile (parallel build + deploy)

1. 공통 기반 (Common)

1-1. 백엔드 공통

# 작업 상태 대상 파일 (원본)
1-1-1 JWT 유틸 (corpNo 포함) JwtUtil.java
1-1-2 JWT 인증 필터 JwtAuthenticationFilter.java
1-1-3 Spring Security 설정 SecurityConfig.java
1-1-4 Redis 설정 RedisConfig.java
1-1-5 MyBatis 설정 (DatabaseId 포함) MyBatisConfig.java
1-1-6 공통 응답 포맷 (ApiResponse) ApiResponse.java
1-1-7 공통 예외 처리 GlobalExceptionHandler.java, BizException.java
1-1-8 CurrentUser 유틸 + SecurityUtil CurrentUser.java, SecurityUtil.java
1-1-9 시퀀스 서비스 SequenceService.java (SX_CO0060)
1-1-10 파일 첨부 서비스 AttachService.java, AttachController.java
1-1-11 코드 조회 서비스 (공통코드 캐시) CodeService.java (@Cacheable Redis, TTL 6h)
1-1-12 이메일 서비스 EmailService.groovy → EmailService.java
1-1-13 공통 SQL XML 이식 common_sql.xml (시퀀스)
1-1-14 attach SQL XML 이식 attach_sql.xml (MSSQL + MariaDB)
1-1-15 code SQL XML 이식 code_sql.xml (getCodeList, searchUser, getWorkCdList)

1-2. 프론트엔드 공통

# 작업 상태 비고
1-2-1 Axios 클라이언트 + 401 자동 갱신 lib/api/client.ts
1-2-2 Zustand 인증 스토어 lib/store/authStore.ts
1-2-3 TanStack Query Provider components/common/Providers.tsx
1-2-4 JWT 미들웨어 (라우트 보호) middleware.ts
1-2-5 공통 레이아웃 (Sidebar + Header) components/layout/
1-2-6 공통 타입 정의 types/common.ts, types/auth.ts
1-2-7 공통 UI 컴포넌트 (Modal, Pagination, Table) Modal.tsx, Pagination.tsx 완성
1-2-8 파일 첨부 컴포넌트 components/common/FileUpload.tsx
1-2-9 Toast 알림 컴포넌트 Toast.tsx (ToastProvider + useToast hook)
1-2-10 날짜 선택 컴포넌트 components/common/DatePicker.tsx

2. 인증 (Auth / Index)

원본: IndexController, SecurityFilter, AuthService, SecurityService, UserService

2-1. 백엔드

# 작업 상태 비고
2-1-1 user_sql.xml 이식 getUserInfo, getUserInfoWithPwd
2-1-2 security_sql.xml 이식 getUserRoleList
2-1-3 menu_sql.xml 이식 getMenuList, getControllerRoleList
2-1-4 UserMapper / SecurityMapper / MenuMapper
2-1-5 PasswordUtil (SHA-256 + Base64) 기존 DB 비밀번호 호환
2-1-6 AuthService (로그인/로그아웃/토큰재발급) Redis RefreshToken
2-1-7 CustomUserDetailsService
2-1-8 AuthController (login/logout/refresh/me)

2-2. 프론트엔드

# 작업 상태 비고
2-2-1 authApi (login/logout/refresh) lib/api/auth.ts
2-2-2 로그인 페이지 + LoginForm app/login/page.tsx
2-2-3 권한(MENU_AUTH_CD) 선택 드롭다운 기존 시스템 동일
2-2-4 로그아웃 처리 (Header)
2-2-5 아이디 저장 기능 localStorage gw_save_id/gw_saved_login_id

3. 환경설정 (Envset)

3-1. 직원정보 (Envset0010 / SX_GW0010)

# 작업 상태 비고
3-1-1 envset0010_sql.xml 이식 페이징 포함
3-1-2 UserManageMapper
3-1-3 UserManageService 시퀀스 ID 생성, PW 암호화
3-1-4 UserManageController CRUD REST API
3-1-5 직원 목록 페이지 마스터-디테일 구조
3-1-6 직원 등록/수정 폼
3-1-7 직원 사진 업로드 FileUpload 컴포넌트 연동 (users/page.tsx)
3-1-8 근무코드 관리 (Envset0040, SX_CO0070) envset0040_sql.xml + WorkCdMapper/Service/Controller + workcd/page.tsx

3-2. 공통코드 관리 (Envset0020/0030 / SX_CO0030, SX_CO0040)

# 작업 상태 비고
3-2-1 envset0020_sql.xml 이식
3-2-2 CodeManageMapper / Service / Controller 배치 저장 (I/U/D)
3-2-3 코드 관리 페이지 코드인덱스 + 코드

3-3. 메뉴/권한 관리 (Envset0050 / SX_CO0080, SX_CO0090, SX_GW0130)

# 작업 상태 비고
3-3-1 envset0050_sql.xml 이식 MERGE INTO 포함
3-3-2 MenuManageMapper / Service / Controller
3-3-3 메뉴 관리 페이지
3-3-4 권한별 메뉴 설정 페이지 체크박스 토글
3-3-5 사용자 권한 관리 페이지 사용자 autocomplete

4. 게시판 (Board)

원본: Board0010Controller, Board_0001~0008Controller, board0010_sql.xml 8개 게시판 유형을 하나의 Controller로 통합 (boardType 파라미터로 구분)

4-1. 백엔드

# 작업 상태 비고
4-1-1 board0010_sql.xml 분석 및 이식 MSSQL + MariaDB 이중 작성
4-1-2 BoardMapper 인터페이스
4-1-3 BoardService 목록/상세/등록/수정/삭제/조회수/댓글
4-1-4 BoardController /api/board/{boardType} REST
4-1-5 파일 첨부 연동 AttachService 연동 완료

4-2. 프론트엔드

# 작업 상태 비고
4-2-1 boardApi 정의 lib/api/board.ts
4-2-2 게시판 목록 페이지 app/(main)/board/[boardType]/page.tsx
4-2-3 게시물 상세 페이지 댓글 포함
4-2-4 게시물 등록/수정 페이지 PostForm 컴포넌트
4-2-5 파일 첨부 UI FileUpload 컴포넌트 연동

5. 결재 (TAM)

원본: Tam0010~0040Controller, tam0010~0040_sql.xml, ApvdocService, apvdoc_sql.xml 가장 복잡한 모듈 - 워크플로우 로직 포함

5-1. 백엔드

# 작업 상태 비고
5-1-1 tam_sql.xml 분석 및 이식 (0010~0040 통합) MSSQL + MariaDB 이중 작성
5-1-2 apvdoc_sql.xml 분석 및 이식 결재 문서 공통, DECLARE @var → subquery
5-1-3 TamMapper / ApvdocMapper
5-1-4 ApvdocService (워크플로우 로직) 결재선, 승인/반려, 상태 변경
5-1-5 TamService TAM0010~0040 서비스
5-1-6 TamController /api/tam/ REST

5-2. 프론트엔드

# 작업 상태 비고
5-2-1 tamApi 정의 lib/api/tam.ts
5-2-2 연차 관리 페이지 (TAM0010) 인라인 편집
5-2-3 결재 신청 목록 페이지 (TAM0020) 상태/종류 필터
5-2-4 결재 신청 등록/상세 페이지 ApvreqForm + ApproverSection 컴포넌트
5-2-5 결재 처리 목록/상세 페이지 (TAM0030) 승인/반려 처리
5-2-6 근태 현황 페이지 (TAM0040) 종류별 집계

6. 근무계획 (Wplan)

원본: Wplan0010~0030Controller, wplan0010~0030_sql.xml

6-1. 백엔드

# 작업 상태 비고
6-1-1 wplan_sql.xml 분석 및 이식 (0010~0030 통합) MSSQL + MariaDB 이중 작성
6-1-2 WplanMapper / Service / Controller /api/wplan/

6-2. 프론트엔드

# 작업 상태 비고
6-2-1 wplanApi 정의 lib/api/wplan.ts
6-2-2 근무계획 관리 페이지 (Wplan0010) 월별 피벗 테이블 + 인라인 편집
6-2-3 나의근무계획 페이지 (Wplan0020) 월 달력 뷰
6-2-4 전체근무계획 페이지 (Wplan0030) 근무코드 필터

7. 근무시간 (Wtime)

원본: Wtime0010Controller, Wtime0030Controller, wtime0010_sql.xml, wtime0030_sql.xml, work_sql.xml

7-1. 백엔드

# 작업 상태 비고
7-1-1 wtime_sql.xml 분석 및 이식 (0010+0030 통합) MSSQL + MariaDB 이중 작성
7-1-2 WtimeMapper / Service / Controller /api/wtime/
7-1-3 WorkService (근무시간 재계산 로직) 추후 필요 시 추가

7-2. 프론트엔드

# 작업 상태 비고
7-2-1 wtimeApi 정의 lib/api/wtime.ts
7-2-2 개인별 근무시간 페이지 (Wtime0010) 날짜 범위 검색
7-2-3 월별 근무시간 집계 페이지 (Wtime0030) 개인별 합산

8. FedEx 배송 (Fedex)

원본: Fedex0010Controller, fedex0010_sql.xml

8-1. 백엔드

# 작업 상태 비고
8-1-1 fedex0010_sql.xml 분석 및 이식 MSSQL + MariaDB, errorMng 테이블
8-1-2 FedexMapper / Service / Controller /api/fedex/

8-2. 프론트엔드

# 작업 상태 비고
8-2-1 fedexApi 정의 lib/api/fedex.ts
8-2-2 FedEx 수입정정 목록 페이지 fedex/0010/page.tsx
8-2-3 FedEx 수입정정 등록/상세 페이지 write + [sq] 페이지

9. 메인/대시보드 (Main)

원본: Main0010Controller, Main0020Controller, main0010_sql.xml, main0020_sql.xml

9-1. 백엔드

# 작업 상태 비고
9-1-1 main0010_sql.xml 분석 및 이식 main_sql.xml (직접 SQL, stored proc 불사용)
9-1-2 main0020_sql.xml 분석 및 이식 main_sql.xml 통합
9-1-3 MainMapper / Service / Controller /api/main/dashboard

9-2. 프론트엔드

# 작업 상태 비고
9-2-1 mainApi 정의 lib/api/main.ts
9-2-2 대시보드 페이지 결재 대기 배너, 공지/게시판/근무 위젯
9-2-3 메인 레이아웃 완성 Sidebar 동적 메뉴

10. 공통 기능 (파일첨부 / 이메일)

10-1. 파일 첨부 (AttachService)

원본: AttachController, AttachService, attach_sql.xml 모든 모듈(게시판, 결재, 직원사진)에서 사용

# 작업 상태 비고
10-1-1 attach_sql.xml 분석 및 이식 attach_sql.xml (MSSQL + MariaDB)
10-1-2 AttachMapper AttachMapper.java
10-1-3 AttachService (업로드/다운로드/삭제) 로컬 저장소, 확장자 검증
10-1-4 AttachController /api/attach/ Multipart + download
10-1-5 FileUpload 컴포넌트 FileUpload.tsx (드래그앤드롭)
10-1-6 파일 다운로드 처리 Content-Disposition URLEncoder

10-2. 이메일 서비스

# 작업 상태 비고
10-2-1 EmailService 이식 Spring Mail (SMTP)
10-2-2 결재 알림 이메일 연동 TAM 모듈 완성 후

11. 인프라 및 배포

# 작업 상태 비고
11-1 Nginx 설정 (nginx.conf) API 프록시 + 파일 서빙
11-2 docker-compose.yml 최종 완성 env_file, healthcheck, volumes
11-3 .env 파일 구성 DB, JWT, Redis, RabbitMQ
11-4 Jenkins Jenkinsfile 작성 parallel build + deploy
11-5 Spring Boot actuator 헬스체크 /actuator/health (SecurityConfig 허용)
11-6 로그 설정 (logback-spring.xml) 프로파일별 콘솔/파일 분리

12. DB 마이그레이션 준비 (SQL Server → MariaDB)

# 작업 상태 비고
12-1 전체 SQL XML MariaDB 버전 작성 전체 17개 XML 파일 완료
12-2 GETDATE() → NOW() 변환 모든 DML 문 MariaDB 버전에 반영
12-3 ISNULL() → IFNULL() 변환 MariaDB databaseId 버전에 반영
12-4 MERGE INTO → INSERT ON DUPLICATE KEY common_sql, envset0050_sql 반영
12-5 SELECT TOP N → LIMIT N 변환 MariaDB 버전에 LIMIT 적용
12-6 OFFSET...FETCH NEXT → LIMIT...OFFSET 변환 페이징 쿼리 전체 반영
12-7 데이터 마이그레이션 스크립트 작성 SQL Server → MariaDB
12-8 application-mariadb.yml 완성
12-9 MariaDB 환경에서 전체 기능 검증

13. 검증 및 완료

# 작업 상태 비고
13-1 API 전체 목록 문서화 (Swagger) springdoc-openapi
13-2 기존 시스템 대비 기능 동등성 검증 모듈별 체크리스트
13-3 성능 테스트 (페이징, 대용량 조회)
13-4 보안 점검 (SQL Injection, XSS, CSRF)
13-5 병행 운영 계획 수립 기존 Grails 유지 기간 결정
13-6 운영 전환 (Cut-over)

진행 현황 요약

전체 작업 수: 약 130개
완료: 약 40개 (31%)
진행중: 0개
미착수: 약 90개 (69%)

권장 다음 작업 순서

  1. 1-1-10 파일 첨부 서비스 → 게시판, 결재, 직원사진 모두 필요
  2. 4 게시판 → 가장 단순한 CRUD, 패턴 확립용
  3. 5 결재 → 핵심 업무 기능 (복잡도 높음)
  4. 6, 7 근무계획/근무시간
  5. 8 FedEx
  6. 9 대시보드
  7. 11 인프라
  8. 12 MariaDB 전환 준비