← 서비스로 돌아가기
ADMIN GUIDE

NewsLetterPlatform 관리자 가이드

뉴스레터 발송, 구독자 관리, 스케줄 모니터링을 위한 관리자 안내

1. 관리 기능 개요

NewsLetterPlatform 관리자 대시보드는 멀티테넌트 뉴스레터 서비스의 전체 운영 현황을 한눈에 파악하고, 구독자 관리, 수동 발송, 발송 이력 조회 등 핵심 관리 기능을 제공합니다.

대상 사용자

서비스 관리자 운영 담당자

2. 주요 기능

📊

대시보드

전체 테넌트 구독자 수, 오늘 발송 현황, 성공률, 스케줄러 상태를 한 화면에서 확인합니다.

👥

구독자 관리

테넌트별 구독자 목록 조회, 검색, 추가, 활성/비활성 전환, CSV 내보내기를 지원합니다.

수동 발송

뉴스레터 미리보기, 테스트 발송, 수동 데이터 수집 및 일괄 발송을 실행합니다.

📈

발송 이력

날짜, 상태, 테넌트별 필터링과 7일 요약 차트로 발송 결과를 추적합니다.

스케줄러 모니터링

일일/주간/월간 뉴스레터 자동 발송 스케줄 설정과 동작 상태를 확인합니다.

🔍

통합 조회

전체 테넌트의 발송 이력을 하나의 화면에서 통합 조회하고 필터링합니다.

3. 권한 및 인증

  1. 관리자 로그인
    /admin/login 페이지에서 관리자 비밀번호 또는 Google Sign-In으로 로그인합니다.
  2. 세션 유지
    로그인 후 세션 쿠키가 발급됩니다. 브라우저를 닫거나 로그아웃하면 세션이 종료됩니다.
  3. 관리 페이지 접근
    모든 /admin/* 경로는 인증이 필요합니다. 미인증 시 자동으로 로그인 페이지로 이동합니다.

4. 주요 화면 안내

대시보드 (/admin)

전체 테넌트의 현황을 요약합니다. 테넌트별 구독자 수, 오늘 발송 건수, 성공률, 최근 오류 목록을 확인할 수 있습니다.

구독자 관리 (/admin/{tenant}/subscribers)

테넌트별 구독자 목록을 조회합니다. 이메일/이름 검색, 활성/전체 필터, 신규 구독자 추가, 활성/비활성 토글, CSV 내보내기 기능을 제공합니다.

수동 발송 (/admin/{tenant}/send)

일일/주간/월간 뉴스레터 미리보기와 테스트 발송을 실행합니다. 데이터 수집(Collect)과 전체 발송(Send) 버튼으로 수동 운영이 가능합니다.

발송 이력 (/admin/{tenant}/history)

테넌트별 발송 결과를 날짜, 성공/실패 상태로 필터링합니다. 최근 7일 요약 테이블이 상단에 표시됩니다.

통합 발송 이력 (/admin/history)

전체 테넌트의 발송 이력을 하나의 화면에서 통합 조회합니다. 테넌트 드롭다운으로 필터링할 수 있습니다.

스케줄러 (/admin/scheduler)

일일, 주간, 월간 뉴스레터 발송 스케줄 구성과 현재 동작 상태를 모니터링합니다.

5. 테넌트별 데이터 수집

AllergyInsight - 뉴스 수집

AllergyInsight 일일 뉴스레터의 [오늘의 주요 뉴스] 섹션은 AllergyInsight Backend의 공개 API를 통해 최신 뉴스만 수집합니다.

수집 API

GET /api/public/analytics/news/recent?days=1&max_age_days=2&limit=10

항목 설명
API 엔드포인트 /api/public/analytics/news/recent (공개, 인증 불필요)
필터링 LLM 분석 완료(is_processed) + 관련성 확인(is_relevant) 뉴스만 포함
신선도 max_age_days=2 — 발행일 기준 2일 이내 뉴스만 수집
정렬 발행일 최신순(published_at DESC), 중요도는 2차 정렬
최대 건수 10건 (템플릿에서 상위 3건 표시)
뉴스 없는 날 "오늘은 새로운 알러지 관련 뉴스가 없습니다" 안내 표시
논문 및 통계

논문은 /api/papers(공개 API)에서 수집합니다. 뉴스 통계는 /api/admin/news/stats(인증 필요)에서 수집하며, 통계 API 실패 시에도 뉴스와 논문 수집 결과는 정상 발송됩니다.

EduFit - 뉴스 수집

EduFit 일일 뉴스레터는 EduFit Backend API에서 사전 렌더링된 HTML을 직접 수신하여 발송합니다.

6. 주의사항

참고

수동 발송(Send) 실행 시 현재 활성 구독자 전원에게 뉴스레터가 발송됩니다. 테스트 발송으로 먼저 내용을 확인한 후 전체 발송하는 것을 권장합니다.

주의

관리자 비밀번호가 유출되지 않도록 주의하세요. 공용 PC에서 작업 후에는 반드시 로그아웃하세요.

7. 자주 묻는 질문

Q. 관리자 비밀번호를 변경하려면?
서버의 .env 파일에서 ADMIN_PASSWORD 값을 변경한 후 서비스를 재시작합니다.
Q. 스케줄러가 동작하지 않는 것 같습니다
대시보드의 Health 상태를 확인하세요. Unhealthy 상태인 경우 scheduler 컨테이너 로그를 확인합니다. Docker 환경에서는 docker logs newsletter-scheduler로 확인할 수 있습니다.
Q. 구독자를 일괄 등록할 수 있나요?
현재 웹 UI에서는 개별 추가만 지원합니다. 대량 등록이 필요한 경우 DB에 직접 INSERT하거나 API를 활용할 수 있습니다.
Q. 발송 실패한 메일을 재발송하려면?
수동 발송(/admin/{tenant}/send) 페이지에서 Send 버튼을 클릭하면 활성 구독자 전원에게 다시 발송됩니다. 특정 구독자에게만 재발송하려면 테스트 발송 기능을 활용하세요.
Q. 통합 발송 이력에서 특정 테넌트만 보려면?
통합 발송 이력 페이지(/admin/history)에서 테넌트 드롭다운을 선택한 후 Filter 버튼을 클릭합니다.
Q. AllergyInsight 뉴스레터에 같은 뉴스가 반복됩니다
일일 뉴스 수집은 AllergyInsight Backend의 /api/public/analytics/news/recent API를 사용하며, 발행일 기준 2일 이내의 분석 완료된 뉴스만 수집합니다. 반복이 계속되면 Backend의 뉴스 수집/분석 상태를 확인하세요.