Files
M-Project/DEPLOYMENT_GUIDE_20251026.md
Hyungi Ahn e7b51f80a0 feat: 완료 사진 HEIC 지원 및 관리함 수정 기능 개선
 새로운 기능:
- iPhone HEIC 사진 업로드 지원 (pillow-heif 라이브러리 추가)
- 완료 사진 업로드/교체 기능
- 완료 코멘트 수정 기능
- 통합 이슈 수정 모달 (진행 중/완료 대기 공통)

🔧 기술적 개선:
- HEIC 파일 자동 감지 및 원본 저장
- Base64 이미지 처리 로직 강화
- 상세한 디버깅 로그 추가
- 프론트엔드 파일 정보 로깅

📝 문서화:
- 배포 가이드 (DEPLOYMENT_GUIDE_20251026.md) 추가
- DB 변경사항 로그 업데이트
- 마이그레이션 스크립트 (020_add_management_completion_fields.sql)

🐛 버그 수정:
- loadManagementData -> initializeManagement 함수명 통일
- 모달 저장 후 즉시 닫히는 문제 해결
- 422 Unprocessable Entity 오류 해결
2025-10-26 14:18:30 +09:00

192 lines
5.3 KiB
Markdown

# 배포 가이드 - 2025.10.26 업데이트
## 📋 **변경사항 요약**
### 🎯 **주요 기능 개선**
- **관리함 완료 신청 정보 수정 기능** 추가
- **진행 중/완료 대기 상태 통합 모달** 구현
- **완료 사진 업로드/교체** 기능
- **완료 코멘트 수정** 기능
---
## 🗄️ **데이터베이스 변경사항**
### **새로운 마이그레이션**
- `020_add_management_completion_fields.sql`
### **추가된 컬럼들** (이미 존재할 수 있음)
```sql
-- issues 테이블에 추가된 컬럼들
completion_photo_path VARCHAR(500) -- 완료 사진 경로
completion_comment TEXT -- 완료 코멘트
completion_requested_at TIMESTAMP WITH TIME ZONE -- 완료 신청 시간
completion_requested_by_id INTEGER REFERENCES users(id) -- 완료 신청자
```
---
## 🔧 **백엔드 변경사항**
### **1. 스키마 업데이트**
- `backend/database/schemas.py`
- `ManagementUpdateRequest` 클래스 추가
- `completion_photo`, `completion_comment` 필드 지원
### **2. API 엔드포인트 개선**
- `backend/routers/management.py`
- `PUT /api/management/{issue_id}` 엔드포인트 개선
- Base64 이미지 처리 로직 추가
- 날짜 필드 처리 개선
---
## 🎨 **프론트엔드 변경사항**
### **1. 통합 모달 구현**
- `frontend/issues-management.html`
- `openIssueEditModal()` 함수 개선
- 완료 신청 정보 섹션 항상 표시
- 파일 업로드 UI 개선
### **2. 버튼 연결 통합**
- 진행 중 "완료처리" → `confirmCompletion()`
- 완료 대기 "최종확인" → `confirmCompletion()`
- 모든 버튼이 동일한 수정 가능한 모달 사용
### **3. 함수명 수정**
- `loadManagementData()``initializeManagement()`
---
## 🚀 **배포 절차**
### **1. 사전 준비**
```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
git pull origin master
```
### **2. 백엔드 배포**
```bash
# 1. Docker 컨테이너 중지
docker-compose down
# 2. 이미지 재빌드
docker-compose build backend
# 3. 컨테이너 시작
docker-compose up -d
# 4. 마이그레이션 실행
docker-compose exec backend python -c "
import sys
sys.path.append('/app')
from database.database import get_db
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()
"
```
### **3. 프론트엔드 배포**
```bash
# 브라우저 캐시 무효화를 위한 버전 업데이트 (필요시)
# frontend/issues-management.html의 캐시버스터 확인
```
### **4. 배포 후 검증**
```bash
# 1. 백엔드 상태 확인
docker-compose logs backend --tail=20
# 2. 데이터베이스 연결 확인
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';"
# 3. 새로운 컬럼 확인
docker-compose exec postgres psql -U postgres -d m_project -c "\\d issues" | grep completion
```
---
## ✅ **기능 테스트 체크리스트**
### **관리함 페이지 테스트**
- [ ] 진행 중 상태에서 "완료처리" 버튼 클릭
- [ ] 완료 대기 상태에서 "최종확인" 버튼 클릭
- [ ] 통합 모달이 열리는지 확인
- [ ] 완료 사진 업로드/교체 버튼 작동 확인
- [ ] 완료 코멘트 텍스트 영역 수정 가능 확인
- [ ] "저장" 버튼으로 수정사항 저장 확인
- [ ] "최종확인" 버튼으로 완료 처리 확인
- [ ] 422 에러 없이 정상 저장 확인
---
## 🔍 **트러블슈팅**
### **일반적인 문제들**
#### **1. 422 Unprocessable Entity 에러**
```bash
# 원인: 백엔드 스키마 불일치
# 해결: 백엔드 재시작
docker-compose restart backend
```
#### **2. ReferenceError: loadManagementData**
```bash
# 원인: 함수명 변경 미적용
# 해결: 브라우저 강제 새로고침 (Ctrl+Shift+F5)
```
#### **3. 완료 사진 업로드 실패**
```bash
# 원인: 파일 서비스 문제
# 해결: uploads 디렉토리 권한 확인
docker-compose exec backend ls -la /uploads/
```
#### **4. 마이그레이션 실패**
```bash
# 마이그레이션 상태 확인
docker-compose exec postgres psql -U postgres -d m_project -c "SELECT * FROM migration_log ORDER BY started_at DESC LIMIT 5;"
# 실패한 마이그레이션 재실행
docker-compose exec postgres psql -U postgres -d m_project -c "DELETE FROM migration_log WHERE migration_file = '020_add_management_completion_fields.sql' AND status = 'failed';"
```
---
## 📞 **지원 연락처**
- 개발자: [개발자 연락처]
- 배포 담당자: [배포 담당자 연락처]
---
**⚠️ 주의사항:**
1. 반드시 데이터베이스 백업 후 배포 진행
2. 마이그레이션 실행 전 백엔드 로그 확인
3. 배포 후 기능 테스트 필수 수행
4. 문제 발생 시 즉시 롤백 준비