개발 slecs

관리자용 소명자료 PDF 생성

목차

관리자 대상 소명자료 생성 기능을 추가했음.

기능 개요

법적/감사 목적으로 특정 사용자나 거래자의 활동 내역을 PDF 형태로 추출하는 기능. 수동으로 화면을 캡처하거나 DB에서 직접 쿼리하는 방식은 오류가 많고 시간도 오래 걸렸음.

구현 내용

구성 요소 역할
관리자 화면 대상자 선택, 기간 설정, PDF 다운로드
PDF 생성 유틸 문서 렌더링 (표/차트/서명란 포함)
관리자 액션 로그 누가 언제 소명자료를 요청했는지 감사 이력

AOP 기반 감사 로그

관리자의 주요 액션은 AOP(Aspect-Oriented Programming)를 활용해 횡단으로 로그를 남겼음. 비즈니스 로직에 로그 코드를 섞지 않아도 됨.

// @Around 어드바이스로 특정 어노테이션이 붙은 메서드 감싸기
// 호출자, 파라미터, 결과를 자동으로 내부 테이블에 저장
// 예외 발생 시에도 로그는 남김

AOP 방식의 장점: 비즈니스 로직이 로그 코드로 오염되지 않음. 나중에 로그 형식이 바뀌어도 비즈니스 로직 코드를 건드릴 필요가 없음.

보안 고려사항

  • 특정 관리자 권한 이상만 접근 가능
  • 생성된 PDF는 서버에 저장하지 않고 스트리밍 다운로드
  • 모든 요청은 감사 이력에 기록 (생성 실패도 기록)

다음

작업 후기

사내 서비스를 만들다 보면 기능 하나가 단순히 화면에 버튼 하나 추가하는 것으로 끝나지 않는다는 걸 계속 체감함. SQL 집계, 상태 머신, 예외 처리, 화면 렌더링, 권한 체크가 모두 엮여 있어서 어느 하나만 빠뜨려도 숫자가 맞지 않거나 특정 사용자에게 이상한 화면이 나타남.

특히 금융/결제 도메인은 숫자 하나가 틀리면 신뢰가 무너질 수 있어서 꼼꼼함이 기본값이어야 함. "대충 맞는 것 같다"로 넘어가면 나중에 반드시 다시 돌아옴.

개발 방식

  • 변경 전 현재 동작 스크린샷이나 수치 메모
  • 수정 후 같은 케이스로 확인
  • 관련 화면이 있으면 숫자 cross-check
  • 커밋 메시지는 "무엇을" 보다 "왜"를 담으려고 노력

작은 커밋을 자주 하면 문제가 생겼을 때 어느 변경에서 깨졌는지 찾기 훨씬 쉬움. 그래서 논리적으로 독립된 단위로 커밋을 쪼개는 습관을 유지 중.

다음

댓글 0

첫 댓글 달아줘.