diff --git a/troubleshooting/250919_skill_slack_deployment_plan.md b/troubleshooting/250919_skill_slack_deployment_plan.md index cae9505..abe8b97 100644 --- a/troubleshooting/250919_skill_slack_deployment_plan.md +++ b/troubleshooting/250919_skill_slack_deployment_plan.md @@ -11,86 +11,127 @@ skill-slack의 역할을 로빙 철학(스킬=도구, 판단 금지)에 맞게 --- ## 배포 전제조건 -- [ ] thread_ts 버그 수정 [확인필요: messages.py] -- [ ] SERVICE_API_KEY 설정 [확인필요: 실제값] -- [ ] SLACK_BOT_TOKEN 설정 [확인필요: 실제값] -- [ ] heejae → admin 계정 이전 + +### 현재 상태 +- **heejae 컨테이너**: 실행 중 (포트 8502 사용) +- **admin 디렉토리**: 코드만 클론됨 +- **포트 충돌**: 동시 실행 불가 + +### 필수 확인 +- [ ] thread_ts 버그 수정 (chat_postMessage에 thread_ts 파라미터 추가) +- [ ] SERVICE_API_KEY 설정 (51124 서버 .env 확인) +- [ ] SLACK_BOT_TOKEN 설정 (환경변수) +- [ ] heejae 컨테이너 중단 후 admin 시작 --- ## 로빙 철학 적용 ### 원칙 -- **스킬 = 도구**: 판단 금지, 실행만 -- **무상태**: 기억하지 않음 +- **스킬 = 순수 도구**: 판단 금지, DB 접근 금지 +- **무상태**: 어떤 정보도 기억/조회하지 않음 +- **교체 가능**: 언제든 제거/교체 가능해야 함 + +### 올바른 아키텍처 +``` +1. rb8001이 DB에서 토큰/채널 조회 +2. rb8001이 skill-slack 호출 시 필요 정보 전달 +3. skill-slack은 받은 정보로만 작업 +``` ### API 변경 | 엔드포인트 | 상태 | 이유 | |-----------|------|------| | `/health` | 유지 | 헬스체크 | -| `/api/v1/send` | 유지 | 메시지 전송 | +| `/api/v1/send` | 유지 | 메시지 전송 (토큰 받아서) | | `/api/v1/update` | 유지 | 메시지 업데이트 | | `/api/v1/summarize` | **삭제** | LLM 호출 (로빙 역할) | | `/api/v1/digest` | **삭제** | 자체 처리 (로빙 역할) | --- -## 배포 절차 +## 환경변수 설정 -```bash -ssh admin@51124 -cd /home/admin/ivada_project/skill-slack -git pull -docker compose down -docker compose up -d --build -docker logs skill-slack --tail=50 +### 기본 토큰 (임시) +- **SLACK_BOT_TOKEN**: 환경변수로 설정 +- **SERVICE_API_KEY**: API 인증용 + +### 올바른 방식 +- rb8001이 요청 시마다 토큰 전달: +```json +{ + "channel": "C1234567", + "text": "메시지", + "token": "xoxb-...", // rb8001이 DB에서 조회한 토큰 + "thread_ts": "1234567890.123456" +} ``` --- -## 테스트 +## 배포 절차 -### 헬스체크 +### 계정 전환 (heejae → admin) ```bash -curl -f http://localhost:8502/health +# 51124 서버에서 +docker stop skill-slack # heejae 컨테이너 중단 +cd /home/admin/ivada_project/skill-slack +git pull +docker compose up -d --build +docker logs skill-slack --tail=50 ``` -### 스레드 응답 (핵심) -```bash -curl -X POST http://localhost:8502/api/v1/send \ - -H "X-API-Key: [확인필요]" \ - -H "Content-Type: application/json" \ - -d '{"channel": "[확인필요]", "text": "테스트", "thread_ts": "[확인필요]"}' -``` +### 네트워크 모드 변경 +현재: `network_mode: host` (docker-compose.yml 32행) +권장: bridge 모드로 변경 --- ## 주요 이슈 ### 긴급 -- **thread_ts 미작동**: 스레드 응답 불가 -- **계정 이전**: heejae → admin 미완료 +- **thread_ts 미작동**: chat_postMessage 호출 시 thread_ts 미전달 +- **DB 접근 문제**: skill-slack이 DB 접근하면 철학 위반 -### 결정 필요 -- 레이트리밋: Redis vs 파일 -- 네트워크: host vs bridge +### 수정 필요 +- **토큰 전달 방식**: 환경변수 → API 요청 시 전달 +- **네트워크**: host → bridge + +--- + +## 테스트 + +### 테스트 명령 (현재) +```bash +# 헬스체크 +curl -f http://localhost:8502/health + +# 메시지 전송 +curl -X POST http://localhost:8502/api/v1/send \ + -H "X-API-Key: {API_KEY}" \ + -H "Content-Type: application/json" \ + -d '{"channel": "C1234567", "text": "테스트"}' +``` + +### 테스트 명령 (개선 후) +```bash +# rb8001이 토큰과 함께 요청 +curl -X POST http://localhost:8502/api/v1/send \ + -H "X-API-Key: {API_KEY}" \ + -H "Content-Type: application/json" \ + -d '{"channel": "C1234567", "text": "테스트", "token": "xoxb-..."}' +``` --- ## 체크리스트 ### 배포 전 -- [ ] thread_ts 수정 -- [ ] 토큰 설정 -- [ ] 포트 확인 +- [ ] heejae 컨테이너 중단 +- [ ] thread_ts 버그 수정 +- [ ] 임시 SLACK_BOT_TOKEN 설정 ### 배포 후 - [ ] 헬스체크 200 - [ ] 스레드 응답 테스트 -- [ ] summarize/digest 제거 확인 - ---- - -## 통합 -- **rb8001**: 메시지 전송 요청 -- **네이버웍스**: 슬랙 브릿지 \ No newline at end of file +- [ ] API에 token 파라미터 추가 (향후) \ No newline at end of file