해당 게시글은 개인 프로젝트인 "광고 관리 플랫폼 대행사 센터 제작" 중 #34 "에이전트 그룹 관리 기능 구현 + 뷰 적용" 이슈를 다루고 있습니다.
1. 에이전트 관리 기능 테스트 정의
(1) 비즈니스 로직 테스트 정의 및 구현 (service)
에이전트 관리 기능에 대한 비즈니스 로직 관련 테스트를 정의하고 기능을 추가
정렬 기능 (이름순 / 생성일자 순)
페이지네이션 기능
에이전트 그룹 리스트 조회
에이전트 그룹 생성
에이전트 그룹 수정 (이름)
에이전트 그룹 삭제
에이전트 그룹 상세 정보 조회 (이름, 프로필, 소속된 에이전트)
에이전트 그룹 상세 정보 - 소속된 에이전트 조회 (에이전트 관리 상세 페이지로 리다이렉션)
에이전트 그룹 상세 정보 - 에이전트 생성
에이전트 그룹 내 소속된 에이전트 수 카운트
(2) 결과
수정 기능은 기존에 배웠던 강의에서 다루지 않는 '소속 그룹' 변경 건이라 추가 레퍼런스 조사가 필요할 듯 하여 보류하였음
삭제 기능의 경우 실제 삭제가 아닌 '삭제된 상태'로 변경하는 내용이라 마찬가지로 추가 레퍼런스 조사가 필요할 듯 하여 보류하였음
2. 컨트롤러 기능 추가 및 뷰 구현
(1) 컨트롤러 테스트 정의 (controller)
수정, 삭제 기능을 추가하려 하였으나 위의 사유로 일단 보류
(2) 페이지 제작 (Thymeleaf)
Thymeleaf Decoupled Logic으로 각 페이지 기능을 구현하였음
구현하지 않았던 상세 페이지 추가 완료
에이전트 관리 페이지 index
에이전트 관리 상세 페이지
에이전트 그룹 관리 생성 / 수정 폼 (추후 폼을 새로 띄우는 방식으로 수정)
css 및 디자인 작업은 모든 페이지 기능 구현 완료 후 일괄 수정 예정
3. 미흡한 점, 개선이 필요한 내용
(1) 기능 구현 간에 확인된 내용
삭제 기능의 경우, 단순히 삭제 처리를 하는 것이 아니라 데이터 보존 및 다른 비즈니스 로직 처리 시의 이슈로 에이전트 객체를 '삭제됨' 상태로 수정을 하는 것으로 처리해야 하는데 이 역시 레퍼런스를 찾아봐야 할 것으로 보임
에이전트 그룹의 PK가 String 타입인데 생성 / 수정 시 ID를 save 하려고 하면 IdentifierGenerationException 이 발생, id를 직접 식별자 할당해야하는 이슈가 발생하여
에이전트 그룹 id를 long 타입으로 바꾸고 자동 할당으로 바꿔야 할 것으로 보임.
일단 기능 먼저 구현하였고 전반적인 기능 추가가 이뤄지면 리팩토링 진행 예정.