package itn.com.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 개인정보 처리 이력 로그 기록을 위한 메서드 어노테이션. * *

개인정보 조회, 수정, 삭제, 다운로드 등이 발생하는 컨트롤러 메서드에 선언한다. * AOP가 메서드 실행 후 이 어노테이션의 설정값과 요청 정보를 읽어 * 개인정보 처리 이력 로그를 저장한다.

* *
 * {@code
 * @PersonalLog(
 *     action = "삭제",
 *     description = "기업회원 상세정보",
 *     target = "#{object}.{method}" or "#{object}
 *     search = "#{object}.{method}" or "#{object}
 * )
 * }
 * 
*/ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface PersonalLog { /** * 개인정보 처리 행위. * *

예: 조회, 수정, 삭제, 다운로드

* * @return 개인정보 처리 행위명 */ String action(); /** * 개인정보를 처리한 화면 또는 업무의 설명. * *

예: 회원 상세정보, 기업회원 목록, 회원 엑셀 다운로드

* * @return 처리 화면·업무 설명 */ String description(); /** * 개인정보 처리 대상. * *

단건 처리 시 대상 회원 ID 등을 기록한다. * SpEL 표현식을 사용할 수 있으며, 메서드 첫 번째 인자의 회원 ID는 * {@code "#{object}.{method}"}처럼 지정한다.

* * @return 처리 대상 정보, 미지정 시 빈 문자열 */ String target() default ""; /** * 목록 조회 또는 다운로드 시 사용한 검색 조건. * *

검색어, 기간, 조회 건수 등 대상 정보를 보완하기 위한 용도다.

* * @return 검색 조건 정보, 미지정 시 빈 문자열 */ String search() default ""; }