docs(troubleshooting): rb8001 coldmail workflow update (Slack API key header, email URL via env)
This commit is contained in:
parent
7d328cbc27
commit
b19b700fd9
70
troubleshooting/251021_rb8001_coldmail_workflow_update.md
Normal file
70
troubleshooting/251021_rb8001_coldmail_workflow_update.md
Normal file
@ -0,0 +1,70 @@
|
||||
# 2025-10-21 rb8001 Coldmail 워크플로 변경 점검 (Slack 헤더/Email URL)
|
||||
|
||||
**작성일**: 2025-10-21
|
||||
**작성자**: Claude (51124 서버 전담)
|
||||
**상태**: 완료
|
||||
|
||||
---
|
||||
|
||||
## 배경/문제
|
||||
- Coldmail 요약을 Slack으로 전송할 때 간헐적 인증 문제(401/403)가 발생할 수 있었음.
|
||||
- 원인: `X-API-Key` 헤더 미전달 케이스 존재.
|
||||
- `scripts/run_coldmail_email.py`가 하드코딩 URL(`localhost:8501`)을 사용하여 컨테이너/서버 환경에서 잘못된 대상에 요청할 가능성.
|
||||
|
||||
## 변경 사항
|
||||
- 커밋: `b8901ae` (rb8001, main)
|
||||
- 파일:
|
||||
1) `app/services/workflows/coldmail_workflow.py`
|
||||
- Slack 전송 요청에 `headers={"X-API-Key": os.getenv("SKILL_SLACK_API_KEY", "")}` 추가.
|
||||
- 효과: skill-slack 연동 시 API Key 기반 인증 일관성 보장.
|
||||
2) `scripts/run_coldmail_email.py`
|
||||
- `SKILL_EMAIL_URL = os.getenv("SKILL_EMAIL_URL", "http://localhost:8501")`로 변경.
|
||||
- 효과: 컨테이너/서버 환경에서 환경변수 우선 사용(필요 시 로컬 기본값).
|
||||
|
||||
## 관련 설정 확인
|
||||
- 환경변수 예시(rb8001/.env)
|
||||
- `SKILL_SLACK_API_KEY` (필수)
|
||||
- `SKILL_SLACK_URL` (예: `http://localhost:8502`)
|
||||
- `SKILL_EMAIL_URL` (compose에서 별도 지정 가능)
|
||||
- Compose 설정(rb8001/docker-compose.yml)
|
||||
- `env_file: .env`로 로드 후, 필요 시 `environment:`에서 `SKILL_EMAIL_URL` 재설정됨.
|
||||
|
||||
## 재현/검증 절차
|
||||
1) Slack 전송 인증 확인
|
||||
- 컨테이너/서버에서 환경변수 확인: `printenv | grep -E "SKILL_SLACK_URL|SKILL_SLACK_API_KEY"`
|
||||
- 직접 호출 테스트:
|
||||
```bash
|
||||
curl -sS -X POST "$SKILL_SLACK_URL/api/v1/send" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-API-Key: $SKILL_SLACK_API_KEY" \
|
||||
-d '{"channel":"'$COLDMAIL_CHANNEL_ID'","text":"coldmail test"}'
|
||||
```
|
||||
- 기대값: 200 OK 및 Slack 채널 메시지 확인.
|
||||
2) Coldmail 스크립트 URL 확인
|
||||
- `printenv SKILL_EMAIL_URL`로 현재 값 확인(컨테이너에서는 compose 설정값 우선).
|
||||
- 단건 실행 테스트:
|
||||
```bash
|
||||
cd /home/admin/ivada_project/rb8001
|
||||
docker exec rb8001 python scripts/run_coldmail_email.py <email_id>
|
||||
```
|
||||
- 기대값: 이메일 상세 조회 성공(200), 오류 로그 없음.
|
||||
3) 서비스 로그 확인(운영)
|
||||
- `docker logs rb8001 --tail 200 | grep -iE "coldmail|slack|error|fail|warn"`
|
||||
- 실패 시 상태코드/응답 메시지로 원인(401/403/5xx) 식별.
|
||||
|
||||
## 영향/리스크
|
||||
- Slack API Key 미설정/오설정 시 여전히 401/403 발생 가능 → `.env`/Secrets 관리 필요.
|
||||
- `SKILL_EMAIL_URL`이 환경에 맞지 않으면 이메일 상세 조회 실패(연결 거부/타임아웃) → compose/.env 정합성 확인 필요.
|
||||
|
||||
## 롤백 방법
|
||||
- 문제 발생 시 직전 커밋으로 되돌림:
|
||||
```bash
|
||||
cd rb8001 && git revert b8901ae
|
||||
```
|
||||
(CI/CD가 동작 중이면 revert 후 재배포 필요)
|
||||
|
||||
## 교훈
|
||||
- 외부/내부 스킬 연동은 API Key 헤더를 일관되게 사용해 인증 오류를 예방한다.
|
||||
- 하드코딩된 서비스 URL은 환경변수로 치환해 컨테이너/서버/로컬 간 동작 일관성을 확보한다.
|
||||
- 변경 후에는 Slack/Email 경로 각각에 대해 독립적인 헬스/기능 테스트를 수행한다.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user