-- 014_complete_reset_design.sql
-- 목적: 벤더사-인플루언서 파트너십 시스템 완전 재설계
-- 특징: 단일 테이블, 단순한 상태 관리, 복잡한 제약조건 제거

-- =============================================================================
-- 1단계: 기존 테이블 완전 삭제
-- =============================================================================

-- 1-1. 외래키 제약조건 비활성화
SET FOREIGN_KEY_CHECKS = 0;

-- 1-2. 기존 테이블들 삭제
DROP TABLE IF EXISTS VENDOR_INFLUENCER_STATUS_HISTORY;
DROP TABLE IF EXISTS PARTNERSHIP_HISTORY;
DROP TABLE IF EXISTS VENDOR_INFLUENCER_MAPPING;

-- 1-3. 외래키 제약조건 활성화
SET FOREIGN_KEY_CHECKS = 1;

-- =============================================================================
-- 2단계: 새로운 단순한 파트너십 테이블 생성
-- =============================================================================

CREATE TABLE `VENDOR_INFLUENCER_PARTNERSHIP` (
  `SEQ` int(11) NOT NULL AUTO_INCREMENT COMMENT '기본키',
  `VENDOR_SEQ` int(11) NOT NULL COMMENT '벤더사 SEQ (VENDOR_LIST.SEQ 참조)',
  `INFLUENCER_SEQ` int(11) NOT NULL COMMENT '인플루언서 SEQ (USER_LIST.SEQ 참조)',
  `STATUS` varchar(20) NOT NULL DEFAULT 'PENDING' COMMENT '상태: PENDING(대기), APPROVED(승인), REJECTED(거부), TERMINATED(해지)',
  `REQUEST_TYPE` varchar(20) NOT NULL DEFAULT 'NEW' COMMENT '요청 타입: NEW(신규), REAPPLY(재신청)',
  `REQUEST_MESSAGE` text DEFAULT NULL COMMENT '요청/재요청 메시지',
  `RESPONSE_MESSAGE` text DEFAULT NULL COMMENT '승인/거부/해지 메시지',
  `COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT '수수료율 (%)',
  `SPECIAL_CONDITIONS` text DEFAULT NULL COMMENT '특별 조건',
  `REQUESTED_BY` int(11) NOT NULL COMMENT '요청자 SEQ (인플루언서)',
  `PROCESSED_BY` int(11) DEFAULT NULL COMMENT '처리자 SEQ (벤더사 담당자)',
  `REQUEST_DATE` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '요청일시',
  `RESPONSE_DATE` timestamp NULL DEFAULT NULL COMMENT '처리일시',
  `PARTNERSHIP_START_DATE` timestamp NULL DEFAULT NULL COMMENT '파트너십 시작일',
  `PARTNERSHIP_END_DATE` timestamp NULL DEFAULT NULL COMMENT '파트너십 종료일',
  `IS_ACTIVE` varchar(1) NOT NULL DEFAULT 'Y' COMMENT '활성 상태: Y(활성), N(비활성)',
  `CREATED_AT` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '생성일시',
  `UPDATED_AT` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '수정일시',
  PRIMARY KEY (`SEQ`),
  UNIQUE KEY `unique_active_partnership` (`VENDOR_SEQ`, `INFLUENCER_SEQ`, `IS_ACTIVE`),
  KEY `idx_vendor_seq` (`VENDOR_SEQ`),
  KEY `idx_influencer_seq` (`INFLUENCER_SEQ`),
  KEY `idx_status` (`STATUS`),
  KEY `idx_request_date` (`REQUEST_DATE`),
  KEY `idx_updated_at` (`UPDATED_AT`),
  CONSTRAINT `fk_vendor_partnership` FOREIGN KEY (`VENDOR_SEQ`) REFERENCES `VENDOR_LIST` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_influencer_partnership` FOREIGN KEY (`INFLUENCER_SEQ`) REFERENCES `USER_LIST` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_requested_by_partnership` FOREIGN KEY (`REQUESTED_BY`) REFERENCES `USER_LIST` (`SEQ`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='벤더사-인플루언서 파트너십 테이블 (단순화된 구조)';

-- =============================================================================
-- 3단계: 테스트 데이터 삽입 (선택사항)
-- =============================================================================

-- 3-1. 샘플 파트너십 데이터
-- INSERT INTO VENDOR_INFLUENCER_PARTNERSHIP (
--     VENDOR_SEQ, INFLUENCER_SEQ, STATUS, REQUEST_MESSAGE, 
--     COMMISSION_RATE, REQUESTED_BY, REQUEST_DATE
-- ) VALUES (
--     1, 1, 'PENDING', '파트너십 요청드립니다.', 
--     10.00, 1, NOW()
-- );

-- =============================================================================
-- 4단계: 확인 쿼리
-- =============================================================================

-- 4-1. 테이블 구조 확인
DESCRIBE VENDOR_INFLUENCER_PARTNERSHIP;

-- 4-2. 제약조건 확인
SHOW CREATE TABLE VENDOR_INFLUENCER_PARTNERSHIP;

-- 4-3. 인덱스 확인
SHOW INDEX FROM VENDOR_INFLUENCER_PARTNERSHIP;

SELECT '🎉 새로운 파트너십 테이블 생성 완료!' as result; 