1. 프로젝트 개요
- 프로젝트명: HRBANK
- 목적: 기업의 인사관리 업무를 보다 체계적이고 효율적으로 지원하기 위한 디지털 인사관리 시스템을 개발합니다.
- 핵심 기능
- 📊 대시보드 : 직원 수 통계를 시각화하여 조직 변동 현황을 한눈에 파악
- 🏢 부서 관리 : 부서 등록, 조회, 수정, 삭제 기능 제공
- 👨💼 직원 관리 : 직원 정보의 등록, 조회, 수정, 삭제 기능 제공
- 📝 직원 정보 수정 이력 관리 : 직원 정보 변경 시점과 변경 내용을 추적 및 기록
- 💾 데이터 백업 : 정기적인 직원 데이터 백업 및 백업 이력 관리 기능
- 📁 파일 관리 : 파일 저장 및 메타데이터 관리 기능
2. 담당한 작업
- 담당한 역할
- 주요 기능: 직원 정보 수정 이력 관리 (등록, 조회, 상세 조회, 정렬)
- 개발 외 역할: 문서 정리 및 API 명세 개선
- 기여한 부분
- 직원 수정 이력 등록 API 구현 (사번 기반 대상 탐색, 변경 필드 자동 감지)
- 커서 기반 이력 목록 조회 기능 구현 (정렬 및 필터 포함)
- 이력 상세 조회 기능 구현 (단일 이력 기준 변경 필드 목록 응답)
- QueryDSL 기반 조건 필터 적용 (유형, 메모, IP, 시간 등)
- 테스트 코드 작성 및 버그 디버깅 (조건 필터 누락, 응답 누락 등 수정)
- DTO 설계 및 MapStruct 매핑 적용
3. 기술적 성과
- 직원 정보 변경 사항을 필드 단위로 비교하여 자동 감지 후 이력 저장
- QueryDSL을 활용한 조건 기반 이력 조회 구현 (부분 일치 + 범위 필터 지원)
- 커서 기반 페이지네이션 적용으로 대용량 데이터 조회 효율성 확보
- DTO와 Entity 간 매핑을 MapStruct로 구성해 생산성과 유지보수성 향상
- 단위 테스트를 통해 주요 기능 안정성 확보
4. 문제점 및 해결 과정
1) 변경 이력 조건 조회 시 QueryDSL where 조건 누락
- 문제
- 조건 필터 중 일부가 누락되어 예상보다 많은 이력이 조회되는 현상 발생
- 원인 분석
- QueryDSL 조건 조합 시 null 체크가 빠져 BooleanBuilder가 적용되지 않음