피드로 돌아가기
Adding Markdown Support End-to-End (Part 7)
Dev.toDev.to
Backend

6단계 계층별 검증 체계를 통한 Markdown 지원 확장 설계

Adding Markdown Support End-to-End (Part 7)

Josh Blair2026년 6월 15일9intermediate

Context

Sift 시스템은 API, 파이프라인, 프론트엔드, 데이터베이스가 각자의 책임 영역을 가진 Separation of Concerns 구조를 채택함. 신규 파일 타입 추가 시 모든 계층의 제약 조건이 일치해야 하는 아키텍처적 특성으로 인해 단순한 확장 이상의 정교한 동기화 작업이 필요했음.

Technical Solution

  • DocumentsFunction 및 DocumentService를 통한 확장자 기반 Pre-signed URL 생성 및 Content-Type 매핑 검증
  • extract_handler.py 내 Dispatch 패턴을 적용하여 Markdown을 UTF-8 텍스트로 처리하는 추출 로직 구현
  • UploadDropzone의 accept prop 설정을 통한 브라우저 수준의 파일 선택 및 드래그 앤 드롭 UX 제어
  • Browser MIME type 불일치로 인한 S3 403 에러 해결을 위해 file.type 대신 명시적 MIME Map 기반 헤더 설정 적용
  • Database CHECK constraint 수정을 통한 데이터 무결성 보장 및 스키마 마이그레이션 수행
  • 단순 .txt 통합 대신 .md 타입을 유지함으로써 향후 Heading 기반 Chunking 전략 수립을 위한 메타데이터 보존

신규 파일 타입 추가 시 체크리스트: - [ ] API Layer: 허용 확장자 리스트 및 MIME Type 매핑 업데이트 - [ ] Pipeline Layer: 파일 타입별 전용 Extractor 분기 로직 추가 - [ ] Frontend Layer: 파일 선택 필터 및 업로드 헤더 매핑 검증 - [ ] DB Layer: 제약 조건(CHECK constraint) 확장 및 마이그레이션 수행 - [ ] Validation: 브라우저별 MIME Type 보고 차이점 확인 및 정규화 처리

원문 읽기