# skill-rag-file 파일 처리 실패 문제

## 배경
- **날짜**: 2025-09-17
- **작성자**: happybell80
- **문제**: 10개 파일 중 4개만 정상 처리

## 문제 상황

### 처리 결과 (01:44-01:57)
- ✅ 성공 (4개): MD, CSV, 일부 PDF
- ❌ 실패 (6개): HWP, JPG, 긴 파일명 PDF

### 주요 오류

1. **파일명 길이 초과**
   - 파일: "지능형 시스템의 장기 기억 관리.pdf"
   - 원본: 97바이트 → URL 인코딩: 283바이트
   - 제한: 255바이트 (ext4 파일시스템)
   - 코드: `storage_path = f"{file_hash}_{file.filename}"`

2. **파일 형식 미지원**
   - JPG: "File type .jpg not supported"
   - HWP: 처리되지만 빈 응답

3. **중복 파일**
   - UniqueViolationError
   - file_hash 중복 체크

## 원인 분석

- **파일명**: URL 인코딩으로 한글 파일명 3배 증가
- **DB 스키마**: `filename = Column(String(255))`
- **저장 경로**: 해시+원본명으로 더 길어짐

## 해결 방안

1. 파일 저장시 해시명만 사용
2. 원본 파일명은 DB에만 저장
3. 이미지 파일 처리 로직 추가
4. HWP → 텍스트 변환 라이브러리 필요

## 적용된 조치 (2025-10-21)
- 업로드 시 파일명 정규화 적용: URL 퍼센트 인코딩 해제 → 경로 제거 → 200자 이내 절단(확장자 보존) → 초과 시 `doc_id.ext` 대체
  - 코드: `/home/admin/ivada_project/skill-rag-file/app/api/upload.py`
- rb8001 LangGraph 파이프라인에서 업로드 500(StringDataRightTruncation) 감지 시 안전 파일명으로 1회 재시도
  - 코드: `/home/admin/ivada_project/rb8001/app/pipelines/langgraph_document.py`

## 결과
- 한글/장문 파일명으로 인한 `VARCHAR(255)` 초과 오류 재현 방지
- Slack DM에서 PDF 첨부 시 최초 응답부터 문서 스니펫 기반 분석 가능 (동기 대기)

## 교훈
- 파일시스템 제한 고려 필수
- 한글 파일명 URL 인코딩 영향 검토
- 다양한 파일 형식 테스트 필요
