Skip to content

[BE] 첨부형 전처리기 배포 시 리소스 파일 자동 다운로드 (GenOS #9078) #175

@yspaik

Description

@yspaik

프로젝트

삼성증권

사용자

관리자

버그의 증상

첨부형 전처리기 배포 시 리소스 파일 접근 실패

버그의 증상 발생 빈도

항상

적용된 버전 혹은 실험한 위치

Genos 1.8.4

전처리 입력 파일

No response

증상을 확인할 수 있는 step

관련 이슈

현상

doc_parser 도커 이미지로 배포된 전처리기 Pod(preprocessor-{id})의 파일시스템에 /app/resource 폴더가 생성되지 않고, 관리자 페이지에서 업로드한 리소스 파일(jpg·json·png·xlsx·py·html 등)이 Pod 내부로 동기화되지 않는다.

재현

  1. 관리자(GenPortal)에서 변경된 기본 전처리기 코드로 전처리기 생성
  2. 전처리기 리소스 파일 업로드 (예: 전처리기 상세 > 리소스 파일 목록에 파일 다수 업로드)
  3. doc_parser 도커 이미지로 전처리기 배포
  4. 배포된 Pod에서 ls -al ~ 또는 ls -al /app/resource
    resource 폴더 부재, 다운로드된 파일 없음

기대 동작

  • 전처리기 Pod 기동 시 업로드된 리소스 파일이 /app/resource 하위에 자동 다운로드되어 전처리 코드에서 참조 가능해야 함.

해결 방향

GenOS 동일 문제를 container-services/workflow·mcp-server가 이미 FileLock + MinIO list_objects/fget_object 패턴으로 해결함. 동일 패턴을 doc_parser 전처리기에 이식한다.

변경 파일

  • src/common/settings.pyPREPROCESSOR_ID 필드 + MinioConfig 추가
  • src/util/minio_resource.py — 신규(FileLock + download_resource_files)
  • src/util/__init__.py — 신규
  • src/main.pyfrom preprocessor import DocumentProcessor 이전에 download_resource_files(bucket_name='preprocessor', resource_id=settings.PREPROCESSOR_ID, path='/app/resource') 호출

사전 조건(이미 충족)

  • admin-api가 Pod envPREPROCESSOR_ID 주입
  • k8s deployment template에 llmops-minio-client-configmap·llmops-minio-client-secret envFrom 연결됨
  • minio==7.2.20 이미 pyproject.toml에 포함

검증

  • 이미지 빌드·재배포 후 Pod 내 ls -al /app/resource에 업로드 파일이 모두 존재
  • /var/log/supervisor/gunicorn_stdout.logAcquired lock·Downloading [i/N]·Completed! 로그 출력
  • gunicorn 멀티 워커(5개) 환경에서 중복 다운로드 없이 [SKIP …] already exists 정상 동작
  • /run 엔드포인트 회귀 확인

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions