# rb8001-skill-rag-file Slack 파일 처리 연동 구조 ## 작성일: 2025-09-16 ## 작성자: Claude (51123 서버 관리자) ## 1. 현재 상황 ### 확인된 상태 - **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에서 확인) ### 미구현 상태 - **rb8001**: 파일 수신은 하지만 처리 로직 없음 - slack_handler.py:244에서 `files = event.get("files", [])` 추출만 - context에 파일 정보 포함 후 전달만 함 - **skill-rag-file**: API 엔드포인트만 있고 실제 구현 없음 ## 2. 실제 메시지 플로우 (확인됨) ### 현재 Slack 메시지 처리 경로 ``` Slack Event API ↓ 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 파일 처리 현황 (51124) ### 현재 코드 위치 및 상태 - **파일 추출**: rb8001/app/router/slack_handler.py:244 ```python files = event.get("files", []) # 파일 추출만 함 ``` - **context 전달**: 265행에서 context에 files 포함 - **처리 로직**: 없음 (파일 다운로드, skill-rag-file 호출 코드 없음) ### 수정 필요 위치 - **rb8001/app/router/slack_handler.py**: 244행 이후 파일 처리 추가 - skill-rag-file:8508 호출 구현 필요 - bot_token 활용한 Slack 파일 다운로드 필요 ## 4. skill-rag-file 현황 (51124) ### API 엔드포인트 (구현은 되어 있으나 기능 미완성) - POST /api/upload: 파일 업로드 - GET /api/search: 검색 - GET /api/search/collections: 컬렉션 목록 - GET /healthz: 헬스체크 ### 네트워크 연결 상태 - rb8001 → skill-rag-file:8508: 연결 가능 (확인됨) - 컨테이너 네트워크: host 모드 사용 ## 5. 데이터베이스 상태 (51123 PostgreSQL) ### team_document 테이블 (생성 완료) ```sql -- 실제 생성된 테이블 구조 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 -- 인덱스 idx_team_doc_hash UNIQUE (team_id, file_hash) ``` ## 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 저장)