diff --git a/troubleshooting/251021_rb8001_coldmail_workflow_update.md b/troubleshooting/251021_rb8001_coldmail_workflow_update.md index 264e15b..2595abd 100644 --- a/troubleshooting/251021_rb8001_coldmail_workflow_update.md +++ b/troubleshooting/251021_rb8001_coldmail_workflow_update.md @@ -21,6 +21,21 @@ - `SKILL_EMAIL_URL = os.getenv("SKILL_EMAIL_URL", "http://localhost:8501")`로 변경. - 효과: 컨테이너/서버 환경에서 환경변수 우선 사용(필요 시 로컬 기본값). +### 2025-10-21~22 후속 변경(피드백 UI/표시/학습 신호) +- 커밋: `520a7c7`, `058ecb8`, `1e93d49`, `748eacd` (rb8001) +- 파일: `app/services/coldmail_processor.py`, `app/router/slack_handler.py` + - 피드백 UI 라디오 → 드롭다운(static_select) → 최종: 질문 context(작은 글자) + 가로 버튼(맞음/아님) 구성으로 정리 + - 발신 표시 개선: 이메일 > 이름(“없음” 제외) > 원문 문자열 순으로 표시, 학습 value는 이메일 우선 사용 + - 인터랙티브 처리: radio_buttons(selected_option) 지원 및 ‘무시(skip)’ 값은 학습 갱신 생략 +- 참고: 피드백 UI는 Block Kit 제약으로 폰트 크기 비율 직접 조정이 불가하여 작은 텍스트는 context 블록으로 구현 + +### 2025-10-22 학습 신호 확장 (제목→본문/첨부까지) +- 커밋: `268ab2f` (rb8001) +- 파일: `app/services/coldmail_filter.py`, `app/services/coldmail_hybrid_filter.py` + - Naive Bayes 특징추출을 제목 + 본문 + 첨부파일명(+도메인 토큰)으로 확장 + - 하이브리드 Stage3(NB) 호출경로에 body/attachments 전달 연동 +- 자세한 내용: `troubleshooting/251022_coldmail_nb_feature_expansion.md` + ## 관련 설정 확인 - 환경변수 예시(rb8001/.env) - `SKILL_SLACK_API_KEY` (필수) @@ -40,6 +55,7 @@ -d '{"channel":"'$COLDMAIL_CHANNEL_ID'","text":"coldmail test"}' ``` - 기대값: 200 OK 및 Slack 채널 메시지 확인. + - 주의: .env 인라인 주석으로 채널 값 파싱 오류가 날 수 있어 채널 ID는 순수 값만 사용 2) Coldmail 스크립트 URL 확인 - `printenv SKILL_EMAIL_URL`로 현재 값 확인(컨테이너에서는 compose 설정값 우선). - 단건 실행 테스트: @@ -48,6 +64,7 @@ docker exec rb8001 python scripts/run_coldmail_email.py ``` - 기대값: 이메일 상세 조회 성공(200), 오류 로그 없음. + - 보조: `scripts/find_pdf_emails.py `로 최근 PDF 첨부 이메일 id 탐색 (PYTHONPATH=rb8001 필요) 3) 서비스 로그 확인(운영) - `docker logs rb8001 --tail 200 | grep -iE "coldmail|slack|error|fail|warn"` - 실패 시 상태코드/응답 메시지로 원인(401/403/5xx) 식별. @@ -67,4 +84,3 @@ - 외부/내부 스킬 연동은 API Key 헤더를 일관되게 사용해 인증 오류를 예방한다. - 하드코딩된 서비스 URL은 환경변수로 치환해 컨테이너/서버/로컬 간 동작 일관성을 확보한다. - 변경 후에는 Slack/Email 경로 각각에 대해 독립적인 헬스/기능 테스트를 수행한다. -