📨 실시간 이메일 분류 + 업무 자동화(요약/To-do/답장/번역/린팅)까지 한 번에 처리하는 Enterprise AI Email Platform
기업 내 이메일은 여전히 핵심 업무 수단이지만, 하루 수십~수백 통 메일 속에서 스팸/문의/긴급 이슈/컴플레인이 뒤섞이며 중요한 메일이 묻히곤 합니다.
SANAE는 이를 해결하기 위해 실시간 스트리밍 파이프라인 + 멀티모델(AI) 오케스트레이션 + 업무 자동화 에이전트를 하나로 통합한 플랫폼입니다.
- 1차 방어: 스팸 자동 차단
- 이메일 이해: 부서/카테고리 라우팅, 긴급도, 감정, 컴플레인 강도, 담당자(직급) 추론
- 업무 자동화: 요약, Action item(To-do), 자동 답장 초안, AI 린팅, 번역
- Dashboard:
http://localhost:5000 - 로그인 후 "파이프라인 시작" 버튼으로 실시간 스트리밍 분석을 시작합니다.
기본 계정 예시(레포 설정에 맞게 수정 가능):
jaehyun@sanae.com
- 🚫 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)
- 한 번의 분석으로 아래 타깃을 예측:
- 🧾 메일 요약
- ✅ Action item 추출 & To-do 생성
- ✍️ 자동 답변 초안 생성
- 🪄 AI 린팅(비즈니스 에티켓/표현 교정)
- 🌐 메일 자동 번역
- Producer가 CSV/Raw 이메일을 JSON으로 직렬화해 Kafka로 전송
- Spark Structured Streaming이 마이크로배치로 가져와 실시간 처리
- **Controller(agent_service)**가 모델 호출 순서 제어
- Spam(TF) → (정상일 때만) Main Classifier(PyTorch) → Gemini(요약/To-do/답장)
- 결과는 Hot/Warm/Cold 저장 전략으로 적재 후 대시보드에서 시각화
- 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)
- TensorFlow/Keras (Spam Classifier)
- PyTorch (Multi Email Task Model)
- Google Gemini API (Agent features)
- Docker / Docker Compose (분산 서비스 오케스트레이션)
- Shell Script 기반 자동 초기화 (토픽/테이블/의존성 대기)
- Docker & Docker Compose
- 최소 8GB RAM (Spark 구동)
- (선택) Gemini API Key
git clone https://github.com/Cathesth/SANAE.git
cd SANAE
cp .env.example .env
# .env에서 GEMINI_API_KEY 등 설정docker-compose up -d
docker-compose logs -f flask-app# 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사내 메일 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)
- 조명래: 프로젝트 총괄/아키텍처, 데이터셋 엔지니어링, Multi-Task 모델 설계, 세션/제어
- 이승민: 프롬프트 엔지니어링, LLM 워크플로우/페르소나, 데이터 스키마 설계 참여
- 안재현: 실시간 파이프라인 구축, 모델 서빙/최적화, Docker 오케스트레이션, Spam 모델 설계
- 정진웅: 웹 UI(부트스트랩 기반), 로그인/회원가입 및 UX 구현
- SANAE는 실시간 스트리밍 처리를 전제로 설계되어, 배치 분석이 아닌 운영 환경에 맞는 구조를 목표로 합니다.
- 모델 파일(
.h5/.pt)과 전처리 객체(.pkl)는 Docker Volume Mount로 컨테이너와 동기화하여 이미지 리빌드 없이도 교체 가능합니다.