tags: [ideas, email, persistence, naverworks, storage] # 이메일 읽기시점 전건저장 아이디어 ## 배경 - 현재 로빙의 이메일 처리 경로는 메일을 먼저 조회하고, 그중 콜드메일로 판정된 메일만 후속 처리 단계에서 저장합니다. - 이 구조에서는 "왜 이 메일이 선택됐는가", "선택되지 않은 메일과 무엇이 달랐는가", "첨부파일이 여러 개인 경우 어떤 파일이 분석 대상으로 이어졌는가"를 나중에 정확히 추적하기 어렵습니다. - 특히 콜드메일 오분석처럼 입력 선택 경로가 문제일 때, 저장되지 않은 일반 메일과 저장된 콜드메일 사이의 차이를 같은 기준으로 비교하기 어렵습니다. ## 문제 인식 - 현재 구조는 이메일을 "업무 데이터"가 아니라 "필터를 통과한 결과물만 남기는 임시 입력"처럼 다루고 있습니다. - 그 결과: - 필터 이전 상태 추적이 약합니다. - 이메일 처리 흐름을 재현하기 어렵습니다. - 첨부 선택, 본문 해석, 분류 기준을 사후 검증하기 어렵습니다. - 이메일 관련 기능이 늘어날수록 "콜드메일만 저장" 구조는 한계가 커질 수 있습니다. ## 핵심 아이디어 - 이메일 관련 정보는 **읽는 시점(fetch 단계)** 에 먼저 저장합니다. - 즉 "콜드메일인지 아닌지"와 무관하게, 조회된 이메일을 공통 이메일 저장소에 먼저 적재한 뒤 후속 분류와 분석은 그 저장된 데이터를 기준으로 이어갑니다. ## 이 아이디어가 뜻하는 상태 ### 1. 이메일은 필터 결과가 아니라 원본 단위로 관리한다 - 콜드메일은 이메일 저장소 위에 얹히는 "분류 결과"가 됩니다. - 분석, 분류, 첨부 선택, Slack 전송은 모두 저장된 이메일 레코드를 참조합니다. ### 2. 읽기와 해석을 분리한다 - 읽기 단계: - 메일 식별자 - 제목 - 본문 - 발신자 - 수신 시각 - 첨부 메타데이터 - 원본 제공자 정보 를 저장합니다. - 해석 단계: - 콜드메일 여부 - 신뢰도 - 선택된 분석 문서 - 후속 액션 상태 를 별도 상태로 관리합니다. ### 3. 첨부도 이메일 중심으로 연결한다 - 첨부파일은 단순히 `document_id`만 흩어지는 구조가 아니라, "어느 이메일의 어떤 첨부였는지"가 유지되어야 합니다. - 이후 IR 분석이 특정 첨부를 선택했다면, 그 선택 결과도 이메일 레코드에 연결됩니다. ## 기대 효과 ### 1. 추적성 강화 - 어떤 메일이 왜 콜드메일로 갔는지, 왜 안 갔는지 같은 비교가 쉬워집니다. - 잘못된 첨부 선택이나 본문 파싱 문제를 원본 기준으로 다시 볼 수 있습니다. ### 2. 기능 확장 기반 - 콜드메일 외에도 일반 투자문의, 회신 필요 메일, 중요 공지 메일 같은 다른 분류 체계로 확장하기 쉬워집니다. - 이메일은 하나의 원본 저장소가 되고, 각 기능은 그 위에서 다른 해석 레이어를 붙일 수 있습니다. ### 3. 재현성 강화 - 이후 필터 로직이 바뀌어도 과거 메일 집합을 기준으로 재분류·재평가가 가능해집니다. - 운영 중 문제 발생 시 "현재 메일함 상태"가 아니라 "당시 읽은 레코드" 기준으로 분석할 수 있습니다. ## 아직 아이디어 단계인 이유 - 어떤 저장 범위를 기본값으로 할지 아직 고정되지 않았습니다. - 제목/본문만 저장할지 - 헤더 전체를 저장할지 - 첨부 바이너리까지 읽기 단계에서 바로 저장할지 - 저장 위치도 아직 결정되지 않았습니다. - rb8001 DB 단일 저장 - skill-email 중심 저장 - 이메일 원본과 첨부 메타를 분리 저장 - 중복 읽기, 보존 기간, 개인정보/운영 데이터 경계도 아직 정책으로 확정되지 않았습니다. ## 이 아이디어가 열어두는 질문 1. 이메일 저장의 SSOT는 `rb8001`이 맞는가, 아니면 `skill-email`이 맞는가? 2. "읽었다"의 기준은 목록 조회 시점인가, 상세 조회 시점인가? 3. 첨부는 메타데이터만 우선 저장하고 실제 파일은 필요 시 가져오는 구조가 나은가? 4. 동일 메일 재조회 시 업데이트 정책은 어떻게 가져갈 것인가? 5. 이메일 저장과 콜드메일 분류 결과를 어떤 관계로 분리할 것인가? ## 바로 실행 결정으로 넘기지 않은 이유 - 이 아이디어는 단순 컬럼 추가가 아니라 이메일 도메인의 저장 책임을 다시 정하는 문제입니다. - 따라서 이번 단계에서는 "이메일은 읽는 시점에 먼저 저장한다"는 방향만 열어두고, 실제 스키마·책임 경계·동기화 방식은 별도 계획 문서에서 닫아야 합니다. ## 한 줄 결론 - 콜드메일만 저장하는 구조보다, 이메일을 읽는 시점에 전건 저장하고 그 위에서 분류·분석을 얹는 구조가 더 추적 가능하고 확장 가능한 방향입니다.