✨ 새로운 기능: - iPhone HEIC 사진 업로드 지원 (pillow-heif 라이브러리 추가) - 완료 사진 업로드/교체 기능 - 완료 코멘트 수정 기능 - 통합 이슈 수정 모달 (진행 중/완료 대기 공통) 🔧 기술적 개선: - HEIC 파일 자동 감지 및 원본 저장 - Base64 이미지 처리 로직 강화 - 상세한 디버깅 로그 추가 - 프론트엔드 파일 정보 로깅 📝 문서화: - 배포 가이드 (DEPLOYMENT_GUIDE_20251026.md) 추가 - DB 변경사항 로그 업데이트 - 마이그레이션 스크립트 (020_add_management_completion_fields.sql) 🐛 버그 수정: - loadManagementData -> initializeManagement 함수명 통일 - 모달 저장 후 즉시 닫히는 문제 해결 - 422 Unprocessable Entity 오류 해결
92 lines
3.6 KiB
PL/PgSQL
92 lines
3.6 KiB
PL/PgSQL
-- 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;
|