Reply Automation · Code Audit

답장 자동화 — 기능 점검 & 문제 분석

수출기업 매니저용 영업 메일 자동화 · 코드베이스 실측 기준 점검 결과
기준일 2026-06-01 · 분석 대상 elysia-server + admin (alpha) · 개인용 noindex 페이지
1
완전 구현 (담당자 전달 #8060)
2
부분 구현 (의도와 차이)
1
사실상 미구현 (OOO 재발송)
5
횡단 구조 이슈

요약

기능의도현재 상태
1. 미응답 후속 "확인되셨을까요?"첫 발송 무응답 시 원본 비슷한 내용으로 바이어에게 후속부분
2. OOO → 영업시간 재발송주말/영업외 발송→자동응답 수신→영업시간에 재발송미구현
3. 담당자 아님 → 자동 전달"XXX로 보내달라" 답장 시 XXX로 동일 전달완료
+ 긍정/미팅 답장 → 유저 이메일 알림긍정/미팅 답장 도착 즉시 담당자 메일로 알림부분

1미응답 후속 "확인되셨을까요?" 메일 부분

의도 — 유저가 보냈는데 수신자가 답장을 까먹었을 때, 원래 보냈던 비슷한 내용으로 "확인되셨을까요?" 느낌의 후속을 자동 발송.

코드동작판정
auto-nudge.service (시간당 worker, SES)nudge_type_configs 스케줄(앵커 날짜) 기반 바이어 후속 발송유사
시퀀스 후속 step시퀀스에 정의된 다음 단계 메일 진행유사
scanForNudges (헥사고날, reminderFrom=마지막 콘텐츠 언어로 재생성)의도에 가장 근접하나 호출부 없음dead
reply-nudge.service바이어가 답장한 뒤 유저에게 후속 독촉 (방향 반대)다른 기능

문제

2OOO(부재중) → 영업시간 재발송 미구현

의도 — 주말/영업외에 보내 자동응답(OOO)이 오면, 수신자 국가의 영업시간에 다시 발송.

코드동작판정
processReplyAutomation (OOO intent)OOO 감지 → 시퀀스 pauseautoResumeDelayDays(기본 7일) 후 resume개념만 일부
handleOOOReply / nextBusinessSlot (복귀일 파싱→다음 영업일 재스케줄)의도와 정확히 일치하나 배선 0건dead

문제

3담당자 아님 → XXX로 자동 전달 완료 · #8060

의도 — "나는 담당자 아님 → XXX 메일로 보내달라" 답장 시, XXX로 원본 메일을 동일하게 자동 전달.

코드동작판정
ai-classification wrong_contact intent + referredEmail 추출분류 + 대체 주소 추출(AI 미추출 시 본문 정규식 fallback)구현
wrong-contact-forward.service + webhook 배선review(검토 알림) / auto(고신뢰·유효주소 시 즉시 전달) 토글, 캠페인별 on/off구현

상태 — 정상 동작

+긍정/미팅 답장 → 유저 이메일 알림 부분

의도 — 긍정/미팅요청 답장이 도착하면 해당 워크스페이스 담당자의 이메일로 알림 메일 발송.

채널동작판정
앱 내 알림(벨/SSE)POSITIVE/INFO_REQUEST 즉시 생성즉시
SlackSLACK_NOTIFY_WORKSPACES allowlist 워크스페이스만일부만
이메일(reply-nudge-email, SES rinda@mail.rinda.ai)24h/72h/7d 지연 넛지로 user.email에 발송 (opt-out·admin 게이트)지연만

문제

횡단 구조 이슈

이슈근거 / 영향
Aconfidence 임계값이 SSOT 아님0.6(시퀀스 액션)·0.7(긍정 알림,dead)·0.8(자동 전달)가 3개 파일에 분산 → 정책 변경 시 drift
B분류 진입점 2원화SendGrid/Nylas webhook은 classifyReply 직접, Unipile은 reclassifyEmailReply 경유 → 동작은 같으나 경로 이원화
C답장 자동화 토글이 생성 마법사에 없음CreateCampaignStep3(토글 포함)를 쓰는 CreateCampaignPage는 라우터 미연결 orphan. 통합 마법사 UnifiedCampaignPage엔 섹션 없음 → 편집 화면에서만 설정 가능
D헥사고날 usecases dead codescanForNudges·handleOOOReply가 라이브 경로와 중복 작성됐으나 미배선 → 기능1·2 미완의 직접 원인
Egemini-3.1-flash-lite thinking 분기레지스트리·타임아웃·실호출 모두 유효(실데이터 분류 정상). 단 supportsThinking prefix에 startsWith로 매칭돼 thinkingConfig 주입 — flash-lite의 thinking 지원 여부 런타임 확인 권장

권장 우선순위

#조치난이도
1긍정/미팅 즉시 이메일 알림notifyEmailReply POSITIVE 분기에 즉시 1건 발송 추가(기존 패턴 재사용)S
2OOO 영업시간 재발송 — dead handleOOOReply/nextBusinessSlot를 OOO intent 경로에 배선M
3미응답 후속 재생성scanForNudges(원본 언어 리마인드)를 시간당 워커에 어댑터 연결M
4답장 자동화 토글을 통합 생성 마법사에 노출 (이슈 C)S
5confidence 임계값 상수 모듈로 SSOT화 (이슈 A)S
Rinda 답장 자동화 코드 점검 · 2026-06-01 · 실측(코드/alpha 로그) 기준. 개인용 noindex 페이지로, 외부 색인되지 않습니다.