수집 이후 데이터 연동 — 관제 흐름도
① 소스 수집 — 원본 서비스 REST API
AllergyInsight Backend :9040
알러지 뉴스·논문 (HealthPulse 통합)
daily 07:30 수집
SkillRadar Backend :9070
AI 교육과정·세미나·정책·뉴스 큐레이션
daily 06:30 · weekly 금 06:00 수집
→httpx · X-Newsletter-Key
수집·정규화
APScheduler cron 트리거 → collected_data upsert 캐시 + history 이력 보관 (원본 DB 직접 접근 없음)
▼
② 데이터 연동·가공 — 수집본을 구독자 맞춤 콘텐츠로
중복 제거
article_key 지문 · 최근 7일 dedup 풀 — 이미 발송한 기사 재탕 차단
→
페르소나 적응 AllergyInsight
구독자 역할(페르소나)·관심 알러젠 기준으로 같은 수집본에서 콘텐츠 선택·변형
→
AI 심층 분석 TechBriefing
스코어링 Top-N 선별 → 로컬 Ollama(qwen2.5-coder) 4섹션 심층 카드 생성
▼
③ 뉴스레터 구성·발송 — 구독자에게 전달
템플릿 렌더링
Jinja2 — 테넌트 브랜드·발송 타입(daily/weekly/monthly)별 HTML 구성
→
SendPlan 수립
발송 대상 확정·트랜잭션 분리·실패 재시도 계획
→
SMTP 발송
Gmail SMTP — 구독 해지(RFC 8058)·열람 픽셀·클릭 추적 링크 삽입
→
구독자 수신
AllergyInsight daily 08:30 · TechBriefing daily 08:00 / weekly 금 09:30
📡 관제 Observability
콘텐츠 헬스 /api/health/content — 신선도·중복 감시
발송 이력 — 성공/실패·재시도 추적
Engagement /e/* — 열람·클릭·피드백 회수
Slack 경보 — 수집·발송 이상 통지
휴일 정책 — 휴일 스킵·영업일 catch-up