- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동 - book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서) - 빈 폴더 제거 (journey/assets/*)
170 lines
4.9 KiB
Markdown
170 lines
4.9 KiB
Markdown
# skill-slack 배포 지침서
|
|
|
|
## 문제 (✅ 해결 완료)
|
|
skill-slack의 역할을 로빙 철학(스킬=도구, 판단 금지)에 맞게 재정의하고 51124 서버에 배포
|
|
|
|
## 배포 정보
|
|
- **포트**: 8502
|
|
- **서버**: 51124 (192.168.219.52)
|
|
- **경로**: /home/admin/ivada_project/skill-slack
|
|
- **설정파일**: skill-slack/docker-compose.yml
|
|
|
|
---
|
|
|
|
## 배포 전제조건
|
|
|
|
### 현재 상태
|
|
- **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/update` | 유지 | 메시지 업데이트 |
|
|
| `/api/v1/summarize` | **삭제** | LLM 호출 (로빙 역할) |
|
|
| `/api/v1/digest` | **삭제** | 자체 처리 (로빙 역할) |
|
|
|
|
---
|
|
|
|
## 환경변수 설정
|
|
|
|
### 현재: 환경변수 방식 (임시)
|
|
- **SLACK_BOT_TOKEN**: 환경변수로 설정
|
|
- **SERVICE_API_KEY**: 51124 서버 .env에서 확인
|
|
|
|
### ✅ 구현 완료: API 요청 시 토큰 전달
|
|
- **완료일**: 2025-01-09
|
|
- **구현 내용**:
|
|
- SlackMessageRequest에 token 필드 추가
|
|
- 요청 토큰 우선, 없으면 환경변수 사용
|
|
- 멀티 워크스페이스 동시 지원
|
|
- 요청 형식:
|
|
```json
|
|
{
|
|
"channel": "C1234567",
|
|
"text": "메시지",
|
|
"token": "xoxb-...", // 워크스페이스별 토큰
|
|
"thread_ts": "1234567890.123456"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 배포 절차
|
|
|
|
### 계정 전환 (heejae → admin)
|
|
```bash
|
|
# 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 origin main
|
|
sudo docker compose down
|
|
sudo docker compose up -d --build
|
|
|
|
# 3. 로그 확인
|
|
sudo docker logs skill-slack --tail=50 -f
|
|
```
|
|
|
|
### 네트워크 모드 변경
|
|
- 파일: `/home/admin/ivada_project/skill-slack/docker-compose.yml` 32행
|
|
- 현재: `network_mode: host`
|
|
- 권장: bridge 모드로 변경 (포트 충돌 방지, 보안 격리)
|
|
- 로그 수집: Fluent-bit는 파일 기반이므로 영향 없음
|
|
|
|
---
|
|
|
|
## 주요 이슈
|
|
|
|
### 긴급
|
|
- **thread_ts 미작동**: chat_postMessage 호출 시 thread_ts 미전달
|
|
- **DB 접근 문제**: skill-slack이 DB 접근하면 철학 위반
|
|
|
|
### 수정 필요
|
|
- **토큰 전달 방식**: 환경변수 → API 요청 시 전달
|
|
- **네트워크**: host → bridge
|
|
|
|
---
|
|
|
|
## 테스트
|
|
|
|
### 테스트 명령 (현재: 환경변수 토큰)
|
|
```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: {SERVICE_API_KEY}" \
|
|
-H "Content-Type: application/json" \
|
|
-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
|
|
# Company-X 워크스페이스 테스트
|
|
curl -X POST http://localhost:8502/api/v1/send \
|
|
-H "X-API-Key: {SERVICE_API_KEY}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"channel": "C09C98KB933", "text": "Company-X 테스트", "token": "xoxb-9417..."}'
|
|
|
|
# 로빙팀 워크스페이스 테스트
|
|
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": "로빙팀 테스트", "token": "xoxb-9073..."}'
|
|
```
|
|
|
|
---
|
|
|
|
## 체크리스트
|
|
|
|
### 배포 전 (순서대로)
|
|
1. [x] heejae 컨테이너 중단 (포트 8502 확보)
|
|
2. [x] thread_ts 버그 수정 (완료: app/api/endpoints/messages.py:33)
|
|
3. [x] 환경변수 설정 (.env 파일 생성 완료)
|
|
|
|
### 배포 후
|
|
- [x] 헬스체크 200 확인
|
|
- [x] 스레드 응답 테스트
|
|
- [x] API에 token 파라미터 추가 (2025-01-09 완료)
|
|
|
|
### 로빙 철학 달성
|
|
- [x] 스킬은 무상태 도구로 동작
|
|
- [x] DB 접근 없음 (토큰 저장 안함)
|
|
- [x] 요청마다 필요 정보 전달
|
|
- [x] 멀티 워크스페이스 동시 지원 |