DOCS/troubleshooting/250916_rb8001_skill-rag-file_연동_구조.md
happybell80 0a61f6b650 docs: rb8001-skill-rag-file 연동 구조 정확한 정보로 업데이트
- 확인된 사실만 기록 (테이블 생성됨, 디렉터리 존재, bot_token 보유)
- 실제 메시지 플로우 경로 정확히 기록
- rb8001 파일 처리 코드 위치 명시 (slack_handler.py:244)
- 미구현 부분 명확히 표시
2025-09-16 00:32:13 +09:00

3.6 KiB

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 테이블 (생성 완료)

-- 실제 생성된 테이블 구조
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 저장)