# 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 인코딩 영향 검토 - 다양한 파일 형식 테스트 필요