- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동 - book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서) - 빈 폴더 제거 (journey/assets/*)
1.9 KiB
1.9 KiB
skill-rag-file 파일 처리 실패 문제
배경
- 날짜: 2025-09-17
- 작성자: happybell80
- 문제: 10개 파일 중 4개만 정상 처리
문제 상황
처리 결과 (01:44-01:57)
- ✅ 성공 (4개): MD, CSV, 일부 PDF
- ❌ 실패 (6개): HWP, JPG, 긴 파일명 PDF
주요 오류
-
파일명 길이 초과
- 파일: "지능형 시스템의 장기 기억 관리.pdf"
- 원본: 97바이트 → URL 인코딩: 283바이트
- 제한: 255바이트 (ext4 파일시스템)
- 코드:
storage_path = f"{file_hash}_{file.filename}"
-
파일 형식 미지원
- JPG: "File type .jpg not supported"
- HWP: 처리되지만 빈 응답
-
중복 파일
- UniqueViolationError
- file_hash 중복 체크
원인 분석
- 파일명: URL 인코딩으로 한글 파일명 3배 증가
- DB 스키마:
filename = Column(String(255)) - 저장 경로: 해시+원본명으로 더 길어짐
해결 방안
- 파일 저장시 해시명만 사용
- 원본 파일명은 DB에만 저장
- 이미지 파일 처리 로직 추가
- 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 인코딩 영향 검토
- 다양한 파일 형식 테스트 필요