From ce921ccadbf6102fdebc562fadf8cdc4bec7f061 Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Tue, 21 Oct 2025 13:08:31 +0900 Subject: [PATCH] =?UTF-8?q?docs(troubleshooting):=20Slack=20Lists=20?= =?UTF-8?q?=E2=80=98=EC=9D=B4=EB=A9=94=EC=9D=BC=E2=80=99=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EC=98=A4=EB=B2=84=EB=9D=BC=EC=9D=B4=EB=93=9C=20?= =?UTF-8?q?=EB=B0=8F=20LangGraph=20=EC=9E=AC=ED=85=8C=EC=8A=A4=ED=8A=B8(KA?= =?UTF-8?q?YAKOCO)=20=EA=B2=B0=EA=B3=BC=20=EC=A0=95=EB=A6=AC=20(2025-10-21?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mail_column_override_and_langgraph_test.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 troubleshooting/251021_coldmail_list_email_column_override_and_langgraph_test.md diff --git a/troubleshooting/251021_coldmail_list_email_column_override_and_langgraph_test.md b/troubleshooting/251021_coldmail_list_email_column_override_and_langgraph_test.md new file mode 100644 index 0000000..f856a0c --- /dev/null +++ b/troubleshooting/251021_coldmail_list_email_column_override_and_langgraph_test.md @@ -0,0 +1,51 @@ +# 2025-10-21 Coldmail 리스트 ‘이메일’ 컬럼 분리 적용 및 LangGraph 재테스트 + +**작성일**: 2025-10-21 +**작성자**: Claude (51124 서버 전담) +**상태**: 완료 + +--- + +## 배경 +- 콜드메일 처리 결과가 Slack Lists에 기록될 때, 대표이름과 이메일이 같은 텍스트 컬럼에 합쳐 저장되는 사례가 있었음. +- 원인: Slack Lists API `slackLists.items.list` 응답에서 `columns` 메타가 누락되는 경우가 있어, 자동으로 ‘이메일’ 컬럼 ID를 식별하지 못함. 그 경우 로직이 연락처 텍스트 컬럼에 이메일을 병합 저장함. + +## 조치 내용 +- 이메일 컬럼 ID 강제 지정 기능 추가: `SLACK_LIST_EMAIL_COLUMN_ID` + - 코드: `rb8001/app/services/coldmail_processor.py`에 이메일 컬럼 오버라이드 로직 추가 (env 존재 시 우선 적용) + - 설정: `rb8001/docker-compose.yml`에 `SLACK_LIST_EMAIL_COLUMN_ID=Col09L4SH6YK0` 명시 + - 커밋: `rb8001@d3d915c` + 메시지: feat(coldmail): allow override for Slack '이메일' column via SLACK_LIST_EMAIL_COLUMN_ID and set default (Col09L4SH6YK0) in compose + +## 컬럼 ID 확인 방법(운영 확인) +1) skill-slack API로 리스트 아이템 조회: + `GET http://localhost:8502/api/v1/lists/F09L4S2C6BG/items?limit=200` (헤더: `X-API-Key`) +2) 응답의 `items[].fields[]` 중 `email` 키가 존재하는 항목의 `column_id`가 이메일 컬럼 ID + - 실제 확인 결과: `Col09L4SH6YK0` (샘플 값: `vincent@kayakoco.com`) + +## LangGraph 체크포인트 재테스트 +- 대상 메일: KAYAKOCO (메시지 ID: `18687`) +- 실행: LangGraph 체크포인트를 유지한 채 수동 실행 + `docker exec -e SLACK_LIST_EMAIL_COLUMN_ID=Col09L4SH6YK0 rb8001 python /code/run_coldmail_email.py 18687` +- 결과(최신 아이템): `Rec09M5TN3U5D` + - 회사명(name): `KAYAKOCO` + - 이메일(email 컬럼 Col09L4SH6YK0): `vincent@kayakoco.com` + - 연락처 텍스트(대표/담당자): `없음` + → 이메일이 전용 컬럼으로 분리 저장됨을 확인 + +## 참고 로그/아이템 +- 과거 테스트 아이템: `Rec09MZD27T89` (이메일 컬럼 미식별 시 연락처 텍스트에 이메일 병합 저장) +- 오버라이드 적용 후: `Rec09M5S9RME3`, `Rec09M5TN3U5D` (이메일 분리 저장) + +## 영향 및 주의 +- `SLACK_LIST_EMAIL_COLUMN_ID`가 잘못 설정되면 이메일이 기록되지 않거나 에러 가능 → 운영 전 실제 리스트에서 컬럼 ID 재확인 권장. +- skill-slack의 `slackLists.items.list` 응답에 `columns` 메타가 제공되면 자동 식별 경로가 우선 적용되며, env는 강제 오버라이드로 동작. + +## 추가 관찰(관련 이슈) +- skill-email 목록 API 500(로그: `column "oauth_id" does not exist`) 발생 → 목록 조회는 임시로 건너뛰고 단건 상세/수동 주입으로 테스트 수행. 목록 API 스키마 정합성 수정 필요. + +## 다음 단계 +1. rb8001 재배포 후 운영 스케줄 실행 시에도 이메일 분리 저장이 지속되는지 모니터링. +2. skill-email 목록 API 스키마 오류 수정(미존재 컬럼 참조 제거) 후, 전체 플로우(목록→상세→첨부→리스트) 실메일 기반 재검증. +3. Slack Lists 컬럼 메타가 불규칙한 워크스페이스에서는 필요한 컬럼 ID를 `.env`나 compose 환경변수로 명시하는 운영 가이드 반영. +