feat: 콜드메일 이메일 원본 데이터 DB 저장 계획 추가
- ir_deck_evaluations 테이블에 email_metadata JSONB 컬럼 추가 계획 - 이메일 원본 데이터(제목, 본문, 보낸사람) 저장하여 나중에 분석 가능하도록 - DB 저장(분석용)과 Slack Lists(보여주기용) 목적 구분 명확화
This commit is contained in:
parent
bbf28e2738
commit
234dd504c5
97
journey/plans/251215_coldmail_email_db_storage.md
Normal file
97
journey/plans/251215_coldmail_email_db_storage.md
Normal file
@ -0,0 +1,97 @@
|
||||
# 콜드메일 이메일 원본 데이터 DB 저장 계획
|
||||
|
||||
**날짜**: 2025-12-15
|
||||
**작성자**: Auto
|
||||
**관련 파일**:
|
||||
- `rb8001/app/services/coldmail_processor.py`
|
||||
- `rb8001/app/state/ir_valuation_repository.py`
|
||||
|
||||
---
|
||||
|
||||
## 목표
|
||||
|
||||
콜드메일 처리 시 이메일 원본 데이터(제목, 본문, 보낸사람)를 DB에 저장하여 나중에 분석(대표 이름 추출 등) 가능하도록 함.
|
||||
|
||||
---
|
||||
|
||||
## 배경
|
||||
|
||||
### 현재 문제
|
||||
- 이메일 원본 데이터가 DB에 저장되지 않음
|
||||
- 이메일 본문에서 대표 이름 추출 등 분석 불가
|
||||
- skill-email은 실시간 조회만 하고 저장하지 않음
|
||||
|
||||
### 데이터 저장 전략
|
||||
- **DB 저장 (분석용)**: 이메일 원본 데이터 전체 (제목, 본문, 보낸사람 등)
|
||||
- **Slack Lists (보여주기용)**: 투자 검토용 핵심 정보만 (회사명, 대표명, 이메일 주소, IR Deck 파일)
|
||||
|
||||
---
|
||||
|
||||
## 구현 계획
|
||||
|
||||
### Phase 1: 테이블 스키마 변경
|
||||
|
||||
**파일**: `rb8001/app/state/ir_valuation_repository.py`
|
||||
|
||||
**변경 내용**:
|
||||
- `ir_deck_evaluations` 테이블에 `email_metadata JSONB` 컬럼 추가 (nullable)
|
||||
|
||||
**스키마**:
|
||||
```sql
|
||||
ALTER TABLE ir_deck_evaluations
|
||||
ADD COLUMN email_metadata JSONB;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_ir_deck_eval_email_metadata
|
||||
ON ir_deck_evaluations USING GIN (email_metadata);
|
||||
```
|
||||
|
||||
**JSONB 구조** (콜드메일인 경우):
|
||||
```json
|
||||
{
|
||||
"email_id": "skill-email 원본 ID",
|
||||
"subject": "이메일 제목",
|
||||
"body": "이메일 본문",
|
||||
"from_email": "보낸사람 이메일",
|
||||
"from_name": "보낸사람 이름",
|
||||
"received_at": "수신일시 (ISO 8601)"
|
||||
}
|
||||
```
|
||||
|
||||
**참고**: Slack/프론트엔드에서 업로드한 IR 자료는 이메일이 아니므로 `email_metadata = NULL`
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: 콜드메일 처리 시 저장 로직 추가
|
||||
|
||||
**파일**: `rb8001/app/services/coldmail_processor.py`
|
||||
|
||||
**변경 내용**:
|
||||
- `process_coldmail()` 함수에서 이메일 정보 추출
|
||||
- IR 평가 결과 저장 시 `email_metadata` 포함
|
||||
|
||||
**구현 위치**: `coldmail_processor.py:107` (IR 분석 후)
|
||||
|
||||
**저장 시점**:
|
||||
- IR Deck 평가 결과와 함께 `ir_deck_evaluations` 테이블에 저장
|
||||
- 또는 별도 `IRValuationRepository.create_evaluation()` 호출 시 `email_metadata` 파라미터 추가
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: 대표 이름 추출 로직 개선
|
||||
|
||||
**파일**: `rb8001/app/services/coldmail_processor.py`
|
||||
|
||||
**변경 내용**:
|
||||
- 이메일 본문에서 대표 이름 추출 로직 추가 (LLM 또는 정규식)
|
||||
- 우선순위: 이메일 본문 → IR Deck PDF → From 헤더
|
||||
|
||||
**참고**: 현재는 From 헤더 우선 → IR Deck PDF 순서로 되어 있음 (최근 수정됨)
|
||||
|
||||
---
|
||||
|
||||
## 참고 문서
|
||||
|
||||
- `journey/troubleshooting/251014_coldmail_ir_analysis_scenario.md`: 콜드메일 처리 시나리오
|
||||
- `journey/troubleshooting/251206_ir_deck_system_current_status.md`: IR Deck 시스템 현황
|
||||
- `book/300_architecture/312_문서_작성_원칙.md`: 문서 작성 원칙
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user