DOCS/journey/ideas/260313_이메일_읽기시점_전건저장_아이디어.md
2026-03-13 16:56:54 +09:00

5.0 KiB

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. 이메일 저장과 콜드메일 분류 결과를 어떤 관계로 분리할 것인가?

바로 실행 결정으로 넘기지 않은 이유

  • 이 아이디어는 단순 컬럼 추가가 아니라 이메일 도메인의 저장 책임을 다시 정하는 문제입니다.
  • 따라서 이번 단계에서는 "이메일은 읽는 시점에 먼저 저장한다"는 방향만 열어두고, 실제 스키마·책임 경계·동기화 방식은 별도 계획 문서에서 닫아야 합니다.

한 줄 결론

  • 콜드메일만 저장하는 구조보다, 이메일을 읽는 시점에 전건 저장하고 그 위에서 분류·분석을 얹는 구조가 더 추적 가능하고 확장 가능한 방향입니다.