feat: 완료 사진 HEIC 지원 및 관리함 수정 기능 개선
✨ 새로운 기능: - iPhone HEIC 사진 업로드 지원 (pillow-heif 라이브러리 추가) - 완료 사진 업로드/교체 기능 - 완료 코멘트 수정 기능 - 통합 이슈 수정 모달 (진행 중/완료 대기 공통) 🔧 기술적 개선: - HEIC 파일 자동 감지 및 원본 저장 - Base64 이미지 처리 로직 강화 - 상세한 디버깅 로그 추가 - 프론트엔드 파일 정보 로깅 📝 문서화: - 배포 가이드 (DEPLOYMENT_GUIDE_20251026.md) 추가 - DB 변경사항 로그 업데이트 - 마이그레이션 스크립트 (020_add_management_completion_fields.sql) 🐛 버그 수정: - loadManagementData -> initializeManagement 함수명 통일 - 모달 저장 후 즉시 닫히는 문제 해결 - 422 Unprocessable Entity 오류 해결
This commit is contained in:
@@ -4,6 +4,109 @@
|
||||
|
||||
## 📋 변경사항 목록
|
||||
|
||||
### 2025.10.26 - 관리함 완료 신청 정보 수정 기능 추가
|
||||
|
||||
**🎯 목적**: 관리함에서 완료 사진 업로드/교체 및 완료 코멘트 수정 기능 구현
|
||||
|
||||
#### 📁 파일 변경사항
|
||||
|
||||
**1. 백엔드 스키마 추가**
|
||||
- **파일**: `backend/database/schemas.py`
|
||||
- **변경내용**: `ManagementUpdateRequest` 클래스 추가
|
||||
- **코드**:
|
||||
```python
|
||||
class ManagementUpdateRequest(BaseModel):
|
||||
"""관리함에서 이슈 업데이트 요청"""
|
||||
final_description: Optional[str] = None
|
||||
final_category: Optional[IssueCategory] = None
|
||||
solution: Optional[str] = None
|
||||
responsible_department: Optional[DepartmentType] = None
|
||||
responsible_person: Optional[str] = None
|
||||
expected_completion_date: Optional[str] = None
|
||||
cause_department: Optional[DepartmentType] = None
|
||||
management_comment: Optional[str] = None
|
||||
completion_comment: Optional[str] = None
|
||||
completion_photo: Optional[str] = None # Base64
|
||||
review_status: Optional[ReviewStatus] = None
|
||||
```
|
||||
|
||||
**2. 백엔드 API 개선**
|
||||
- **파일**: `backend/routers/management.py`
|
||||
- **변경내용**: `PUT /api/management/{issue_id}` 엔드포인트에 완료 사진 처리 로직 추가
|
||||
- **코드**:
|
||||
```python
|
||||
if field == 'completion_photo' and value:
|
||||
# 완료 사진 Base64 처리
|
||||
from services.file_service import save_base64_image
|
||||
try:
|
||||
photo_path = save_base64_image(value, "completion_")
|
||||
issue.completion_photo_path = photo_path
|
||||
except Exception as e:
|
||||
print(f"완료 사진 저장 실패: {e}")
|
||||
continue
|
||||
```
|
||||
|
||||
**3. 프론트엔드 통합 모달**
|
||||
- **파일**: `frontend/issues-management.html`
|
||||
- **변경내용**:
|
||||
- 진행 중/완료 대기 상태 모두 동일한 수정 가능한 모달 사용
|
||||
- 완료 사진 업로드/교체 버튼 추가
|
||||
- 완료 코멘트 텍스트 영역 수정 가능
|
||||
- `loadManagementData()` → `initializeManagement()` 함수명 수정
|
||||
|
||||
**4. DB 마이그레이션**
|
||||
- **파일**: `backend/migrations/020_add_management_completion_fields.sql`
|
||||
- **목적**: 완료 신청 관련 컬럼들이 누락된 경우 추가 (이미 존재할 수 있음)
|
||||
|
||||
#### 🚀 배포 시 실행 순서
|
||||
|
||||
```bash
|
||||
# 1. 데이터베이스 백업
|
||||
docker-compose exec postgres pg_dump -U postgres -d m_project > backup_$(date +%Y%m%d_%H%M%S).sql
|
||||
|
||||
# 2. 백엔드 코드 배포
|
||||
git pull origin master
|
||||
docker-compose down
|
||||
docker-compose build backend
|
||||
docker-compose up -d
|
||||
|
||||
# 3. DB 마이그레이션 실행
|
||||
docker-compose exec backend python -c "
|
||||
import sys
|
||||
sys.path.append('/app')
|
||||
import psycopg2
|
||||
import os
|
||||
|
||||
conn = psycopg2.connect(
|
||||
host=os.getenv('DB_HOST', 'postgres'),
|
||||
database=os.getenv('DB_NAME', 'm_project'),
|
||||
user=os.getenv('DB_USER', 'postgres'),
|
||||
password=os.getenv('DB_PASSWORD', 'password')
|
||||
)
|
||||
|
||||
with open('/app/migrations/020_add_management_completion_fields.sql', 'r', encoding='utf-8') as f:
|
||||
migration_sql = f.read()
|
||||
|
||||
with conn.cursor() as cursor:
|
||||
cursor.execute(migration_sql)
|
||||
conn.commit()
|
||||
|
||||
print('✅ 마이그레이션 완료')
|
||||
conn.close()
|
||||
"
|
||||
|
||||
# 4. 배포 후 검증
|
||||
docker-compose logs backend --tail=20
|
||||
docker-compose exec postgres psql -U postgres -d m_project -c "SELECT COUNT(*) FROM migration_log WHERE migration_file = '020_add_management_completion_fields.sql';"
|
||||
```
|
||||
|
||||
#### ⚠️ 주의사항
|
||||
- 완료 신청 관련 컬럼들이 이미 존재할 수 있으므로 마이그레이션 스크립트는 안전하게 작성됨
|
||||
- 브라우저 캐시 문제로 인해 강제 새로고침(Ctrl+Shift+F5) 필요할 수 있음
|
||||
- 422 에러 발생 시 백엔드 재시작 필요
|
||||
|
||||
---
|
||||
|
||||
### 2025.10.26 - 프로젝트별 순번 자동 할당 개선
|
||||
|
||||
**🎯 목적**: 수신함에서 진행 중/완료로 상태 변경 시 프로젝트별 순번이 자동 할당되도록 개선
|
||||
|
||||
Reference in New Issue
Block a user