Files
M-Project/backend/migrations/020_add_management_completion_fields.sql
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

92 lines
3.6 KiB
PL/PgSQL
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 020_add_management_completion_fields.sql
-- 관리함 완료 신청 정보 필드 추가
-- 작성일: 2025-10-26
-- 목적: 완료 사진 및 코멘트 수정 기능 지원
BEGIN;
-- 마이그레이션 로그 확인
DO $$
BEGIN
-- 이미 실행된 마이그레이션인지 확인
IF EXISTS (
SELECT 1 FROM migration_log
WHERE migration_file = '020_add_management_completion_fields.sql'
AND status = 'completed'
) THEN
RAISE NOTICE '마이그레이션이 이미 실행되었습니다: 020_add_management_completion_fields.sql';
RETURN;
END IF;
-- 마이그레이션 시작 로그
INSERT INTO migration_log (migration_file, status, started_at, notes)
VALUES ('020_add_management_completion_fields.sql', 'running', NOW(),
'관리함 완료 신청 정보 필드 추가 - completion_photo, completion_comment 수정 기능');
-- completion_photo_path 컬럼이 없으면 추가 (이미 있을 수 있음)
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'issues' AND column_name = 'completion_photo_path'
) THEN
ALTER TABLE issues ADD COLUMN completion_photo_path VARCHAR(500);
RAISE NOTICE '✅ completion_photo_path 컬럼 추가됨';
ELSE
RAISE NOTICE ' completion_photo_path 컬럼이 이미 존재함';
END IF;
-- completion_comment 컬럼이 없으면 추가 (이미 있을 수 있음)
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'issues' AND column_name = 'completion_comment'
) THEN
ALTER TABLE issues ADD COLUMN completion_comment TEXT;
RAISE NOTICE '✅ completion_comment 컬럼 추가됨';
ELSE
RAISE NOTICE ' completion_comment 컬럼이 이미 존재함';
END IF;
-- completion_requested_at 컬럼이 없으면 추가 (이미 있을 수 있음)
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'issues' AND column_name = 'completion_requested_at'
) THEN
ALTER TABLE issues ADD COLUMN completion_requested_at TIMESTAMP WITH TIME ZONE;
RAISE NOTICE '✅ completion_requested_at 컬럼 추가됨';
ELSE
RAISE NOTICE ' completion_requested_at 컬럼이 이미 존재함';
END IF;
-- completion_requested_by_id 컬럼이 없으면 추가 (이미 있을 수 있음)
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'issues' AND column_name = 'completion_requested_by_id'
) THEN
ALTER TABLE issues ADD COLUMN completion_requested_by_id INTEGER REFERENCES users(id);
RAISE NOTICE '✅ completion_requested_by_id 컬럼 추가됨';
ELSE
RAISE NOTICE ' completion_requested_by_id 컬럼이 이미 존재함';
END IF;
-- 마이그레이션 완료 로그
UPDATE migration_log
SET status = 'completed', completed_at = NOW(),
notes = notes || ' - 완료: 모든 필요한 컬럼이 추가되었습니다.'
WHERE migration_file = '020_add_management_completion_fields.sql'
AND status = 'running';
RAISE NOTICE '🎉 마이그레이션 완료: 020_add_management_completion_fields.sql';
EXCEPTION
WHEN OTHERS THEN
-- 에러 발생 시 로그 업데이트
UPDATE migration_log
SET status = 'failed', completed_at = NOW(),
notes = notes || ' - 실패: ' || SQLERRM
WHERE migration_file = '020_add_management_completion_fields.sql'
AND status = 'running';
RAISE EXCEPTION '❌ 마이그레이션 실패: %', SQLERRM;
END $$;
COMMIT;