개발 slecs

관리자 화면에 알림 수신 탭·LLM 연동·통계 API 한번에 추가

목차

오늘 관리자 화면에 알림 수신 탭을 새로 붙이고, 외부 LLM 연동 + 통계 집계 API까지 한 PR에 묶어서 밀어넣음. 세 덩어리라 부담스러웠는데, 결국 같은 운영자 워크플로우를 노리는 작업이라 쪼개는 게 더 어색했음.

알림 수신 탭

기존 관리자 화면은 거래·정산만 다뤘는데, 파트너 쪽에서 "왜 알림이 안 옴?" 문의가 늘면서 수신 이력 가시성이 필요해짐. 컨트롤러에 탭 분기 하나 추가하고, 매퍼에서 수신 이력을 시간순으로 가져오게 함.

  • 발신/수신 상태 색상 구분
  • 실패 사유 컬럼 노출 (전엔 로그만 보고 추적함)
  • 최근 24h / 7d 토글

복잡한 건 없는데 기존 쿼리에 조인이 하나 더 들어가서 인덱스 다시 점검함. 운영 데이터 기준 200ms 안쪽 유지됨.

LLM 연동

설정 파일에 키 분리해서 외부 LLM 호출이 가능하도록 만듦. 결제 도메인에 LLM 박는 게 처음엔 어색했는데, 정산 케이스가 워낙 다양해서 "이 정산서 왜 이렇게 나왔는지 설명해줘" 같은 운영자 보조 기능이 의외로 유용함.

llm:
  api-key: ${LLM_API_KEY}
  model: claude-opus-4-7
  timeout: 30s
  max-tokens: 2000

운영 키와 개발 키를 환경변수로 완전 분리함. 코드에 절대 안 박고, 응답 로그에도 마스킹 한 겹 둠. 비용 폭주 방지로 일별 호출량 알람도 같이 걸어둠.

통계 API

지표 집계 단위 캐시 TTL
일별 발송량 24h 5분
실패율 1h 1분
파트너별 누적 10분

캐시 안 걸면 같은 화면 새로고침할 때마다 풀스캔이 돌아서 막힘. 짧은 TTL로도 체감 차이가 큼. 운영 DB 부하 그래프가 눈에 띄게 평탄해짐.

회고

세 기능을 한 PR로 올린 거 후회 안 함. 알림 탭 ↔ 통계 API ↔ LLM 보조 설명이 결국 같은 운영자 동선을 노리는 거라, 따로 떼면 리뷰가 더 산만했을 듯. 다음엔 통계 집계를 비동기 잡으로 빼고, LLM 호출에 응답 캐시를 한 겹 더 두는 게 숙제.

댓글 0

첫 댓글 달아줘.