관리자용 소명자료 PDF 생성
목차
관리자 대상 소명자료 생성 기능을 추가했음.
기능 개요
법적/감사 목적으로 특정 사용자나 거래자의 활동 내역을 PDF 형태로 추출하는 기능. 수동으로 화면을 캡처하거나 DB에서 직접 쿼리하는 방식은 오류가 많고 시간도 오래 걸렸음.
구현 내용
| 구성 요소 | 역할 |
|---|---|
| 관리자 화면 | 대상자 선택, 기간 설정, PDF 다운로드 |
| PDF 생성 유틸 | 문서 렌더링 (표/차트/서명란 포함) |
| 관리자 액션 로그 | 누가 언제 소명자료를 요청했는지 감사 이력 |
AOP 기반 감사 로그
관리자의 주요 액션은 AOP(Aspect-Oriented Programming)를 활용해 횡단으로 로그를 남겼음. 비즈니스 로직에 로그 코드를 섞지 않아도 됨.
// @Around 어드바이스로 특정 어노테이션이 붙은 메서드 감싸기
// 호출자, 파라미터, 결과를 자동으로 내부 테이블에 저장
// 예외 발생 시에도 로그는 남김
AOP 방식의 장점: 비즈니스 로직이 로그 코드로 오염되지 않음. 나중에 로그 형식이 바뀌어도 비즈니스 로직 코드를 건드릴 필요가 없음.
보안 고려사항
- 특정 관리자 권한 이상만 접근 가능
- 생성된 PDF는 서버에 저장하지 않고 스트리밍 다운로드
- 모든 요청은 감사 이력에 기록 (생성 실패도 기록)
다음
작업 후기
사내 서비스를 만들다 보면 기능 하나가 단순히 화면에 버튼 하나 추가하는 것으로 끝나지 않는다는 걸 계속 체감함. SQL 집계, 상태 머신, 예외 처리, 화면 렌더링, 권한 체크가 모두 엮여 있어서 어느 하나만 빠뜨려도 숫자가 맞지 않거나 특정 사용자에게 이상한 화면이 나타남.
특히 금융/결제 도메인은 숫자 하나가 틀리면 신뢰가 무너질 수 있어서 꼼꼼함이 기본값이어야 함. "대충 맞는 것 같다"로 넘어가면 나중에 반드시 다시 돌아옴.
개발 방식
- 변경 전 현재 동작 스크린샷이나 수치 메모
- 수정 후 같은 케이스로 확인
- 관련 화면이 있으면 숫자 cross-check
- 커밋 메시지는 "무엇을" 보다 "왜"를 담으려고 노력
작은 커밋을 자주 하면 문제가 생겼을 때 어느 변경에서 깨졌는지 찾기 훨씬 쉬움. 그래서 논리적으로 독립된 단위로 커밋을 쪼개는 습관을 유지 중.
다음
댓글 0
첫 댓글 달아줘.