diff --git a/troubleshooting/250919_skill_slack_deployment_plan.md b/troubleshooting/250919_skill_slack_deployment_plan.md index abe8b97..65b5220 100644 --- a/troubleshooting/250919_skill_slack_deployment_plan.md +++ b/troubleshooting/250919_skill_slack_deployment_plan.md @@ -7,6 +7,7 @@ skill-slack의 역할을 로빙 철학(스킬=도구, 판단 금지)에 맞게 - **포트**: 8502 - **서버**: 51124 (192.168.219.52) - **경로**: /home/admin/ivada_project/skill-slack +- **설정파일**: skill-slack/docker-compose.yml --- @@ -52,12 +53,13 @@ skill-slack의 역할을 로빙 철학(스킬=도구, 판단 금지)에 맞게 ## 환경변수 설정 -### 기본 토큰 (임시) +### 현재: 환경변수 방식 (임시) - **SLACK_BOT_TOKEN**: 환경변수로 설정 -- **SERVICE_API_KEY**: API 인증용 +- **SERVICE_API_KEY**: 51124 서버 .env에서 확인 -### 올바른 방식 -- rb8001이 요청 시마다 토큰 전달: +### 목표: API 요청 시 전달 (향후) +- rb8001이 main_db의 slack_workspace 테이블에서 토큰 조회 +- 요청 시마다 토큰 전달: ```json { "channel": "C1234567", @@ -73,17 +75,26 @@ skill-slack의 역할을 로빙 철학(스킬=도구, 판단 금지)에 맞게 ### 계정 전환 (heejae → admin) ```bash -# 51124 서버에서 -docker stop skill-slack # heejae 컨테이너 중단 +# 51124 서버에서 실행 +# 1. heejae 컨테이너 중단 +sudo docker stop skill-slack || echo "Already stopped" +sudo docker rm skill-slack || echo "Already removed" + +# 2. admin 계정으로 배포 cd /home/admin/ivada_project/skill-slack -git pull -docker compose up -d --build -docker logs skill-slack --tail=50 +git pull origin main +sudo docker compose down +sudo docker compose up -d --build + +# 3. 로그 확인 +sudo docker logs skill-slack --tail=50 -f ``` ### 네트워크 모드 변경 -현재: `network_mode: host` (docker-compose.yml 32행) -권장: bridge 모드로 변경 +- 파일: `/home/admin/ivada_project/skill-slack/docker-compose.yml` 32행 +- 현재: `network_mode: host` +- 권장: bridge 모드로 변경 (포트 충돌 방지, 보안 격리) +- 로그 수집: Fluent-bit는 파일 기반이므로 영향 없음 --- @@ -101,23 +112,29 @@ docker logs skill-slack --tail=50 ## 테스트 -### 테스트 명령 (현재) +### 테스트 명령 (현재: 환경변수 토큰) ```bash # 헬스체크 curl -f http://localhost:8502/health -# 메시지 전송 +# 메시지 전송 (API_KEY는 .env의 SERVICE_API_KEY) curl -X POST http://localhost:8502/api/v1/send \ - -H "X-API-Key: {API_KEY}" \ + -H "X-API-Key: {SERVICE_API_KEY}" \ -H "Content-Type: application/json" \ - -d '{"channel": "C1234567", "text": "테스트"}' + -d '{"channel": "C07V9F3V21V", "text": "skill-slack 배포 테스트"}' + +# 스레드 응답 테스트 +curl -X POST http://localhost:8502/api/v1/send \ + -H "X-API-Key: {SERVICE_API_KEY}" \ + -H "Content-Type: application/json" \ + -d '{"channel": "C07V9F3V21V", "text": "스레드 응답 테스트", "thread_ts": "1234567890.123456"}' ``` -### 테스트 명령 (개선 후) +### 테스트 명령 (향후: 요청별 토큰) ```bash # rb8001이 토큰과 함께 요청 curl -X POST http://localhost:8502/api/v1/send \ - -H "X-API-Key: {API_KEY}" \ + -H "X-API-Key: {SERVICE_API_KEY}" \ -H "Content-Type: application/json" \ -d '{"channel": "C1234567", "text": "테스트", "token": "xoxb-..."}' ``` @@ -126,12 +143,12 @@ curl -X POST http://localhost:8502/api/v1/send \ ## 체크리스트 -### 배포 전 -- [ ] heejae 컨테이너 중단 -- [ ] thread_ts 버그 수정 -- [ ] 임시 SLACK_BOT_TOKEN 설정 +### 배포 전 (순서대로) +1. [x] heejae 컨테이너 중단 (포트 8502 확보) +2. [x] thread_ts 버그 수정 (완료: app/api/endpoints/messages.py:33) +3. [x] 환경변수 설정 (.env 파일 생성 완료) ### 배포 후 -- [ ] 헬스체크 200 +- [ ] 헬스체크 200 확인 - [ ] 스레드 응답 테스트 -- [ ] API에 token 파라미터 추가 (향후) \ No newline at end of file +- [ ] API에 token 파라미터 추가 (향후 개선사항) \ No newline at end of file