DOCS/journey/troubleshooting/250917_happybell80_skill-rag-file_파일처리_실패.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 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/*)
2025-11-17 14:06:05 +09:00

1.9 KiB

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