docs: rb8001-skill-rag-file 연동 구조 정확한 정보로 업데이트

- 확인된 사실만 기록 (테이블 생성됨, 디렉터리 존재, bot_token 보유)
- 실제 메시지 플로우 경로 정확히 기록
- rb8001 파일 처리 코드 위치 명시 (slack_handler.py:244)
- 미구현 부분 명확히 표시
This commit is contained in:
happybell80 2025-09-16 00:32:13 +09:00
parent d2e7299686
commit 0a61f6b650

View File

@ -4,79 +4,101 @@
## 작성자: Claude (51123 서버 관리자)
## 1. 현재 상황
- skill-rag-file: 구조만 생성, 미구현 상태
- rb8001: Slack 메시지 수신 중 (파일 처리 로직 없음)
- team_document 테이블: 스펙만 존재, 실제 미생성
## 2. 구현 필요 플로우
### 확인된 상태
- **team_document 테이블**: 생성 완료 (51123 PostgreSQL)
- processing_status, chunk_count, mime_type, file_size 컬럼 포함
- idx_team_doc_hash 유니크 인덱스 생성됨
- **파일 저장 디렉터리**: /mnt/hdd/data/documents/ 생성 완료
- **slack_workspace**: 2개 팀 등록, bot_token 보유
- Robeing (T0925SXPS4D)
- Company-X Team (T09C98KB933)
- **Slack 스코프**: files:read 포함 (설치 URL에서 확인)
### Slack 파일 수신 → rb8001 → skill-rag-file
### 미구현 상태
- **rb8001**: 파일 수신은 하지만 처리 로직 없음
- slack_handler.py:244에서 `files = event.get("files", [])` 추출만
- context에 파일 정보 포함 후 전달만 함
- **skill-rag-file**: API 엔드포인트만 있고 실제 구현 없음
## 2. 실제 메시지 플로우 (확인됨)
### 현재 Slack 메시지 처리 경로
```
Slack 파일 업로드
↓ (Event API)
rb8001:8001 /slack/events
↓ (파일 타입 확인)
rb8001 file_handler
↓ (HTTP POST)
skill-rag-file:8508 /upload
Slack Event API
파일 저장 + DB 기록 + ChromaDB 벡터화
```
nginx (51123)
robeing-gateway (51123)
- team_id에서 bot_token 조회 (slack_workspace 테이블)
- Slack user ID → UUID 변환
- 헤더 추가: X-Slack-Bot-Token, X-User-Id
rb8001:8001 (51124)
/api/slack/events
- slack_endpoint.py → slack_handler.py
- handle_slack_events()에서 파일 추출
- background_process_request()로 비동기 처리
brain_service/llm_service (파일 처리 없이 텍스트만 처리)
## 3. rb8001 수정 필요사항
## 3. rb8001 파일 처리 현황 (51124)
### 파일 이벤트 핸들러 추가
- 위치: rb8001/app/api/slack_events.py
- Slack file_shared 이벤트 처리
- files:read 스코프 확인 필요
### 현재 코드 위치 및 상태
- **파일 추출**: rb8001/app/router/slack_handler.py:244
```python
files = event.get("files", []) # 파일 추출만 함
```
- **context 전달**: 265행에서 context에 files 포함
- **처리 로직**: 없음 (파일 다운로드, skill-rag-file 호출 코드 없음)
### skill-rag-file 호출 함수
```python
# rb8001/app/services/rag_service.py (신규)
async def upload_to_rag(file_url, filename, team_id, user_id):
response = await httpx.post(
"http://localhost:8508/upload",
json={
"file_url": file_url,
"filename": filename,
"team_id": team_id,
"uploaded_by": user_id
}
)
```
### 수정 필요 위치
- **rb8001/app/router/slack_handler.py**: 244행 이후 파일 처리 추가
- skill-rag-file:8508 호출 구현 필요
- bot_token 활용한 Slack 파일 다운로드 필요
## 4. skill-rag-file 구현 필요사항
## 4. skill-rag-file 현황 (51124)
### 엔드포인트
- POST /upload: 파일 수신 및 처리
- POST /search: 벡터 검색
### API 엔드포인트 (구현은 되어 있으나 기능 미완성)
- POST /api/upload: 파일 업로드
- GET /api/search: 검색
- GET /api/search/collections: 컬렉션 목록
- GET /healthz: 헬스체크
### 주요 기능
- Slack 파일 다운로드 (bot_token 사용)
- 텍스트 추출 (PyPDF2, python-docx)
- PostgreSQL team_document 저장
- ChromaDB rb8001_{team_id}_documents 벡터화
### 네트워크 연결 상태
- rb8001 → skill-rag-file:8508: 연결 가능 (확인됨)
- 컨테이너 네트워크: host 모드 사용
## 5. 테이블 생성 (51123)
## 5. 데이터베이스 상태 (51123 PostgreSQL)
### team_document 테이블 (생성 완료)
```sql
CREATE TABLE team_document (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
team_id UUID NOT NULL REFERENCES team(id),
filename VARCHAR(255) NOT NULL,
file_hash VARCHAR(64) NOT NULL,
storage_path VARCHAR(500),
text_content TEXT,
metadata JSONB DEFAULT '{}',
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
);
-- 실제 생성된 테이블 구조
id UUID PRIMARY KEY DEFAULT gen_random_uuid()
team_id UUID NOT NULL REFERENCES team(id)
filename VARCHAR(255) NOT NULL
file_hash VARCHAR(64) NOT NULL
file_size BIGINT
mime_type VARCHAR(100)
storage_path TEXT NOT NULL
text_content TEXT
chunk_count INTEGER DEFAULT 0
processing_status VARCHAR(20) DEFAULT 'pending'
metadata JSONB DEFAULT '{}'
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
CREATE UNIQUE INDEX idx_team_doc_hash ON team_document(team_id, file_hash);
-- 인덱스
idx_team_doc_hash UNIQUE (team_id, file_hash)
```
## 6. 확인 사항
- [ ] rb8001 Slack 앱 files:read 스코프
- [ ] skill-rag-file Git 레포 실제 구현
- [ ] 51124 서버 Docker 컨테이너 배포
- [ ] /mnt/51123data/documents/ 마운트 확인
## 6. 확인 완료 사항
- ✅ team_document 테이블 생성됨
- ✅ /mnt/hdd/data/documents/ 디렉터리 생성됨
- ✅ Slack bot_token 2개 팀 보유 (Robeing, Company-X Team)
- ✅ files:read 스코프 포함 (설치 URL에서 확인)
- ✅ rb8001 → skill-rag-file:8508 네트워크 연결 가능
## 7. 로컬 개발자 작업 필요
- rb8001/app/router/slack_handler.py:244 이후 파일 처리 코드 추가
- skill-rag-file 전체 구현 (Slack 파일 다운로드, 텍스트 추출, DB 저장)