From 234dd504c524fb2e0334a7656d6c5cfa89b063fe Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Mon, 15 Dec 2025 21:52:25 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=BD=9C=EB=93=9C=EB=A9=94=EC=9D=BC=20?= =?UTF-8?q?=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=9B=90=EB=B3=B8=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20DB=20=EC=A0=80=EC=9E=A5=20=EA=B3=84?= =?UTF-8?q?=ED=9A=8D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ir_deck_evaluations 테이블에 email_metadata JSONB 컬럼 추가 계획 - 이메일 원본 데이터(제목, 본문, 보낸사람) 저장하여 나중에 분석 가능하도록 - DB 저장(분석용)과 Slack Lists(보여주기용) 목적 구분 명확화 --- .../plans/251215_coldmail_email_db_storage.md | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 journey/plans/251215_coldmail_email_db_storage.md diff --git a/journey/plans/251215_coldmail_email_db_storage.md b/journey/plans/251215_coldmail_email_db_storage.md new file mode 100644 index 0000000..e8eb975 --- /dev/null +++ b/journey/plans/251215_coldmail_email_db_storage.md @@ -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`: 문서 작성 원칙 +