Skip to content

Cathesth/SANAE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

326 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SANAE (Smart AI-powered Network for Automated Email management)

📨 실시간 이메일 분류 + 업무 자동화(요약/To-do/답장/번역/린팅)까지 한 번에 처리하는 Enterprise AI Email Platform


0) What is SANAE?

기업 내 이메일은 여전히 핵심 업무 수단이지만, 하루 수십~수백 통 메일 속에서 스팸/문의/긴급 이슈/컴플레인이 뒤섞이며 중요한 메일이 묻히곤 합니다.
SANAE는 이를 해결하기 위해 실시간 스트리밍 파이프라인 + 멀티모델(AI) 오케스트레이션 + 업무 자동화 에이전트를 하나로 통합한 플랫폼입니다.

  • 1차 방어: 스팸 자동 차단
  • 이메일 이해: 부서/카테고리 라우팅, 긴급도, 감정, 컴플레인 강도, 담당자(직급) 추론
  • 업무 자동화: 요약, Action item(To-do), 자동 답장 초안, AI 린팅, 번역

1) Demo (로컬 실행)

  • Dashboard: http://localhost:5000
  • 로그인 후 "파이프라인 시작" 버튼으로 실시간 스트리밍 분석을 시작합니다.

기본 계정 예시(레포 설정에 맞게 수정 가능): jaehyun@sanae.com


2) Key Features

A. Supervised Models (지도학습)

  • 🚫 Spam Gatekeeper (TensorFlow/Keras)
    • 스팸이면 즉시 Drop → 이후 무거운 분석/LLM 호출을 막아 리소스 절약
  • 🎯 Multi Email Task Model (PyTorch 기반 분류기)
    • 한 번의 분석으로 아래 타깃을 예측:
      • mail_channel(0/1/2)
      • label_dept(11개 부서)
      • priority_level(0~3)
      • sentiment(0~2)
      • is_complaint(0~3)
      • assignee(0~4)

B. LLM Module (LLM, Gemini)

  • 🧾 메일 요약
  • Action item 추출 & To-do 생성
  • ✍️ 자동 답변 초안 생성
  • 🪄 AI 린팅(비즈니스 에티켓/표현 교정)
  • 🌐 메일 자동 번역

3) System Architecture (Real-time Streaming)

image

전체 흐름 요약

  1. Producer가 CSV/Raw 이메일을 JSON으로 직렬화해 Kafka로 전송
  2. Spark Structured Streaming이 마이크로배치로 가져와 실시간 처리
  3. **Controller(agent_service)**가 모델 호출 순서 제어
    • Spam(TF) → (정상일 때만) Main Classifier(PyTorch) → Gemini(요약/To-do/답장)
  4. 결과는 Hot/Warm/Cold 저장 전략으로 적재 후 대시보드에서 시각화

4) Tech Stack

Backend / Data Processing

  • Apache Kafka (Stream Ingestion)
  • Apache Spark 3.5.x (Structured Streaming, Micro-batch)
  • Flask (Dashboard / API)
  • Redis (Hot cache)
  • PostgreSQL (Warm storage)
  • Hive (Cold storage)

AI / ML / DL

  • TensorFlow/Keras (Spam Classifier)
  • PyTorch (Multi Email Task Model)
  • Google Gemini API (Agent features)

Infrastructure

  • Docker / Docker Compose (분산 서비스 오케스트레이션)
  • Shell Script 기반 자동 초기화 (토픽/테이블/의존성 대기)

5) Quick Start

Requirements

  • Docker & Docker Compose
  • 최소 8GB RAM (Spark 구동)
  • (선택) Gemini API Key

1) Clone & Env

git clone https://github.com/Cathesth/SANAE.git
cd SANAE

cp .env.example .env
# .env에서 GEMINI_API_KEY 등 설정

2) Run

docker-compose up -d
docker-compose logs -f flask-app

3) (Optional) 수동으로 파이프라인 실행

# Kafka Producer
docker exec -it spark-master python3 /opt/spark/semi-prj-2/ingestion/producer.py &

# Spark Streaming Job
docker exec -it spark-master /opt/spark/bin/spark-submit \
  --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.5.0 \
  /opt/spark/semi-prj-2/spark_job/main_task.py

6) Dataset & Labels (요약)

사내 메일 DB를 가정한 정형 스키마 + 라벨 상관관계를 반영한 합성 데이터 기반
부서/직급 구조, 도메인 룰(사내/외부/스팸), 분포 제어, 중복 방지/파싱 안정성 규칙 포함

Target Labels:

  • mail_channel (0:일반, 1:사내업무, 2:거래처)
  • label_dept (0~10, 11개 부서)
  • priority_level (0~3)
  • sentiment (0~2)
  • is_complaint (0~3)
  • assignee (0~4)

7) Service (구동화면)

image

8) Project Members (TEAM S.A.N.A.I)

  • 조명래: 프로젝트 총괄/아키텍처, 데이터셋 엔지니어링, Multi-Task 모델 설계, 세션/제어
  • 이승민: 프롬프트 엔지니어링, LLM 워크플로우/페르소나, 데이터 스키마 설계 참여
  • 안재현: 실시간 파이프라인 구축, 모델 서빙/최적화, Docker 오케스트레이션, Spam 모델 설계
  • 정진웅: 웹 UI(부트스트랩 기반), 로그인/회원가입 및 UX 구현

9) Notes

  • SANAE는 실시간 스트리밍 처리를 전제로 설계되어, 배치 분석이 아닌 운영 환경에 맞는 구조를 목표로 합니다.
  • 모델 파일(.h5/.pt)과 전처리 객체(.pkl)는 Docker Volume Mount로 컨테이너와 동기화하여 이미지 리빌드 없이도 교체 가능합니다.