fix(tkqc): iPhone HEIC 업로드 실패 → ImageMagick fallback 추가

증상: 사용자가 iPhone HEIC 사진을 관리함에서 업로드하면 400 Bad Request.
로그:
  ⚠️ pillow_heif 직접 처리 실패: Metadata not correctly assigned to image
   HEIF 처리도 실패: cannot identify image file

원인: pillow_heif 가 특정 iPhone 이 생성한 HEIC 의 메타데이터를 처리 못함.
libheif 를 직접 사용하는 ImageMagick 이 더 범용적이라 system2-report/imageUploadService.js
와 동일한 패턴으로 fallback 추가.

변경:
- Dockerfile: imagemagick + libheif1 apt-get 추가 + HEIC policy.xml 해제
- file_service.py: pillow_heif/PIL 실패 시 subprocess 로 magick/convert 호출해서
  임시 파일로 JPEG 변환 후 다시 PIL 로 open

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-09 13:51:24 +09:00
parent 56f626911a
commit bf0d7fd87a
2 changed files with 47 additions and 5 deletions

View File

@@ -2,11 +2,16 @@ FROM python:3.11-slim
WORKDIR /app
# 시스템 패키지 설치 (gosu: entrypoint 에서 root→appuser 강등용)
# 시스템 패키지 설치
# - gosu: entrypoint 에서 root→appuser 강등용
# - imagemagick + libheif: HEIC(iPhone) 등 pillow_heif 가 처리 못하는 이미지 fallback (2026-04-09)
RUN apt-get update && apt-get install -y \
gcc \
gosu \
&& rm -rf /var/lib/apt/lists/*
imagemagick \
libheif1 \
&& rm -rf /var/lib/apt/lists/* \
&& sed -i 's|<policy domain="coder" rights="none" pattern="HEIC" />|<policy domain="coder" rights="read\|write" pattern="HEIC" />|' /etc/ImageMagick-6/policy.xml 2>/dev/null || true
# Python 의존성 설치
COPY requirements.txt .