-- ============================================
-- WMS 시스템 구조 변경: 소비기한 변경 이력 테이블
-- 작성일: 2026-01-18
-- ============================================

-- 1. 기존 데이터 백업 (선택사항)
-- CREATE TABLE stock_out_logs_backup AS SELECT * FROM stock_out_logs;
-- CREATE TABLE stock_transfer_logs_backup AS SELECT * FROM stock_transfer_logs;

-- 2. 소비기한 변경 이력 테이블 생성
CREATE TABLE IF NOT EXISTS expiry_date_change_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    inventory_id INT NOT NULL COMMENT '재고 ID',
    product_id INT NOT NULL COMMENT '제품 ID',
    old_expiry_date DATE NOT NULL COMMENT '변경 전 소비기한',
    new_expiry_date DATE NOT NULL COMMENT '변경 후 소비기한',
    changed_by INT NOT NULL COMMENT '변경자 ID',
    changed_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '변경 시간',
    
    -- 외래키 제약조건
    FOREIGN KEY (inventory_id) REFERENCES inventory(id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE,
    FOREIGN KEY (changed_by) REFERENCES users(id) ON DELETE RESTRICT,
    
    -- 인덱스
    INDEX idx_inventory (inventory_id),
    INDEX idx_product (product_id),
    INDEX idx_changed_at (changed_at DESC),
    INDEX idx_changed_by (changed_by),
    INDEX idx_composite (inventory_id, changed_at DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='소비기한 변경 이력 추적 테이블';

-- 3. 테이블 생성 확인
SELECT 
    TABLE_NAME,
    TABLE_ROWS,
    CREATE_TIME,
    TABLE_COMMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'expiry_date_change_logs';

-- 4. 컬럼 정보 확인
DESCRIBE expiry_date_change_logs;

-- 5. 인덱스 확인
SHOW INDEX FROM expiry_date_change_logs;
