# 온톨로지 기반 Coldmail 필터 구현 계획

**날짜**: 2025-10-16
**목표**: 임베딩 한계(파인티처 메일 누락)를 온톨로지 추론으로 해결

---

## Phase 1: Coldmail 온톨로지 (미착수)

### 개념 계층
```
메일
└── 외부메일
    └── 제안메일
        └── coldmail (투자제안)
            ├── IR자료
            ├── 피칭덱
            └── 사업계획서
```

### 추론 규칙 (10개)

**Coldmail 판정 (6개)**:
1. 제목 CONTAINS ["투자", "IR", "피칭"] + PDF 첨부 → 0.9
2. 첨부파일명 CONTAINS ["회사소개서", "IR_Deck"] → 0.85
3. 제목 "검토요청" + 첨부 → 0.8
4. 미등록 발신자 + PDF → 0.7
5. 본문 CONTAINS ["투자 유치", "펀딩", "밸류에이션"] → 0.75
6. 발신자 도메인 IN ["startup", "ventures", "capital"] → 0.6

**Normal 판정 (4개)**:
7. 제목 CONTAINS ["행사", "초대", "세미나"] → 0.9
8. 제목 CONTAINS ["영수증", "세금계산서"] → 0.95
9. 제목 CONTAINS ["회의", "공지", "보고"] → 0.85
10. 등록 발신자 + 규칙 1-6 미해당 → 0.8

### 구현 필요

**파일**: `rb8001/app/services/coldmail_ontology_reasoner.py`
- 규칙 엔진 구현
- 임베딩 분류(현재 75%) + 온톨로지 추론 → 90%+ 목표
- Threshold: 0.7 이상 확정, 0.4-0.7은 LLM fallback

**검증**:
- 파인티처 메일: coldmail 0.9+ (현재 0.28)
- 기존 17건 재테스트: 정확도 90%+

---

## Phase 2: Neo4j 기억 시스템 (미착수)

### 인프라

**Neo4j 설치 완료** (51123 서버):
- 버전: 2025.06.2 Community
- Bolt: neo4j://192.168.219.45:7687
- HTTP: http://192.168.219.45:7474

### 스키마 설계

```
(:User)-[:SENDS]->(:Email)-[:CONTAINS]->(:Attachment)
(:Email)-[:CLASSIFIED_AS]->(:Category {name:"coldmail"})
(:Email)-[:HAS_EMOTION]->(:Emotion {type:"fear", confidence:0.8})
```

### 쿼리 예시
```cypher
// 투자 제안 이메일 중 긍정적 감정 메일 찾기
MATCH (u:User)-[:SENDS]->(e:Email)-[:CLASSIFIED_AS]->(:Category {name:"coldmail"})
WHERE e.emotion IN ["happiness", "neutral"]
RETURN e.subject, e.sender, e.timestamp
```

---

## Phase 3: 감정-기억-윤리 삼각형 (미착수)

### 통합 설계
- 감정 분석 → 기억 검색 → 윤리 제약 → 응답 생성
- Neo4j에 감정 이력 저장
- 패턴 분석 (우울증 조기 감지)

**예상 기간**: 3-4개월

---

## 참고

- `book/200_core_design/225_온톨로지_기반_지식_표현.md`
- `troubleshooting/250815_emotion_model_training.md`
- `troubleshooting/251016_emotion_ontology_basic.md`
