광고주 캠페인 실시간 관제·정산 증빙 플랫폼
MVP 이후 고도화 방향으로, 실시간 집행 관제 상태바, 예산 소진 알림 규칙, 정부지원사업 증빙용 정산 패키지, 광고주 계정 권한과 감사 로그를 통합한 확장 프로젝트입니다.
프로젝트 개요
MVP 이후 고도화 방향으로, 실시간 집행 관제 상태바, 예산 소진 알림 규칙, 정부지원사업 증빙용 정산 패키지, 광고주 계정 권한과 감사 로그를 통합한 확장 프로젝트입니다. P1 스택 위에 Redis와 큐 기반 비동기 처리를 더해 설계합니다.
작업 범위
- 실시간 집행 관제: 슬림 상태바와 타임라인으로 캠페인 집행 상황을 SSE로 받아 한눈에 관제합니다
- 예산 소진 알림: 집행 속도로 예산 소진 시점을 추정하고 임계 조건을 광고주가 직접 설정합니다
- 정산 증빙 패키지: 정산 기간별 증빙 묶음과 결과보고서를 엑셀·PDF로 내려받습니다
- 권한 관리·감사 로그: 광고주 내부 담당자 역할을 나누고 조회·내보내기 행위를 감사 로그로 남깁니다
주요 업무
- 실시간 집행 관제 화면: SSE 스트림 엔드포인트와 상태바·타임라인·우선 대응 큐 화면을 구현합니다
- 예산 소진 알림 화면: 선형 추세 기반 소진 시점 계산과 규칙 편집 화면, 알림 발송 큐를 구현합니다
- 정산 증빙 패키지 화면: 정산 건 증빙 목록, 보고서 템플릿 렌더링, 일괄 내보내기 큐를 구현합니다
- 권한 관리·감사 로그 화면: 역할 기반 권한, 담당자 초대, 감사 로그 조회 화면을 구현합니다



프로젝트 핵심 과제
SSE 연결이 프록시나 ECS 로드밸런서 유휴 시간 제한에 끊길 수
주기적 하트비트와 재연결 보정 구조 설계가 필요합니다
소진 예측이 집행 초기 데이터 부족 구간에서 흔들릴 수
최소 표본 기준과 예측 보류 표시로 대응합니다
정부지원사업 증빙 형식이 사업마다 달라질 수
템플릿과 항목 정의를 분리하는 구조로 대응합니다
다중 인스턴스에서 Redis 이벤트 중계가 중복될 수
이벤트 ID 기반 중복 제거 방식을 설계합니다
핵심 기능 상세
실시간 집행 관제
슬림 상태바와 타임라인으로 캠페인 집행 상황을 SSE로 받아 한눈에 관제합니다. SSE 스트림 엔드포인트와 상태바·타임라인·우선 대응 큐 화면을 구현합니다.
- NestJS SSE 엔드포인트에서 Redis Pub/Sub 이벤트를 광고주별 채널로 중계
- 연결 끊김 시 마지막 이벤트 ID 기반 재연결과 폴링 폴백 구성
- 상태바 인라인 지표와 타임라인을 이벤트 단위로 부분 갱신
SSE 연결과 폴링 폴백을 하나의 클라이언트 훅으로 묶어 네트워크 상태가 흔들려도 화면이 끊기지 않는 구조를 설계합니다.


예산 소진 알림
집행 속도로 예산 소진 시점을 추정하고 임계 조건을 광고주가 직접 설정합니다. 선형 추세 기반 소진 시점 계산과 규칙 편집 화면, 알림 발송 큐를 구현합니다.
- 최근 집행 구간의 이동 평균으로 소진 예상 시점을 계산하는 서비스 구현
- Bull Queue로 이메일·화면 알림을 비동기 발송하고 재시도 정책 적용
- 규칙 편집 폼에 조건·임계값·수신 채널 유효성 검증 적용
규칙 평가와 발송을 분리한 큐 구조로 알림 로직을 확장하기 쉽게 설계합니다.


정산 증빙 패키지
정산 기간별 증빙 묶음과 결과보고서를 엑셀·PDF로 내려받습니다. 정산 건 증빙 목록, 보고서 템플릿 렌더링, 일괄 내보내기 큐를 구현합니다.
- ExcelJS 템플릿으로 정산 요약·상세 시트를 구성하고 기간 단위로 묶어 생성
- 정부지원사업 사업비 집행 증빙에 필요한 항목 체크리스트 화면 구성
- 내보내기 작업을 큐로 처리하고 완료 시 다운로드 링크를 알림
증빙 항목 정의를 설정 데이터로 분리해 보고서 형식 요구가 달라져도 템플릿만 교체하는 구조를 설계합니다.


권한 관리·감사 로그
광고주 내부 담당자 역할을 나누고 조회·내보내기 행위를 감사 로그로 남깁니다. 역할 기반 권한, 담당자 초대, 감사 로그 조회 화면을 구현합니다.
- 광고주 단위 하위 계정에 조회·내보내기·관리 역할을 분리하는 가드 설계
- 내보내기와 로그인 이벤트를 MongoDB 감사 컬렉션에 적재
- 감사 로그 화면에 기간·행위·담당자 필터 적용
격리 단위를 광고주에서 담당자로 한 단계 세분화해도 기존 공통 인터셉터를 재사용하는 구조를 설계합니다.


프로젝트 진행 단계
이벤트 스트림과 Redis 중계 구조 설계 · 2026.10
집행 이벤트 스키마, Redis Pub/Sub 채널, SSE 재연결 규칙 정의
관제 화면과 우선 대응 큐 개발 · 2026.10
상태바, 타임라인, 소진율 정렬 큐와 폴링 폴백 훅 구현
소진 예측 서비스와 알림 큐 구현 · 2026.10
이동 평균 기반 예측, 규칙 편집 폼, Bull Queue 발송과 재시도 구현
증빙 패키지 생성과 권한·감사 로그 적재 · 2026.10
ExcelJS 템플릿, 증빙 체크리스트, 역할 가드와 MongoDB 감사 컬렉션 구현
개발 결과
기술적 주안점
- SSE 연결과 폴링 폴백을 하나의 클라이언트 훅으로 묶어 네트워크 상태가 흔들려도 화면이 끊기지 않는 구조를 설계합니다
- 규칙 평가와 발송을 분리한 큐 구조로 알림 로직을 확장하기 쉽게 설계합니다
- 증빙 항목 정의를 설정 데이터로 분리해 보고서 형식 요구가 달라져도 템플릿만 교체하는 구조를 설계합니다