← 메인으로 돌아가기

🗄️ GiftCall 데이터베이스 설계

1:N 구조 + 상세 이력 관리 - 실무 최적화 데이터 모델

📚 목차

📋 설계 개요

완전한 1:N 구조: 하나의 주문에 여러 수신자
📅 설계 완료: 2025년 11월 19일
🎯 현재 상태: 마이그레이션 완료, 운영 준비
📊 테이블 수: 4개 핵심 테이블

전체 구조

gift_orders (1)
    ↓
gift_recipients (N)
    ↓
    ├── recipient_messages (M)
    └── recipient_change_logs (M)

파일 구조

🗄️ 테이블 상세

1️⃣ gift_orders (주문)

선물 주문의 기본 정보

2️⃣ gift_recipients (수신자)

각 수신자의 상세 정보 및 배송 상태

3️⃣ recipient_messages (소통 이력)

수신자와의 모든 소통 기록

4️⃣ recipient_change_logs (변경 이력)

수신자 정보 변경 추적

📊 상태 관리

12단계 상태: 실제 업무 플로우 반영

연락 단계 (1-4)

응답 단계 (5-9)

배송 단계 (10-12)

상태 전환 플로우

PENDING → FIRST_CONTACT → SECOND_CONTACT → THIRD_CONTACT
    ↓
RESPONDED
    ↓
    ├── CONFIRMED → DELIVERED → RECEIVED
    ├── DECLINED
    ├── POSTPONED
    └── UNREACHABLE

🔐 보안 및 암호화

개인정보 보호: Fernet (AES-256) 암호화

암호화 대상 필드

🚨 개인정보 보호법 준수

암호화 구현

# Python 프로퍼티로 자동 암복호화
class GiftRecipient(Base):
    _name = Column("name", Text, nullable=False)
    
    @property
    def name(self) -> str:
        return encryption_manager.decrypt_name(self._name)
    
    @name.setter
    def name(self, value: str):
        self._name = encryption_manager.encrypt_name(value)

# 사용 예시
recipient.name = "홍길동"  # 자동 암호화
print(recipient.name)     # 자동 복호화

성능 최적화

설계 개요
테이블 상세
상태 관리
보안 및 암호화