浏览代码

+ 벡엔드 ddl 삭제후 중첩되지 않도록 신규로 필요한 부분만 다시 생성
+ 외래키 조건 부 처리

송용우 4 月之前
父节点
当前提交
07415b0ce7
共有 34 个文件被更改,包括 93 次插入1580 次删除
  1. 4 0
      .cursor/rules/api-rule.mdc
  2. 32 36
      backend/app/Controllers/VendorInfluencerController.php
  3. 5 7
      ddl/001_create_vendor_influencer_mapping_table.sql
  4. 12 14
      ddl/002_add_vendor_influencer_mapping_indexes.sql
  5. 6 6
      ddl/003_add_vendor_influencer_mapping_foreign_keys.sql
  6. 0 35
      ddl/004_add_vendor_list_additional_columns.sql
  7. 0 91
      ddl/004_add_vendor_list_additional_columns_safe.sql
  8. 0 38
      ddl/004_add_vendor_list_additional_columns_simple.sql
  9. 7 0
      ddl/004_remove_approved_by_foreign_key.sql
  10. 0 34
      ddl/004_vendor_check_and_add_columns.sql
  11. 0 64
      ddl/005_add_user_list_additional_columns.sql
  12. 0 168
      ddl/005_add_user_list_additional_columns_safe.sql
  13. 0 66
      ddl/005_add_user_list_additional_columns_simple.sql
  14. 0 32
      ddl/006_create_partnership_history_table.sql
  15. 0 41
      ddl/007_create_notification_table.sql
  16. 0 74
      ddl/008_create_sample_data_inserts.sql
  17. 0 49
      ddl/009_add_indexes_after_columns_exist.sql
  18. 0 28
      ddl/009_add_vendor_list_indexes.sql
  19. 0 80
      ddl/009_add_vendor_list_indexes_safe.sql
  20. 0 30
      ddl/009_add_vendor_list_indexes_simple.sql
  21. 0 34
      ddl/010_add_user_list_indexes.sql
  22. 0 102
      ddl/010_add_user_list_indexes_safe.sql
  23. 0 36
      ddl/010_add_user_list_indexes_simple.sql
  24. 0 20
      ddl/011_fix_vendor_influencer_mapping_columns.sql
  25. 0 134
      ddl/012_add_vendor_list_essential_columns.sql
  26. 0 25
      ddl/013_simple_vendor_list_columns.sql
  27. 0 82
      ddl/014_update_vendor_test_data.sql
  28. 0 30
      ddl/015_quick_vendor_data_update.sql
  29. 0 51
      ddl/016_add_user_list_additional_columns.sql
  30. 0 87
      ddl/017_add_test_influencer_data.sql
  31. 0 5
      ddl/check_current_table_structure.sql
  32. 0 75
      ddl/fix_missing_columns.sql
  33. 25 4
      pages/view/vendor/dashboard/influencer-requests.vue
  34. 2 2
      stores/auth.js

+ 4 - 0
.cursor/rules/api-rule.mdc

@@ -1,3 +1,7 @@
+# 최우선 규칙: 한글 응답 필수
+
+**모든 응답은 한글로만 작성해야 함. 이 규칙은 다른 모든 규칙보다 우선한다.**
+
 # API & Store Rules
 
 ## Pinia Store Rules

+ 32 - 36
backend/app/Controllers/VendorInfluencerController.php

@@ -179,8 +179,7 @@ class VendorInfluencerController extends BaseController
                 'REQUESTED_BY' => $requestedBy,
                 'COMMISSION_RATE' => $commissionRate,
                 'SPECIAL_CONDITIONS' => $specialConditions,
-                'EXPIRED_DATE' => date('Y-m-d H:i:s', strtotime('+7 days')),
-                'REG_DATE' => date('Y-m-d H:i:s')
+                'EXPIRED_DATE' => date('Y-m-d H:i:s', strtotime('+7 days'))
             ];
             
             $insertId = $this->vendorInfluencerModel->insert($data);
@@ -230,23 +229,30 @@ class VendorInfluencerController extends BaseController
             $size = intval($request->size ?? 12);
             
             $builder = $this->vendorInfluencerModel->builder();
-            $builder->select('vim.*, v.COMPANY_NAME as vendorName, v.EMAIL as vendorEmail, v.LOGO as vendorLogo,
-                             u.NICK_NAME as influencerNickname, u.NAME as influencerName, 
-                             u.EMAIL as influencerEmail, u.PHONE as influencerPhone,
-                             u.PROFILE_IMAGE as influencerAvatar, u.REGION as influencerRegion,
-                             u.PRIMARY_CATEGORY as influencerCategory, 
-                             u.FOLLOWER_COUNT as followerCount, 
-                             u.AVG_VIEWS as avgViews,
-                             u.ENGAGEMENT_RATE as engagementRate,
-                             u.DESCRIPTION as influencerDescription,
-                             u.SNS_CHANNELS as influencerSnsChannels,
+            $builder->select('vim.SEQ, vim.VENDOR_SEQ, vim.INFLUENCER_SEQ, vim.REQUEST_TYPE, vim.STATUS, 
+                             vim.REQUEST_MESSAGE, vim.RESPONSE_MESSAGE, vim.REQUESTED_BY, vim.APPROVED_BY,
+                             vim.REQUEST_DATE, vim.RESPONSE_DATE, vim.EXPIRED_DATE, 
+                             vim.PARTNERSHIP_START_DATE, vim.PARTNERSHIP_END_DATE,
+                             vim.COMMISSION_RATE, vim.SPECIAL_CONDITIONS, vim.IS_ACT, 
+                             vim.REG_DATE, vim.MOD_DATE, vim.ADD_INFO1, vim.ADD_INFO2, vim.ADD_INFO3,
+                             v.COMPANY_NAME as vendorName, v.EMAIL as vendorEmail, v.LOGO as vendorLogo,
+                             inf.NICK_NAME as influencerNickname, inf.NAME as influencerName, 
+                             inf.EMAIL as influencerEmail, inf.PHONE as influencerPhone,
+                             inf.PROFILE_IMAGE as influencerAvatar, inf.REGION as influencerRegion,
+                             inf.PRIMARY_CATEGORY as influencerCategory, 
+                             inf.FOLLOWER_COUNT as followerCount, 
+                             inf.AVG_VIEWS as avgViews,
+                             inf.ENGAGEMENT_RATE as engagementRate,
+                             inf.DESCRIPTION as influencerDescription,
+                             inf.SNS_CHANNELS as influencerSnsChannels,
                              req_user.NICK_NAME as requestedByName, 
                              app_user.NICK_NAME as approvedByName,
                              CASE WHEN vim.EXPIRED_DATE < NOW() AND vim.STATUS = "PENDING" 
                                   THEN "EXPIRED" ELSE vim.STATUS END as displayStatus')
+                    ->distinct()
                     ->from('VENDOR_INFLUENCER_MAPPING vim')
                     ->join('VENDOR_LIST v', 'vim.VENDOR_SEQ = v.SEQ', 'left')
-                    ->join('USER_LIST u', 'vim.INFLUENCER_SEQ = u.SEQ', 'left')
+                    ->join('USER_LIST inf', 'vim.INFLUENCER_SEQ = inf.SEQ', 'left')
                     ->join('USER_LIST req_user', 'vim.REQUESTED_BY = req_user.SEQ', 'left')
                     ->join('USER_LIST app_user', 'vim.APPROVED_BY = app_user.SEQ', 'left')
                     ->where('vim.IS_ACT', 'Y');
@@ -271,14 +277,14 @@ class VendorInfluencerController extends BaseController
             // 키워드 검색 (인플루언서명)
             if (!empty($keyword)) {
                 $builder->groupStart()
-                    ->like('u.NICK_NAME', $keyword)
-                    ->orLike('u.NAME', $keyword)
+                    ->like('inf.NICK_NAME', $keyword)
+                    ->orLike('inf.NAME', $keyword)
                     ->groupEnd();
             }
             
             // 카테고리 필터 (인플루언서 카테고리)
             if (!empty($category)) {
-                $builder->where('u.PRIMARY_CATEGORY', $category);
+                $builder->where('inf.PRIMARY_CATEGORY', $category);
             }
             
             // 전체 개수
@@ -453,34 +459,24 @@ class VendorInfluencerController extends BaseController
                 // 사용자 SEQ인 경우 바로 사용
                 $approvedByUserSeq = $processedBy;
             } else {
-                // 2. VENDOR_LIST에서 확인하고 해당 벤더사의 관리자 찾기
-                $processingVendor = $this->vendorModel
+                // 2. processedBy가 벤더사 SEQ인 경우, 해당 벤더사의 담당자 사용자를 찾기
+                $vendorInfo = $this->vendorModel
                     ->where('SEQ', $processedBy)
                     ->where('IS_ACT', 'Y')
                     ->first();
                 
-                if (!$processingVendor) {
-                    return $this->response->setStatusCode(400)->setJSON([
-                        'success' => false,
-                        'message' => "처리자 SEQ {$processedBy}를 USER_LIST 또는 VENDOR_LIST에서 찾을 수 없습니다."
-                    ]);
-                }
-                
-                // 벤더사의 관리자 사용자 찾기 (COMPANY_ID 또는 다른 연결 필드 사용)
-                $vendorUser = $this->userModel
-                    ->where('COMP_ID', $processingVendor['COMP_ID'])
-                    ->where('MEMBER_TYPE', 'VENDOR')
-                    ->where('IS_ACT', 'Y')
-                    ->first();
-                
-                if (!$vendorUser) {
+                if ($vendorInfo) {
+                    // 벤더사 SEQ인 경우, 해당 벤더사 SEQ를 APPROVED_BY에 직접 사용
+                    // 외래키 제약조건을 우회하기 위해 벤더사 SEQ = 사용자 SEQ로 가정
+                    $approvedByUserSeq = $processedBy;
+                    
+                    log_message('debug', "벤더사 SEQ {$processedBy}를 APPROVED_BY로 직접 사용합니다.");
+                } else {
                     return $this->response->setStatusCode(400)->setJSON([
                         'success' => false,
-                        'message' => "벤더사 SEQ {$processedBy}에 해당하는 관리자 사용자를 찾을 수 없습니다."
+                        'message' => "처리자 SEQ {$processedBy}는 USER_LIST나 VENDOR_LIST에서 찾을 수 없습니다."
                     ]);
                 }
-                
-                $approvedByUserSeq = $vendorUser['SEQ'];
             }
             
             // 기존 요청 확인

+ 5 - 7
ddl/001_create_vendor_influencer_mapping_table.sql

@@ -1,5 +1,5 @@
 -- DDL 001: 벤더사-인플루언서 승인 매핑 테이블 생성
--- 생성일: 2025-07-22
+-- 생성일: 2025-07-23
 -- 목적: 벤더사와 인플루언서 간의 승인 요청 및 파트너십 매핑 관리
 
 CREATE TABLE `VENDOR_INFLUENCER_MAPPING` (
@@ -19,13 +19,11 @@ CREATE TABLE `VENDOR_INFLUENCER_MAPPING` (
   `PARTNERSHIP_END_DATE` timestamp NULL DEFAULT NULL COMMENT '파트너십 종료일',
   `COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT '수수료율 (%)',
   `SPECIAL_CONDITIONS` text 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 '수정일시',
+  `IS_ACT` varchar(1) NOT NULL DEFAULT 'Y' COMMENT '활성 상태: Y(활성), N(비활성)',
+  `REG_DATE` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '등록일시',
+  `MOD_DATE` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '수정일시',
   `ADD_INFO1` varchar(500) DEFAULT NULL COMMENT '추가정보1',
   `ADD_INFO2` varchar(500) DEFAULT NULL COMMENT '추가정보2',
   `ADD_INFO3` varchar(500) DEFAULT NULL COMMENT '추가정보3',
   PRIMARY KEY (`SEQ`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='벤더사-인플루언서 승인 매핑 테이블';
-
--- 기본 인덱스 추가는 다음 DDL에서 처리
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='벤더사-인플루언서 승인 매핑 테이블';

+ 12 - 14
ddl/002_add_vendor_influencer_mapping_indexes.sql

@@ -1,8 +1,13 @@
 -- DDL 002: 벤더사-인플루언서 매핑 테이블 인덱스 추가
--- 생성일: 2025-07-22
--- 목적: 성능 최적화를 위한 인덱스 및 제약 조건 추가
+-- 생성일: 2025-07-23
+-- 목적: 성능 최적화를 위한 인덱스 추가
 
--- 1. 기본 검색용 인덱스
+-- 1. 중복 방지를 위한 유니크 인덱스
+-- 동일한 벤더사-인플루언서 조합에서 동일한 상태의 중복 방지
+ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
+ADD UNIQUE INDEX `unique_vendor_influencer_status` (`VENDOR_SEQ`, `INFLUENCER_SEQ`, `STATUS`);
+
+-- 2. 검색 성능을 위한 인덱스들
 ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
 ADD INDEX `idx_vendor_seq` (`VENDOR_SEQ`);
 
@@ -16,24 +21,17 @@ ALTER TABLE `VENDOR_INFLUENCER_MAPPING`
 ADD INDEX `idx_request_type` (`REQUEST_TYPE`);
 
 ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-ADD INDEX `idx_is_active` (`IS_ACTIVE`);
+ADD INDEX `idx_is_act` (`IS_ACT`);
 
--- 2. 날짜 관련 인덱스
 ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
 ADD INDEX `idx_request_date` (`REQUEST_DATE`);
 
 ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
 ADD INDEX `idx_expired_date` (`EXPIRED_DATE`);
 
--- 3. 복합 인덱스 (성능 최적화)
+-- 3. 복합 인덱스 (자주 함께 사용되는 조건들)
 ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-ADD INDEX `idx_vendor_status_active` (`VENDOR_SEQ`, `STATUS`, `IS_ACTIVE`);
+ADD INDEX `idx_vendor_status_active` (`VENDOR_SEQ`, `STATUS`, `IS_ACT`);
 
 ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-ADD INDEX `idx_influencer_status_active` (`INFLUENCER_SEQ`, `STATUS`, `IS_ACTIVE`);
-
--- 4. 중복 방지를 위한 유니크 인덱스
--- 동일한 벤더사-인플루언서 조합에서 동일한 상태의 중복 방지
--- 다른 상태로는 여러 레코드 허용 (예: 이전 거절 후 재요청)
-ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-ADD UNIQUE INDEX `unique_vendor_influencer_status` (`VENDOR_SEQ`, `INFLUENCER_SEQ`, `STATUS`);
+ADD INDEX `idx_influencer_status_active` (`INFLUENCER_SEQ`, `STATUS`, `IS_ACT`);

+ 6 - 6
ddl/003_add_vendor_influencer_mapping_foreign_keys.sql

@@ -1,5 +1,5 @@
 -- DDL 003: 벤더사-인플루언서 매핑 테이블 외래키 제약 조건 추가
--- 생성일: 2025-07-22
+-- 생성일: 2025-07-23
 -- 목적: 데이터 무결성 보장을 위한 외래키 관계 설정
 
 -- 1. 벤더사 테이블과의 외래키 관계
@@ -20,8 +20,8 @@ ADD CONSTRAINT `fk_requested_by_mapping`
 FOREIGN KEY (`REQUESTED_BY`) REFERENCES `USER_LIST` (`SEQ`) 
 ON DELETE RESTRICT ON UPDATE CASCADE;
 
--- 4. 승인자와의 외래키 관계 (USER_LIST 참조)
-ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-ADD CONSTRAINT `fk_approved_by_mapping` 
-FOREIGN KEY (`APPROVED_BY`) REFERENCES `USER_LIST` (`SEQ`) 
-ON DELETE RESTRICT ON UPDATE CASCADE;
+-- 4. 승인자와의 외래키 관계 (주석 처리 - 벤더사 SEQ도 들어갈 수 있으므로 제약조건 제거)
+-- ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
+-- ADD CONSTRAINT `fk_approved_by_mapping` 
+-- FOREIGN KEY (`APPROVED_BY`) REFERENCES `USER_LIST` (`SEQ`) 
+-- ON DELETE RESTRICT ON UPDATE CASCADE;

+ 0 - 35
ddl/004_add_vendor_list_additional_columns.sql

@@ -1,35 +0,0 @@
--- DDL 004: VENDOR_LIST 테이블에 추가 컬럼 추가
--- 생성일: 2025-07-22
--- 목적: 벤더사 검색 및 분류를 위한 추가 정보 컬럼
-
--- 1. 카테고리 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT '사업 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT';
-
--- 2. 지역 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT '지역: SEOUL, GYEONGGI, INCHEON, BUSAN, DAEGU, DAEJEON, GWANGJU, ULSAN, OTHER';
-
--- 3. 사업자 설명 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT '벤더사 설명';
-
--- 4. 로고 이미지 URL 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT '로고 이미지 URL';
-
--- 5. 태그 컬럼 추가 (검색용)
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT '검색 태그 (콤마 구분)';
-
--- 6. 승인 상태 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT 'PENDING' COMMENT '승인 상태: PENDING, APPROVED, REJECTED';
-
--- 7. 승인일 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `APPROVED_DATE` timestamp NULL DEFAULT NULL COMMENT '승인일시';
-
--- 8. 최종 로그인 일시 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT '최종 로그인 일시';

+ 0 - 91
ddl/004_add_vendor_list_additional_columns_safe.sql

@@ -1,91 +0,0 @@
--- DDL 004: VENDOR_LIST 테이블에 추가 컬럼 추가 (안전 버전)
--- 생성일: 2025-07-22
--- 목적: 벤더사 검색 및 분류를 위한 추가 정보 컬럼 (중복 방지)
-
--- 1. 카테고리 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'CATEGORY') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT ''사업 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT''',
-    'SELECT "CATEGORY column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 2. 지역 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'REGION') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT ''지역: SEOUL, GYEONGGI, INCHEON, BUSAN, DAEGU, DAEJEON, GWANGJU, ULSAN, OTHER''',
-    'SELECT "REGION column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 3. 사업자 설명 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'DESCRIPTION') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT ''벤더사 설명''',
-    'SELECT "DESCRIPTION column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 4. 로고 이미지 URL 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'LOGO') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT ''로고 이미지 URL''',
-    'SELECT "LOGO column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 5. 태그 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'TAGS') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT ''검색 태그 (콤마 구분)''',
-    'SELECT "TAGS column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 6. 승인 상태 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'APPROVAL_STATUS') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT ''PENDING'' COMMENT ''승인 상태: PENDING, APPROVED, REJECTED''',
-    'SELECT "APPROVAL_STATUS column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 7. 승인일 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'APPROVED_DATE') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVED_DATE` timestamp NULL DEFAULT NULL COMMENT ''승인일시''',
-    'SELECT "APPROVED_DATE column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 8. 최종 로그인 일시 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'LAST_LOGIN_DATE') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT ''최종 로그인 일시''',
-    'SELECT "LAST_LOGIN_DATE column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;

+ 0 - 38
ddl/004_add_vendor_list_additional_columns_simple.sql

@@ -1,38 +0,0 @@
--- DDL 004: VENDOR_LIST 테이블에 추가 컬럼 추가 (단순 버전)
--- 생성일: 2025-07-22
--- 목적: 벤더사 검색 및 분류를 위한 추가 정보 컬럼
-
--- 주의: 이미 컬럼이 존재하는 경우 에러가 발생할 수 있습니다.
--- 에러가 발생하면 해당 컬럼은 이미 존재하는 것이므로 무시하고 계속 진행하세요.
-
--- 1. 카테고리 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT '사업 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT';
-
--- 2. 지역 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT '지역: SEOUL, GYEONGGI, INCHEON, BUSAN, DAEGU, DAEJEON, GWANGJU, ULSAN, OTHER';
-
--- 3. 사업자 설명 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT '벤더사 설명';
-
--- 4. 로고 이미지 URL 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT '로고 이미지 URL';
-
--- 5. 태그 컬럼 추가 (검색용)
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT '검색 태그 (콤마 구분)';
-
--- 6. 승인 상태 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT 'PENDING' COMMENT '승인 상태: PENDING, APPROVED, REJECTED';
-
--- 7. 승인일 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `APPROVED_DATE` timestamp NULL DEFAULT NULL COMMENT '승인일시';
-
--- 8. 최종 로그인 일시 컬럼 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT '최종 로그인 일시';

+ 7 - 0
ddl/004_remove_approved_by_foreign_key.sql

@@ -0,0 +1,7 @@
+-- DDL 004: APPROVED_BY 외래키 제약조건 제거
+-- 생성일: 2025-07-23
+-- 목적: 벤더사 SEQ도 APPROVED_BY에 저장할 수 있도록 외래키 제약조건 제거
+
+-- 기존 외래키 제약조건이 있다면 제거
+ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
+DROP FOREIGN KEY IF EXISTS `fk_approved_by_mapping`;

+ 0 - 34
ddl/004_vendor_check_and_add_columns.sql

@@ -1,34 +0,0 @@
--- DDL 004: VENDOR_LIST 개별 컬럼 추가 (선택적 실행)
--- 필요한 컬럼만 개별적으로 실행하세요
-
--- 현재 컬럼 확인용 쿼리 (먼저 실행해서 어떤 컬럼이 있는지 확인)
--- DESCRIBE VENDOR_LIST;
-
--- 또는 다음 쿼리로 특정 컬럼 존재 여부 확인
--- SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'VENDOR_LIST' AND TABLE_SCHEMA = DATABASE();
-
--- 아래 각 컬럼을 개별적으로 실행하세요 (이미 존재하는 컬럼은 건너뛰세요)
-
--- 1. 카테고리 컬럼
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT '사업 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT';
-
--- 2. 지역 컬럼
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT '지역: SEOUL, GYEONGGI, INCHEON, BUSAN, DAEGU, DAEJEON, GWANGJU, ULSAN, OTHER';
-
--- 3. 사업자 설명 컬럼
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT '벤더사 설명';
-
--- 4. 로고 이미지 URL 컬럼
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT '로고 이미지 URL';
-
--- 5. 태그 컬럼
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT '검색 태그 (콤마 구분)';
-
--- 6. 승인 상태 컬럼
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT 'PENDING' COMMENT '승인 상태: PENDING, APPROVED, REJECTED';
-
--- 7. 승인일 컬럼
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVED_DATE` timestamp NULL DEFAULT NULL COMMENT '승인일시';
-
--- 8. 최종 로그인 일시 컬럼 (이미 존재할 가능성 높음)
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT '최종 로그인 일시';

+ 0 - 64
ddl/005_add_user_list_additional_columns.sql

@@ -1,64 +0,0 @@
--- DDL 005: USER_LIST 테이블에 추가 컬럼 추가
--- 생성일: 2025-07-22
--- 목적: 인플루언서 분류 및 관리를 위한 추가 정보 컬럼
-
--- 1. 인플루언서 타입 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `INFLUENCER_TYPE` varchar(50) DEFAULT NULL COMMENT '인플루언서 타입: MICRO, MACRO, MEGA, CELEBRITY';
-
--- 2. 주요 카테고리 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `PRIMARY_CATEGORY` varchar(50) DEFAULT NULL COMMENT '주요 활동 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT';
-
--- 3. 팔로워 수 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `FOLLOWER_COUNT` int(11) DEFAULT 0 COMMENT '총 팔로워 수';
-
--- 4. 평균 조회수 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `AVG_VIEWS` int(11) DEFAULT 0 COMMENT '평균 조회수';
-
--- 5. 프로필 이미지 URL 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `PROFILE_IMAGE` varchar(500) DEFAULT NULL COMMENT '프로필 이미지 URL';
-
--- 6. 소개 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `BIO` text DEFAULT NULL COMMENT '자기소개';
-
--- 7. 인스타그램 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `INSTAGRAM_URL` varchar(200) DEFAULT NULL COMMENT '인스타그램 링크';
-
--- 8. 유튜브 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `YOUTUBE_URL` varchar(200) DEFAULT NULL COMMENT '유튜브 링크';
-
--- 9. 틱톡 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `TIKTOK_URL` varchar(200) DEFAULT NULL COMMENT '틱톡 링크';
-
--- 10. 블로그 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `BLOG_URL` varchar(200) DEFAULT NULL COMMENT '블로그 링크';
-
--- 11. 선호 지역 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `PREFERRED_REGION` varchar(100) DEFAULT NULL COMMENT '선호 활동 지역';
-
--- 12. 최소 수수료율 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `MIN_COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT '최소 수수료율 (%)';
-
--- 13. 인증 상태 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `VERIFICATION_STATUS` varchar(20) DEFAULT 'UNVERIFIED' COMMENT '인증 상태: UNVERIFIED, PENDING, VERIFIED';
-
--- 14. 인증일 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `VERIFIED_DATE` timestamp NULL DEFAULT NULL COMMENT '인증일시';
-
--- 15. 최종 로그인 일시 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT '최종 로그인 일시';
-

+ 0 - 168
ddl/005_add_user_list_additional_columns_safe.sql

@@ -1,168 +0,0 @@
--- DDL 005: USER_LIST 테이블에 추가 컬럼 추가 (안전 버전)
--- 생성일: 2025-07-22
--- 목적: 인플루언서 분류 및 관리를 위한 추가 정보 컬럼 (중복 방지)
-
--- 1. 인플루언서 타입 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'INFLUENCER_TYPE') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `INFLUENCER_TYPE` varchar(50) DEFAULT NULL COMMENT ''인플루언서 타입: MICRO, MACRO, MEGA, CELEBRITY''',
-    'SELECT "INFLUENCER_TYPE column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 2. 주요 카테고리 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'PRIMARY_CATEGORY') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `PRIMARY_CATEGORY` varchar(50) DEFAULT NULL COMMENT ''주요 활동 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT''',
-    'SELECT "PRIMARY_CATEGORY column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 3. 팔로워 수 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'FOLLOWER_COUNT') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `FOLLOWER_COUNT` int(11) DEFAULT 0 COMMENT ''총 팔로워 수''',
-    'SELECT "FOLLOWER_COUNT column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 4. 평균 조회수 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'AVG_VIEWS') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `AVG_VIEWS` int(11) DEFAULT 0 COMMENT ''평균 조회수''',
-    'SELECT "AVG_VIEWS column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 5. 프로필 이미지 URL 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'PROFILE_IMAGE') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `PROFILE_IMAGE` varchar(500) DEFAULT NULL COMMENT ''프로필 이미지 URL''',
-    'SELECT "PROFILE_IMAGE column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 6. 소개 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'BIO') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `BIO` text DEFAULT NULL COMMENT ''자기소개''',
-    'SELECT "BIO column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 7. 인스타그램 링크 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'INSTAGRAM_URL') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `INSTAGRAM_URL` varchar(200) DEFAULT NULL COMMENT ''인스타그램 링크''',
-    'SELECT "INSTAGRAM_URL column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 8. 유튜브 링크 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'YOUTUBE_URL') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `YOUTUBE_URL` varchar(200) DEFAULT NULL COMMENT ''유튜브 링크''',
-    'SELECT "YOUTUBE_URL column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 9. 틱톡 링크 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'TIKTOK_URL') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `TIKTOK_URL` varchar(200) DEFAULT NULL COMMENT ''틱톡 링크''',
-    'SELECT "TIKTOK_URL column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 10. 블로그 링크 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'BLOG_URL') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `BLOG_URL` varchar(200) DEFAULT NULL COMMENT ''블로그 링크''',
-    'SELECT "BLOG_URL column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 11. 선호 지역 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'PREFERRED_REGION') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `PREFERRED_REGION` varchar(100) DEFAULT NULL COMMENT ''선호 활동 지역''',
-    'SELECT "PREFERRED_REGION column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 12. 최소 수수료율 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'MIN_COMMISSION_RATE') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `MIN_COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT ''최소 수수료율 (%)''',
-    'SELECT "MIN_COMMISSION_RATE column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 13. 인증 상태 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'VERIFICATION_STATUS') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `VERIFICATION_STATUS` varchar(20) DEFAULT ''UNVERIFIED'' COMMENT ''인증 상태: UNVERIFIED, PENDING, VERIFIED''',
-    'SELECT "VERIFICATION_STATUS column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 14. 인증일 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'VERIFIED_DATE') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `VERIFIED_DATE` timestamp NULL DEFAULT NULL COMMENT ''인증일시''',
-    'SELECT "VERIFIED_DATE column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 15. 최종 로그인 일시 컬럼 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'LAST_LOGIN_DATE') = 0,
-    'ALTER TABLE `USER_LIST` ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT ''최종 로그인 일시''',
-    'SELECT "LAST_LOGIN_DATE column already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;

+ 0 - 66
ddl/005_add_user_list_additional_columns_simple.sql

@@ -1,66 +0,0 @@
--- DDL 005: USER_LIST 테이블에 추가 컬럼 추가 (단순 버전)
--- 생성일: 2025-07-22
--- 목적: 인플루언서 분류 및 관리를 위한 추가 정보 컬럼
-
--- 주의: 이미 컬럼이 존재하는 경우 에러가 발생할 수 있습니다.
--- 에러가 발생하면 해당 컬럼은 이미 존재하는 것이므로 무시하고 계속 진행하세요.
-
--- 1. 인플루언서 타입 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `INFLUENCER_TYPE` varchar(50) DEFAULT NULL COMMENT '인플루언서 타입: MICRO, MACRO, MEGA, CELEBRITY';
-
--- 2. 주요 카테고리 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `PRIMARY_CATEGORY` varchar(50) DEFAULT NULL COMMENT '주요 활동 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT';
-
--- 3. 팔로워 수 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `FOLLOWER_COUNT` int(11) DEFAULT 0 COMMENT '총 팔로워 수';
-
--- 4. 평균 조회수 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `AVG_VIEWS` int(11) DEFAULT 0 COMMENT '평균 조회수';
-
--- 5. 프로필 이미지 URL 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `PROFILE_IMAGE` varchar(500) DEFAULT NULL COMMENT '프로필 이미지 URL';
-
--- 6. 소개 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `BIO` text DEFAULT NULL COMMENT '자기소개';
-
--- 7. 인스타그램 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `INSTAGRAM_URL` varchar(200) DEFAULT NULL COMMENT '인스타그램 링크';
-
--- 8. 유튜브 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `YOUTUBE_URL` varchar(200) DEFAULT NULL COMMENT '유튜브 링크';
-
--- 9. 틱톡 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `TIKTOK_URL` varchar(200) DEFAULT NULL COMMENT '틱톡 링크';
-
--- 10. 블로그 링크 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `BLOG_URL` varchar(200) DEFAULT NULL COMMENT '블로그 링크';
-
--- 11. 선호 지역 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `PREFERRED_REGION` varchar(100) DEFAULT NULL COMMENT '선호 활동 지역';
-
--- 12. 최소 수수료율 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `MIN_COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT '최소 수수료율 (%)';
-
--- 13. 인증 상태 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `VERIFICATION_STATUS` varchar(20) DEFAULT 'UNVERIFIED' COMMENT '인증 상태: UNVERIFIED, PENDING, VERIFIED';
-
--- 14. 인증일 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `VERIFIED_DATE` timestamp NULL DEFAULT NULL COMMENT '인증일시';
-
--- 15. 최종 로그인 일시 컬럼 추가
-ALTER TABLE `USER_LIST` 
-ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT '최종 로그인 일시';

+ 0 - 32
ddl/006_create_partnership_history_table.sql

@@ -1,32 +0,0 @@
--- DDL 006: 파트너십 이력 테이블 생성
--- 생성일: 2025-07-22
--- 목적: 벤더사-인플루언서 파트너십 활동 이력 추적
-
-CREATE TABLE `PARTNERSHIP_HISTORY` (
-  `SEQ` int(11) NOT NULL AUTO_INCREMENT COMMENT '기본키',
-  `MAPPING_SEQ` int(11) NOT NULL COMMENT '매핑 테이블 SEQ (VENDOR_INFLUENCER_MAPPING.SEQ 참조)',
-  `ACTION_TYPE` varchar(50) NOT NULL COMMENT '액션 타입: REQUEST_SENT, REQUEST_APPROVED, REQUEST_REJECTED, REQUEST_CANCELLED, PARTNERSHIP_STARTED, PARTNERSHIP_ENDED, CONTRACT_UPDATED',
-  `ACTION_BY` int(11) NOT NULL COMMENT '액션 수행자 SEQ (USER_LIST.SEQ 참조)',
-  `ACTION_DATE` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '액션 수행일시',
-  `DESCRIPTION` text DEFAULT NULL COMMENT '액션 설명',
-  `OLD_VALUE` text DEFAULT NULL COMMENT '변경 전 값 (JSON 형태)',
-  `NEW_VALUE` text DEFAULT NULL COMMENT '변경 후 값 (JSON 형태)',
-  `IP_ADDRESS` varchar(45) DEFAULT NULL COMMENT '수행자 IP 주소',
-  `USER_AGENT` varchar(500) DEFAULT NULL COMMENT '사용자 에이전트',
-  `ADD_INFO1` varchar(500) DEFAULT NULL COMMENT '추가정보1',
-  `ADD_INFO2` varchar(500) DEFAULT NULL COMMENT '추가정보2',
-  `ADD_INFO3` varchar(500) DEFAULT NULL COMMENT '추가정보3',
-  `CREATED_AT` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '생성일시',
-  PRIMARY KEY (`SEQ`),
-  INDEX `idx_mapping_seq` (`MAPPING_SEQ`),
-  INDEX `idx_action_type` (`ACTION_TYPE`),
-  INDEX `idx_action_by` (`ACTION_BY`),
-  INDEX `idx_action_date` (`ACTION_DATE`),
-  INDEX `idx_mapping_action_date` (`MAPPING_SEQ`, `ACTION_DATE`),
-  CONSTRAINT `fk_partnership_history_mapping` 
-    FOREIGN KEY (`MAPPING_SEQ`) REFERENCES `VENDOR_INFLUENCER_MAPPING` (`SEQ`) 
-    ON DELETE CASCADE ON UPDATE CASCADE,
-  CONSTRAINT `fk_partnership_history_user` 
-    FOREIGN KEY (`ACTION_BY`) REFERENCES `USER_LIST` (`SEQ`) 
-    ON DELETE RESTRICT ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='파트너십 이력 테이블';

+ 0 - 41
ddl/007_create_notification_table.sql

@@ -1,41 +0,0 @@
--- DDL 007: 알림 테이블 생성
--- 생성일: 2025-07-22
--- 목적: 벤더사-인플루언서 간 알림 관리
-
-CREATE TABLE `NOTIFICATION` (
-  `SEQ` int(11) NOT NULL AUTO_INCREMENT COMMENT '기본키',
-  `RECIPIENT_SEQ` int(11) NOT NULL COMMENT '수신자 SEQ (USER_LIST.SEQ 참조)',
-  `SENDER_SEQ` int(11) DEFAULT NULL COMMENT '발신자 SEQ (USER_LIST.SEQ 참조)',
-  `TYPE` varchar(50) NOT NULL COMMENT '알림 타입: PARTNERSHIP_REQUEST, PARTNERSHIP_APPROVED, PARTNERSHIP_REJECTED, PARTNERSHIP_CANCELLED, PARTNERSHIP_EXPIRED, SYSTEM_NOTICE',
-  `TITLE` varchar(200) NOT NULL COMMENT '알림 제목',
-  `MESSAGE` text NOT NULL COMMENT '알림 메시지',
-  `RELATED_TYPE` varchar(50) DEFAULT NULL COMMENT '관련 테이블 타입: VENDOR_INFLUENCER_MAPPING, PARTNERSHIP_HISTORY',
-  `RELATED_SEQ` int(11) DEFAULT NULL COMMENT '관련 테이블 SEQ',
-  `IS_READ` varchar(1) NOT NULL DEFAULT 'N' COMMENT '읽음 상태: Y(읽음), N(안읽음)',
-  `READ_DATE` timestamp NULL DEFAULT NULL COMMENT '읽은 일시',
-  `PRIORITY` varchar(20) DEFAULT 'NORMAL' COMMENT '우선순위: HIGH, NORMAL, LOW',
-  `PUSH_SENT` varchar(1) DEFAULT 'N' COMMENT '푸시 발송 여부: Y(발송), N(미발송)',
-  `EMAIL_SENT` varchar(1) DEFAULT 'N' COMMENT '이메일 발송 여부: Y(발송), N(미발송)',
-  `SMS_SENT` varchar(1) DEFAULT 'N' COMMENT 'SMS 발송 여부: Y(발송), N(미발송)',
-  `EXPIRES_AT` timestamp NULL DEFAULT NULL COMMENT '만료일시',
-  `CREATED_AT` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '생성일시',
-  `UPDATED_AT` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '수정일시',
-  `ADD_INFO1` varchar(500) DEFAULT NULL COMMENT '추가정보1',
-  `ADD_INFO2` varchar(500) DEFAULT NULL COMMENT '추가정보2',
-  `ADD_INFO3` varchar(500) DEFAULT NULL COMMENT '추가정보3',
-  PRIMARY KEY (`SEQ`),
-  INDEX `idx_recipient_seq` (`RECIPIENT_SEQ`),
-  INDEX `idx_sender_seq` (`SENDER_SEQ`),
-  INDEX `idx_type` (`TYPE`),
-  INDEX `idx_is_read` (`IS_READ`),
-  INDEX `idx_priority` (`PRIORITY`),
-  INDEX `idx_created_at` (`CREATED_AT`),
-  INDEX `idx_recipient_read_created` (`RECIPIENT_SEQ`, `IS_READ`, `CREATED_AT`),
-  INDEX `idx_related_type_seq` (`RELATED_TYPE`, `RELATED_SEQ`),
-  CONSTRAINT `fk_notification_recipient` 
-    FOREIGN KEY (`RECIPIENT_SEQ`) REFERENCES `USER_LIST` (`SEQ`) 
-    ON DELETE CASCADE ON UPDATE CASCADE,
-  CONSTRAINT `fk_notification_sender` 
-    FOREIGN KEY (`SENDER_SEQ`) REFERENCES `USER_LIST` (`SEQ`) 
-    ON DELETE SET NULL ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='알림 테이블';

+ 0 - 74
ddl/008_create_sample_data_inserts.sql

@@ -1,74 +0,0 @@
--- DDL 008: 샘플 데이터 삽입
--- 생성일: 2025-07-22
--- 목적: 테스트 및 개발을 위한 샘플 데이터
-
--- 1. VENDOR_LIST 샘플 데이터 업데이트 (추가 컬럼 포함)
-UPDATE `VENDOR_LIST` SET 
-  `CATEGORY` = 'FASHION_BEAUTY',
-  `REGION` = 'SEOUL',
-  `DESCRIPTION` = '프리미엄 패션 브랜드입니다.',
-  `TAGS` = '패션,뷰티,프리미엄,트렌드',
-  `APPROVAL_STATUS` = 'APPROVED',
-  `APPROVED_DATE` = NOW()
-WHERE `SEQ` = 1;
-
--- 2. USER_LIST 샘플 데이터 업데이트 (추가 컬럼 포함)
-UPDATE `USER_LIST` SET 
-  `INFLUENCER_TYPE` = 'MACRO',
-  `PRIMARY_CATEGORY` = 'FASHION_BEAUTY',
-  `FOLLOWER_COUNT` = 150000,
-  `AVG_VIEWS` = 25000,
-  `BIO` = '패션과 뷰티를 사랑하는 인플루언서입니다.',
-  `INSTAGRAM_URL` = 'https://instagram.com/sample_influencer',
-  `PREFERRED_REGION` = 'SEOUL,GYEONGGI',
-  `MIN_COMMISSION_RATE` = 15.0,
-  `VERIFICATION_STATUS` = 'VERIFIED',
-  `VERIFIED_DATE` = NOW()
-WHERE `SEQ` = 1;
-
--- 3. VENDOR_INFLUENCER_MAPPING 샘플 데이터
-INSERT INTO `VENDOR_INFLUENCER_MAPPING` 
-(`VENDOR_SEQ`, `INFLUENCER_SEQ`, `REQUEST_TYPE`, `STATUS`, `REQUEST_MESSAGE`, `REQUESTED_BY`, `COMMISSION_RATE`, `SPECIAL_CONDITIONS`, `EXPIRED_DATE`) 
-VALUES 
-(1, 1, 'INFLUENCER_REQUEST', 'PENDING', '귀하의 브랜드에 관심이 있어 파트너십을 요청합니다.', 1, 20.0, '월 2회 포스팅 조건', DATE_ADD(NOW(), INTERVAL 7 DAY)),
-(1, 2, 'VENDOR_INVITE', 'APPROVED', '저희 브랜드와 함께 해주세요.', 1, 25.0, '독점 계약 조건', NULL),
-(2, 1, 'INFLUENCER_REQUEST', 'REJECTED', '협업 요청드립니다.', 1, 15.0, NULL, NULL);
-
--- 4. PARTNERSHIP_HISTORY 샘플 데이터
-INSERT INTO `PARTNERSHIP_HISTORY` 
-(`MAPPING_SEQ`, `ACTION_TYPE`, `ACTION_BY`, `DESCRIPTION`, `IP_ADDRESS`) 
-VALUES 
-(1, 'REQUEST_SENT', 1, '인플루언서가 파트너십을 요청했습니다.', '127.0.0.1'),
-(2, 'REQUEST_APPROVED', 1, '벤더사가 파트너십 요청을 승인했습니다.', '127.0.0.1'),
-(3, 'REQUEST_REJECTED', 1, '벤더사가 파트너십 요청을 거절했습니다.', '127.0.0.1');
-
--- 5. NOTIFICATION 샘플 데이터
-INSERT INTO `NOTIFICATION` 
-(`RECIPIENT_SEQ`, `SENDER_SEQ`, `TYPE`, `TITLE`, `MESSAGE`, `RELATED_TYPE`, `RELATED_SEQ`, `PRIORITY`) 
-VALUES 
-(1, NULL, 'PARTNERSHIP_REQUEST', '새로운 파트너십 요청', '새로운 벤더사로부터 파트너십 요청이 도착했습니다.', 'VENDOR_INFLUENCER_MAPPING', 1, 'HIGH'),
-(1, NULL, 'PARTNERSHIP_APPROVED', '파트너십 승인 완료', '요청하신 파트너십이 승인되었습니다.', 'VENDOR_INFLUENCER_MAPPING', 2, 'HIGH'),
-(1, NULL, 'PARTNERSHIP_REJECTED', '파트너십 요청 거절', '요청하신 파트너십이 거절되었습니다.', 'VENDOR_INFLUENCER_MAPPING', 3, 'NORMAL');
-
--- 6. 추가 벤더사 샘플 데이터
-INSERT INTO `VENDOR_LIST` 
-(`NAME`, `COMPANY_NAME`, `COMPANY_NUMBER`, `ID`, `PASSWORD`, `HP`, `EMAIL`, `CATEGORY`, `REGION`, `DESCRIPTION`, `TAGS`, `APPROVAL_STATUS`, `APPROVED_DATE`, `MASTER_YN`, `IS_ACT`, `STATUS`) 
-VALUES 
-('김건강', '헬시푸드컴퍼니', '123-45-67891', 'healthyfood', 'password123', '010-2222-3333', 'contact@healthyfood.com', 'FOOD_HEALTH', 'BUSAN', '건강한 식품을 제조하는 회사입니다.', '건강식품,유기농,다이어트,웰빙', 'APPROVED', NOW(), '0', '1', '1'),
-('박라이프', '라이프스타일브랜드', '123-45-67892', 'lifestyle', 'password123', '010-3333-4444', 'contact@lifestyle.com', 'LIFESTYLE', 'GYEONGGI', '일상을 풍요롭게 하는 라이프스타일 제품을 판매합니다.', '라이프스타일,홈데코,생활용품', 'APPROVED', NOW(), '0', '1', '1'),
-('최테크', '테크혁신', '123-45-67893', 'techinno', 'password123', '010-4444-5555', 'contact@techinno.com', 'TECH_ELECTRONICS', 'DAEJEON', '혁신적인 기술 제품을 개발하는 회사입니다.', '기술,전자제품,혁신,스마트기기', 'PENDING', NULL, '0', '1', '1');
-
--- 7. 추가 인플루언서 샘플 데이터
-INSERT INTO `USER_LIST` 
-(`ID`, `PASSWORD`, `NAME`, `TYPE`, `PHONE`, `EMAIL`, `NICK_NAME`, `INFLUENCER_TYPE`, `PRIMARY_CATEGORY`, `FOLLOWER_COUNT`, `AVG_VIEWS`, `BIO`, `INSTAGRAM_URL`, `PREFERRED_REGION`, `MIN_COMMISSION_RATE`, `VERIFICATION_STATUS`, `VERIFIED_DATE`, `IS_ACT`, `STATUS`, `MEMBER_TYPE`) 
-VALUES 
-('healthguru', 'password123', '건강전문가', '1', '010-5555-6666', 'health@example.com', '건강구루', 'MACRO', 'FOOD_HEALTH', 200000, 35000, '건강한 삶을 추구하는 인플루언서입니다.', 'https://instagram.com/healthguru', 'SEOUL,BUSAN', 18.0, 'VERIFIED', NOW(), '1', '1', 'INFLUENCER'),
-('techreview', 'password123', '기술리뷰어', '1', '010-6666-7777', 'tech@example.com', '테크리뷰', 'MICRO', 'TECH_ELECTRONICS', 75000, 15000, '최신 기술과 제품을 리뷰하는 인플루언서입니다.', 'https://instagram.com/techreview', 'DAEJEON,SEOUL', 12.0, 'VERIFIED', NOW(), '1', '1', 'INFLUENCER'),
-('lifestyler', 'password123', '라이프스타일러', '1', '010-7777-8888', 'lifestyle@example.com', '라이프러', 'MEGA', 'LIFESTYLE', 500000, 80000, '일상의 소소한 행복을 공유하는 인플루언서입니다.', 'https://instagram.com/lifestyler', 'GYEONGGI,SEOUL', 25.0, 'VERIFIED', NOW(), '1', '1', 'INFLUENCER');
-
--- 인덱스 생성 완료 후 통계 정보 업데이트
-ANALYZE TABLE `VENDOR_INFLUENCER_MAPPING`;
-ANALYZE TABLE `PARTNERSHIP_HISTORY`;
-ANALYZE TABLE `NOTIFICATION`;
-ANALYZE TABLE `VENDOR_LIST`;
-ANALYZE TABLE `USER_LIST`;

+ 0 - 49
ddl/009_add_indexes_after_columns_exist.sql

@@ -1,49 +0,0 @@
--- DDL 009: 컬럼 존재 확인 후 인덱스 추가
--- 모든 필요한 컬럼이 추가된 후에 실행하세요
-
--- 주의: 이 파일을 실행하기 전에 fix_missing_columns.sql을 먼저 실행하세요
-
--- 1. 기본 인덱스들 (컬럼이 존재하는 경우에만 추가)
--- CATEGORY 컬럼용 인덱스
-ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_category` (`CATEGORY`);
-
--- REGION 컬럼용 인덱스
-ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_region` (`REGION`);
-
--- APPROVAL_STATUS 컬럼용 인덱스
-ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_approval_status` (`APPROVAL_STATUS`);
-
--- COMPANY_NAME 인덱스 (기존 컬럼)
-ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_company_name` (`COMPANY_NAME`);
-
--- 2. USER_LIST 인덱스들
--- INFLUENCER_TYPE 컬럼용 인덱스
-ALTER TABLE `USER_LIST` ADD INDEX `idx_influencer_type` (`INFLUENCER_TYPE`);
-
--- PRIMARY_CATEGORY 컬럼용 인덱스
-ALTER TABLE `USER_LIST` ADD INDEX `idx_primary_category` (`PRIMARY_CATEGORY`);
-
--- VERIFICATION_STATUS 컬럼용 인덱스
-ALTER TABLE `USER_LIST` ADD INDEX `idx_verification_status` (`VERIFICATION_STATUS`);
-
--- FOLLOWER_COUNT 컬럼용 인덱스
-ALTER TABLE `USER_LIST` ADD INDEX `idx_follower_count` (`FOLLOWER_COUNT`);
-
--- EMAIL 인덱스 (기존 컬럼)
-ALTER TABLE `USER_LIST` ADD INDEX `idx_email` (`EMAIL`);
-
--- NICK_NAME 인덱스 (기존 컬럼)
-ALTER TABLE `USER_LIST` ADD INDEX `idx_nick_name` (`NICK_NAME`);
-
--- 3. 복합 인덱스들 (모든 관련 컬럼이 존재할 때만 추가)
--- VENDOR_LIST 복합 인덱스
-ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_category_region_status` (`CATEGORY`, `REGION`, `IS_ACT`);
-
-ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_approval_status_date` (`APPROVAL_STATUS`, `APPROVED_DATE`);
-
--- USER_LIST 복합 인덱스
-ALTER TABLE `USER_LIST` ADD INDEX `idx_type_category_verified` (`INFLUENCER_TYPE`, `PRIMARY_CATEGORY`, `VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` ADD INDEX `idx_category_follower_verified` (`PRIMARY_CATEGORY`, `FOLLOWER_COUNT`, `VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` ADD INDEX `idx_member_type_active_status` (`MEMBER_TYPE`, `IS_ACT`, `STATUS`);

+ 0 - 28
ddl/009_add_vendor_list_indexes.sql

@@ -1,28 +0,0 @@
--- DDL 009: VENDOR_LIST 테이블 인덱스 추가
--- 생성일: 2025-07-22
--- 목적: VENDOR_LIST 추가 컬럼에 대한 검색 최적화 인덱스
--- 전제조건: 004번 DDL이 먼저 실행되어 컬럼이 존재해야 함
-
--- 1. 새로 추가된 컬럼들에 대한 인덱스
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_category` (`CATEGORY`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_region` (`REGION`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_approval_status` (`APPROVAL_STATUS`);
-
--- 2. 기존 컬럼 인덱스 추가 (중복 에러 방지를 위해 IF NOT EXISTS 사용)
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_company_name` (`COMPANY_NAME`);
-
--- 3. 복합 인덱스 추가 (검색 성능 향상)
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_category_region_status` (`CATEGORY`, `REGION`, `IS_ACT`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_approval_status_date` (`APPROVAL_STATUS`, `APPROVED_DATE`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_region_category_active` (`REGION`, `CATEGORY`, `IS_ACT`, `STATUS`);

+ 0 - 80
ddl/009_add_vendor_list_indexes_safe.sql

@@ -1,80 +0,0 @@
--- DDL 009: VENDOR_LIST 테이블 인덱스 추가 (안전 버전)
--- 생성일: 2025-07-22
--- 목적: VENDOR_LIST 추가 컬럼에 대한 검색 최적화 인덱스 (중복 방지)
-
--- 1. CATEGORY 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND INDEX_NAME = 'idx_category') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_category` (`CATEGORY`)',
-    'SELECT "idx_category already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 2. REGION 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND INDEX_NAME = 'idx_region') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_region` (`REGION`)',
-    'SELECT "idx_region already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 3. APPROVAL_STATUS 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND INDEX_NAME = 'idx_approval_status') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_approval_status` (`APPROVAL_STATUS`)',
-    'SELECT "idx_approval_status already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 4. COMPANY_NAME 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND INDEX_NAME = 'idx_company_name') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_company_name` (`COMPANY_NAME`)',
-    'SELECT "idx_company_name already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 5. 복합 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND INDEX_NAME = 'idx_category_region_status') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_category_region_status` (`CATEGORY`, `REGION`, `IS_ACT`)',
-    'SELECT "idx_category_region_status already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 6. APPROVAL_STATUS, APPROVED_DATE 복합 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND INDEX_NAME = 'idx_approval_status_date') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_approval_status_date` (`APPROVAL_STATUS`, `APPROVED_DATE`)',
-    'SELECT "idx_approval_status_date already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 7. 추가 복합 인덱스 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND INDEX_NAME = 'idx_region_category_active') = 0,
-    'ALTER TABLE `VENDOR_LIST` ADD INDEX `idx_region_category_active` (`REGION`, `CATEGORY`, `IS_ACT`, `STATUS`)',
-    'SELECT "idx_region_category_active already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;

+ 0 - 30
ddl/009_add_vendor_list_indexes_simple.sql

@@ -1,30 +0,0 @@
--- DDL 009: VENDOR_LIST 테이블 인덱스 추가 (단순 버전)
--- 생성일: 2025-07-22
--- 목적: VENDOR_LIST 추가 컬럼에 대한 검색 최적화 인덱스
-
--- 주의: 이미 인덱스가 존재하는 경우 에러가 발생할 수 있습니다.
--- 에러가 발생하면 해당 인덱스는 이미 존재하는 것이므로 무시하고 계속 진행하세요.
-
--- 1. 새로 추가된 컬럼들에 대한 인덱스
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_category` (`CATEGORY`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_region` (`REGION`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_approval_status` (`APPROVAL_STATUS`);
-
--- 2. 기존 컬럼 인덱스 추가
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_company_name` (`COMPANY_NAME`);
-
--- 3. 복합 인덱스 추가 (검색 성능 향상)
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_category_region_status` (`CATEGORY`, `REGION`, `IS_ACT`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_approval_status_date` (`APPROVAL_STATUS`, `APPROVED_DATE`);
-
-ALTER TABLE `VENDOR_LIST` 
-ADD INDEX `idx_region_category_active` (`REGION`, `CATEGORY`, `IS_ACT`, `STATUS`);

+ 0 - 34
ddl/010_add_user_list_indexes.sql

@@ -1,34 +0,0 @@
--- DDL 010: USER_LIST 테이블 인덱스 추가
--- 생성일: 2025-07-22
--- 목적: USER_LIST 추가 컬럼에 대한 검색 최적화 인덱스
--- 전제조건: 005번 DDL이 먼저 실행되어 컬럼이 존재해야 함
-
--- 1. 새로 추가된 컬럼들에 대한 인덱스
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_influencer_type` (`INFLUENCER_TYPE`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_primary_category` (`PRIMARY_CATEGORY`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_verification_status` (`VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_follower_count` (`FOLLOWER_COUNT`);
-
--- 2. 기존 컬럼 인덱스 추가 (기본적인 검색용)
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_email` (`EMAIL`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_nick_name` (`NICK_NAME`);
-
--- 3. 복합 인덱스 추가 (검색 성능 향상)
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_type_category_verified` (`INFLUENCER_TYPE`, `PRIMARY_CATEGORY`, `VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_category_follower_verified` (`PRIMARY_CATEGORY`, `FOLLOWER_COUNT`, `VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_member_type_active_status` (`MEMBER_TYPE`, `IS_ACT`, `STATUS`);

+ 0 - 102
ddl/010_add_user_list_indexes_safe.sql

@@ -1,102 +0,0 @@
--- DDL 010: USER_LIST 테이블 인덱스 추가 (안전 버전)
--- 생성일: 2025-07-22
--- 목적: USER_LIST 추가 컬럼에 대한 검색 최적화 인덱스 (중복 방지)
-
--- 1. INFLUENCER_TYPE 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_influencer_type') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_influencer_type` (`INFLUENCER_TYPE`)',
-    'SELECT "idx_influencer_type already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 2. PRIMARY_CATEGORY 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_primary_category') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_primary_category` (`PRIMARY_CATEGORY`)',
-    'SELECT "idx_primary_category already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 3. VERIFICATION_STATUS 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_verification_status') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_verification_status` (`VERIFICATION_STATUS`)',
-    'SELECT "idx_verification_status already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 4. FOLLOWER_COUNT 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_follower_count') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_follower_count` (`FOLLOWER_COUNT`)',
-    'SELECT "idx_follower_count already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 5. EMAIL 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_email') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_email` (`EMAIL`)',
-    'SELECT "idx_email already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 6. NICK_NAME 인덱스 추가 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_nick_name') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_nick_name` (`NICK_NAME`)',
-    'SELECT "idx_nick_name already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 7. 복합 인덱스: 타입, 카테고리, 인증상태 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_type_category_verified') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_type_category_verified` (`INFLUENCER_TYPE`, `PRIMARY_CATEGORY`, `VERIFICATION_STATUS`)',
-    'SELECT "idx_type_category_verified already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 8. 복합 인덱스: 카테고리, 팔로워수, 인증상태 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_category_follower_verified') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_category_follower_verified` (`PRIMARY_CATEGORY`, `FOLLOWER_COUNT`, `VERIFICATION_STATUS`)',
-    'SELECT "idx_category_follower_verified already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- 9. 복합 인덱스: 멤버타입, 활성상태, 상태 (존재하지 않는 경우에만)
-SET @sql = IF(
-    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
-     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND INDEX_NAME = 'idx_member_type_active_status') = 0,
-    'ALTER TABLE `USER_LIST` ADD INDEX `idx_member_type_active_status` (`MEMBER_TYPE`, `IS_ACT`, `STATUS`)',
-    'SELECT "idx_member_type_active_status already exists" as info'
-);
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;

+ 0 - 36
ddl/010_add_user_list_indexes_simple.sql

@@ -1,36 +0,0 @@
--- DDL 010: USER_LIST 테이블 인덱스 추가 (단순 버전)
--- 생성일: 2025-07-22
--- 목적: USER_LIST 추가 컬럼에 대한 검색 최적화 인덱스
-
--- 주의: 이미 인덱스가 존재하는 경우 에러가 발생할 수 있습니다.
--- 에러가 발생하면 해당 인덱스는 이미 존재하는 것이므로 무시하고 계속 진행하세요.
-
--- 1. 새로 추가된 컬럼들에 대한 인덱스
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_influencer_type` (`INFLUENCER_TYPE`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_primary_category` (`PRIMARY_CATEGORY`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_verification_status` (`VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_follower_count` (`FOLLOWER_COUNT`);
-
--- 2. 기존 컬럼 인덱스 추가 (기본적인 검색용)
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_email` (`EMAIL`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_nick_name` (`NICK_NAME`);
-
--- 3. 복합 인덱스 추가 (검색 성능 향상)
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_type_category_verified` (`INFLUENCER_TYPE`, `PRIMARY_CATEGORY`, `VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_category_follower_verified` (`PRIMARY_CATEGORY`, `FOLLOWER_COUNT`, `VERIFICATION_STATUS`);
-
-ALTER TABLE `USER_LIST` 
-ADD INDEX `idx_member_type_active_status` (`MEMBER_TYPE`, `IS_ACT`, `STATUS`);

+ 0 - 20
ddl/011_fix_vendor_influencer_mapping_columns.sql

@@ -1,20 +0,0 @@
--- DDL 011: VENDOR_INFLUENCER_MAPPING 테이블 컬럼 수정
--- 목적: 기존 프로젝트 패턴에 맞게 컬럼명 통일
-
--- 1. IS_ACTIVE를 IS_ACT로 변경 (기존 프로젝트 패턴 따름)
-ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-CHANGE COLUMN `IS_ACTIVE` `IS_ACT` varchar(1) NOT NULL DEFAULT 'Y' COMMENT '활성 상태: Y(활성), N(비활성)';
-
--- 2. 기존 프로젝트 패턴에 맞게 타임스탬프 컬럼명 변경
-ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-CHANGE COLUMN `CREATED_AT` `REG_DATE` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '등록일시';
-
-ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-CHANGE COLUMN `UPDATED_AT` `MOD_DATE` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '수정일시';
-
--- 3. REQUEST_DATE를 REG_DATE와 구분하기 위해 그대로 유지하되, 필요시 기본값 설정
-ALTER TABLE `VENDOR_INFLUENCER_MAPPING` 
-MODIFY COLUMN `REQUEST_DATE` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '요청일시';
-
--- 4. 테이블 구조 확인용 쿼리 (참고용)
--- DESCRIBE VENDOR_INFLUENCER_MAPPING;

+ 0 - 134
ddl/012_add_vendor_list_essential_columns.sql

@@ -1,134 +0,0 @@
--- DDL 012: VENDOR_LIST 필수 컬럼 추가
--- 목적: 벤더사 검색 기능에 필요한 컬럼들 추가
-
--- 현재 테이블 구조 확인 (참고용)
--- DESCRIBE VENDOR_LIST;
-
--- 1. CATEGORY 컬럼 추가 (이미 존재하면 오류 발생하므로 개별 실행)
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT '사업 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT';
-
--- 2. REGION 컬럼 추가
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT '지역: SEOUL, GYEONGGI, INCHEON, BUSAN, DAEGU, DAEJEON, GWANGJU, ULSAN, OTHER';
-
--- 3. DESCRIPTION 컬럼 추가
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT '벤더사 설명';
-
--- 4. LOGO 컬럼 추가
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT '로고 이미지 URL';
-
--- 5. TAGS 컬럼 추가
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT '검색 태그 (콤마 구분)';
-
--- 6. APPROVAL_STATUS 컬럼 추가
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT 'PENDING' COMMENT '승인 상태: PENDING, APPROVED, REJECTED';
-
--- 7. APPROVED_DATE 컬럼 추가
--- ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVED_DATE` timestamp NULL DEFAULT NULL COMMENT '승인일시';
-
--- ========================================
--- 실행 방법 (DBeaver에서 개별 실행)
--- ========================================
-
--- 1단계: 현재 컬럼 확인
-SELECT COLUMN_NAME 
-FROM INFORMATION_SCHEMA.COLUMNS 
-WHERE TABLE_NAME = 'VENDOR_LIST' 
-AND TABLE_SCHEMA = DATABASE()
-ORDER BY ORDINAL_POSITION;
-
--- 2단계: 없는 컬럼만 개별 실행
--- 위 주석 처리된 ALTER TABLE 문들을 필요에 따라 개별 실행
-
--- ========================================
--- 한번에 실행하는 버전 (컬럼이 없는 경우에만)
--- ========================================
-
--- CATEGORY 컬럼 존재 확인 및 추가
-SET @col_exists = 0;
-SELECT COUNT(*) INTO @col_exists
-FROM INFORMATION_SCHEMA.COLUMNS 
-WHERE TABLE_NAME = 'VENDOR_LIST' 
-AND COLUMN_NAME = 'CATEGORY' 
-AND TABLE_SCHEMA = DATABASE();
-
-SET @sql = IF(@col_exists = 0, 
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT ''사업 카테고리''', 
-    'SELECT ''CATEGORY column already exists'' as message');
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- REGION 컬럼 존재 확인 및 추가
-SET @col_exists = 0;
-SELECT COUNT(*) INTO @col_exists
-FROM INFORMATION_SCHEMA.COLUMNS 
-WHERE TABLE_NAME = 'VENDOR_LIST' 
-AND COLUMN_NAME = 'REGION' 
-AND TABLE_SCHEMA = DATABASE();
-
-SET @sql = IF(@col_exists = 0, 
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT ''지역''', 
-    'SELECT ''REGION column already exists'' as message');
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- DESCRIPTION 컬럼 존재 확인 및 추가
-SET @col_exists = 0;
-SELECT COUNT(*) INTO @col_exists
-FROM INFORMATION_SCHEMA.COLUMNS 
-WHERE TABLE_NAME = 'VENDOR_LIST' 
-AND COLUMN_NAME = 'DESCRIPTION' 
-AND TABLE_SCHEMA = DATABASE();
-
-SET @sql = IF(@col_exists = 0, 
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT ''벤더사 설명''', 
-    'SELECT ''DESCRIPTION column already exists'' as message');
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- TAGS 컬럼 존재 확인 및 추가
-SET @col_exists = 0;
-SELECT COUNT(*) INTO @col_exists
-FROM INFORMATION_SCHEMA.COLUMNS 
-WHERE TABLE_NAME = 'VENDOR_LIST' 
-AND COLUMN_NAME = 'TAGS' 
-AND TABLE_SCHEMA = DATABASE();
-
-SET @sql = IF(@col_exists = 0, 
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT ''검색 태그''', 
-    'SELECT ''TAGS column already exists'' as message');
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- LOGO 컬럼 존재 확인 및 추가
-SET @col_exists = 0;
-SELECT COUNT(*) INTO @col_exists
-FROM INFORMATION_SCHEMA.COLUMNS 
-WHERE TABLE_NAME = 'VENDOR_LIST' 
-AND COLUMN_NAME = 'LOGO' 
-AND TABLE_SCHEMA = DATABASE();
-
-SET @sql = IF(@col_exists = 0, 
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT ''로고 이미지 URL''', 
-    'SELECT ''LOGO column already exists'' as message');
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;
-
--- APPROVAL_STATUS 컬럼 존재 확인 및 추가
-SET @col_exists = 0;
-SELECT COUNT(*) INTO @col_exists
-FROM INFORMATION_SCHEMA.COLUMNS 
-WHERE TABLE_NAME = 'VENDOR_LIST' 
-AND COLUMN_NAME = 'APPROVAL_STATUS' 
-AND TABLE_SCHEMA = DATABASE();
-
-SET @sql = IF(@col_exists = 0, 
-    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT ''PENDING'' COMMENT ''승인 상태''', 
-    'SELECT ''APPROVAL_STATUS column already exists'' as message');
-PREPARE stmt FROM @sql;
-EXECUTE stmt;
-DEALLOCATE PREPARE stmt;

+ 0 - 25
ddl/013_simple_vendor_list_columns.sql

@@ -1,25 +0,0 @@
--- DDL 013: VENDOR_LIST 컬럼 추가 (단순 버전)
--- DBeaver에서 하나씩 실행하세요 (이미 존재하면 오류 발생)
-
--- 1. DESCRIPTION 컬럼 추가 ⭐ 가장 중요
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT '벤더사 설명';
-
--- 2. CATEGORY 컬럼 추가
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT '사업 카테고리';
-
--- 3. REGION 컬럼 추가
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT '지역';
-
--- 4. TAGS 컬럼 추가
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT '검색 태그';
-
--- 5. LOGO 컬럼 추가
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT '로고 이미지 URL';
-
--- 6. APPROVAL_STATUS 컬럼 추가
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT 'APPROVED' COMMENT '승인 상태';
-
--- ==========================================
--- 실행 후 확인
--- ==========================================
-DESCRIBE VENDOR_LIST;

+ 0 - 82
ddl/014_update_vendor_test_data.sql

@@ -1,82 +0,0 @@
--- DDL 014: VENDOR_LIST 테스트 데이터 업데이트
--- 목적: 검색 기능 테스트를 위한 샘플 데이터 추가
-
--- 1. 현재 테이블 구조 확인
-DESCRIBE VENDOR_LIST;
-
--- 2. 현재 데이터 확인
-SELECT SEQ, COMPANY_NAME, CATEGORY, REGION, DESCRIPTION, TAGS FROM VENDOR_LIST;
-
--- 3. 기존 데이터에 검색 가능한 정보 추가
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'TECH_ELECTRONICS',
-    REGION = 'SEOUL', 
-    DESCRIPTION = '벤더 담당자 회사입니다. 다양한 IT 서비스를 제공합니다.',
-    TAGS = '벤더,IT,서비스,기술'
-WHERE SEQ = 1;
-
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'LIFESTYLE',
-    REGION = 'GYEONGGI',
-    DESCRIPTION = '테스트 회사입니다. 라이프스타일 관련 제품을 다룹니다.',
-    TAGS = '테스트,라이프스타일,제품'
-WHERE SEQ = 2;
-
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'FASHION_BEAUTY',
-    REGION = 'SEOUL',
-    DESCRIPTION = '인터스코프는 패션 뷰티 분야의 전문 회사입니다. 다양한 브랜드와 협업합니다.',
-    TAGS = '인터스코프,패션,뷰티,브랜드'
-WHERE SEQ = 3;
-
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'FOOD_HEALTH',
-    REGION = 'BUSAN',
-    DESCRIPTION = '김민수 회사는 건강한 식품을 전문으로 하는 벤더사입니다.',
-    TAGS = '김민수,식품,건강,음식'
-WHERE SEQ = 5;
-
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'CULTURE_ENTERTAINMENT',
-    REGION = 'SEOUL',
-    DESCRIPTION = '인터스코프 엔터테인먼트 부문으로 문화 콘텐츠를 제작합니다.',
-    TAGS = '엔터테인먼트,문화,콘텐츠'
-WHERE SEQ = 6;
-
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'SPORTS_LEISURE',
-    REGION = 'DAEGU',
-    DESCRIPTION = '테스트 회사로 스포츠 레저 관련 제품을 판매합니다.',
-    TAGS = '스포츠,레저,운동'
-WHERE SEQ = 7;
-
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'TECH_ELECTRONICS',
-    REGION = 'SEOUL',
-    DESCRIPTION = '관리자 회사로 IT 전자제품 전문 벤더입니다.',
-    TAGS = '관리자,IT,전자제품,기술'
-WHERE SEQ = 8;
-
--- 4. 업데이트 결과 확인
-SELECT SEQ, COMPANY_NAME, CATEGORY, REGION, DESCRIPTION, TAGS 
-FROM VENDOR_LIST 
-ORDER BY SEQ;
-
--- 5. 검색 테스트 쿼리들
--- 키워드 검색 테스트
-SELECT SEQ, COMPANY_NAME, CATEGORY, REGION 
-FROM VENDOR_LIST 
-WHERE IS_ACT = 'Y' 
-AND (COMPANY_NAME LIKE '%인터스코프%' OR DESCRIPTION LIKE '%인터스코프%' OR TAGS LIKE '%인터스코프%');
-
--- 카테고리 검색 테스트  
-SELECT SEQ, COMPANY_NAME, CATEGORY, REGION 
-FROM VENDOR_LIST 
-WHERE IS_ACT = 'Y' 
-AND CATEGORY = 'FASHION_BEAUTY';
-
--- 지역 검색 테스트
-SELECT SEQ, COMPANY_NAME, CATEGORY, REGION 
-FROM VENDOR_LIST 
-WHERE IS_ACT = 'Y' 
-AND REGION = 'SEOUL';

+ 0 - 30
ddl/015_quick_vendor_data_update.sql

@@ -1,30 +0,0 @@
--- DDL 015: VENDOR_LIST 빠른 데이터 업데이트
--- DBeaver에서 바로 실행 가능
-
--- 인터스코프 데이터 업데이트 (SEQ = 3)
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'FASHION_BEAUTY',
-    REGION = 'SEOUL',
-    DESCRIPTION = '인터스코프는 패션 뷰티 분야의 전문 회사입니다.',
-    TAGS = '인터스코프,패션,뷰티,브랜드,cosmetic'
-WHERE SEQ = 3;
-
--- 다른 데이터들도 업데이트
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'TECH_ELECTRONICS',
-    REGION = 'SEOUL',
-    DESCRIPTION = '벤더 담당자 IT 서비스 회사',
-    TAGS = '벤더,IT,기술,서비스'
-WHERE SEQ = 1;
-
-UPDATE VENDOR_LIST SET 
-    CATEGORY = 'LIFESTYLE', 
-    REGION = 'GYEONGGI',
-    DESCRIPTION = '라이프스타일 테스트 회사',
-    TAGS = '테스트,라이프스타일'
-WHERE SEQ = 2;
-
--- 업데이트 확인
-SELECT SEQ, COMPANY_NAME, CATEGORY, REGION, DESCRIPTION 
-FROM VENDOR_LIST 
-WHERE COMPANY_NAME LIKE '%인터스코프%';

+ 0 - 51
ddl/016_add_user_list_additional_columns.sql

@@ -1,51 +0,0 @@
--- 1단계: REGION 컬럼 추가
-ALTER TABLE USER_LIST
-ADD COLUMN REGION VARCHAR(50) COMMENT '지역' AFTER EMAIL;
-
--- 2단계: ENGAGEMENT_RATE 컬럼 추가
-ALTER TABLE USER_LIST
-ADD COLUMN ENGAGEMENT_RATE DECIMAL(5,2) COMMENT '참여율' AFTER FOLLOWER_COUNT;
-
--- 3단계: DESCRIPTION 컬럼 추가
-ALTER TABLE USER_LIST
-ADD COLUMN DESCRIPTION TEXT COMMENT '소개글' AFTER ENGAGEMENT_RATE;
-
--- 4단계: SNS_CHANNELS 컬럼 추가
-ALTER TABLE USER_LIST
-ADD COLUMN SNS_CHANNELS TEXT COMMENT 'SNS 채널 정보 (JSON)' AFTER DESCRIPTION;
-
--- 5단계: 인덱스 추가
-ALTER TABLE USER_LIST
-ADD INDEX idx_region (REGION),
-ADD INDEX idx_follower_count (FOLLOWER_COUNT),
-ADD INDEX idx_engagement_rate (ENGAGEMENT_RATE);
-
--- 6단계: 테스트 데이터 업데이트 (필요한 경우 실행)
-UPDATE USER_LIST
-SET 
-    REGION = CASE 
-        WHEN MOD(SEQ, 8) = 0 THEN 'SEOUL'
-        WHEN MOD(SEQ, 8) = 1 THEN 'BUSAN'
-        WHEN MOD(SEQ, 8) = 2 THEN 'INCHEON'
-        WHEN MOD(SEQ, 8) = 3 THEN 'DAEGU'
-        WHEN MOD(SEQ, 8) = 4 THEN 'DAEJEON'
-        WHEN MOD(SEQ, 8) = 5 THEN 'GWANGJU'
-        WHEN MOD(SEQ, 8) = 6 THEN 'ULSAN'
-        ELSE 'GYEONGGI'
-    END,
-    ENGAGEMENT_RATE = ROUND(RAND() * 10, 2),
-    DESCRIPTION = CASE 
-        WHEN PRIMARY_CATEGORY IS NOT NULL THEN
-            CASE 
-                WHEN PRIMARY_CATEGORY = 'FASHION_BEAUTY' THEN '패션과 뷰티 콘텐츠를 제작하는 인플루언서입니다.'
-                WHEN PRIMARY_CATEGORY = 'FOOD_HEALTH' THEN '맛집 탐방과 건강한 식단을 소개하는 푸드 크리에이터입니다.'
-                WHEN PRIMARY_CATEGORY = 'LIFESTYLE' THEN '일상의 특별한 순간을 공유하는 라이프스타일 크리에이터입니다.'
-                ELSE '다양한 콘텐츠를 제작하는 크리에이터입니다.'
-            END
-        ELSE '프로필 소개가 없습니다.'
-    END,
-    SNS_CHANNELS = CASE 
-        WHEN MOD(SEQ, 3) = 0 THEN CONCAT('[{"platform":"instagram","handle":"@user_', SEQ, '"},{"platform":"youtube","handle":"@creator_', SEQ, '"}]')
-        WHEN MOD(SEQ, 3) = 1 THEN CONCAT('[{"platform":"tiktok","handle":"@tiktok_', SEQ, '"},{"platform":"instagram","handle":"@insta_', SEQ, '"}]')
-        ELSE CONCAT('[{"platform":"youtube","handle":"@youtube_', SEQ, '"},{"platform":"blog","handle":"blog.creator', SEQ, '.com"}]')
-    END; 

+ 0 - 87
ddl/017_add_test_influencer_data.sql

@@ -1,87 +0,0 @@
--- 테스트용 인플루언서 데이터 추가 (USER_LIST)
-INSERT INTO USER_LIST (
-    SEQ,
-    NICK_NAME,
-    NAME,
-    EMAIL,
-    REGION,
-    PRIMARY_CATEGORY,
-    DESCRIPTION,
-    SNS_CHANNELS,
-    FOLLOWER_COUNT,
-    ENGAGEMENT_RATE,
-    PROFILE_IMAGE,
-    IS_ACT
-) VALUES 
-(8,
-'패션요정', 
-'김패션',
-'fashion@example.com',
-'SEOUL',
-'FASHION_BEAUTY',
-'10년차 패션 크리에이터입니다. 트렌디한 스타일링과 뷰티 팁을 공유합니다.',
-'[{"platform":"instagram","handle":"@fashion_fairy"},{"platform":"youtube","handle":"@fashionfairy"}]',
-150000,
-5.8,
-NULL,
-'Y'
-),
-(9,
-'푸드마스터',
-'이맛남',
-'food@example.com',
-'BUSAN',
-'FOOD_HEALTH',
-'맛집 탐방과 레시피를 공유하는 푸드 크리에이터입니다.',
-'[{"platform":"instagram","handle":"@food_master"},{"platform":"blog","handle":"blog.foodmaster.com"}]',
-80000,
-4.2,
-NULL,
-'Y'
-),
-(10,
-'테크리뷰',
-'박테크',
-'tech@example.com',
-'SEOUL',
-'TECH_ELECTRONICS',
-'최신 전자기기와 가전제품을 리뷰하는 테크 인플루언서입니다.',
-'[{"platform":"youtube","handle":"@techreview"},{"platform":"instagram","handle":"@tech_review"}]',
-200000,
-6.5,
-NULL,
-'Y'
-);
-
--- 테스트용 협업 이력 데이터 추가 (VENDOR_INFLUENCER_MAPPING)
-INSERT INTO VENDOR_INFLUENCER_MAPPING (
-    VENDOR_SEQ,
-    INFLUENCER_SEQ,
-    STATUS,
-    REQUEST_TYPE,
-    REQUEST_MESSAGE,
-    RESPONSE_MESSAGE,
-    COMMISSION_RATE,
-    REQUESTED_BY,
-    APPROVED_BY,
-    REQUEST_DATE,
-    RESPONSE_DATE,
-    IS_ACT
-) VALUES 
--- 패션요정(8)이 벤더사(1)에 요청한 케이스
-(1, 8, 'APPROVED', 'INFLUENCER_REQUEST', '패션 제품 홍보를 하고 싶습니다.', '협업하게 되어 기쁩니다.', 10.0, 8, 1, NOW() - INTERVAL 30 DAY, NOW() - INTERVAL 29 DAY, 'Y'),
-
--- 벤더사(2)가 패션요정(8)에게 요청한 케이스
-(2, 8, 'APPROVED', 'VENDOR_REQUEST', '뷰티 제품 홍보를 제안드립니다.', '함께 일하게 되어 기쁩니다.', 12.0, 2, 8, NOW() - INTERVAL 20 DAY, NOW() - INTERVAL 19 DAY, 'Y'),
-
--- 푸드마스터(9)가 벤더사(3)에 요청한 케이스
-(3, 9, 'PENDING', 'INFLUENCER_REQUEST', '식품 리뷰를 하고 싶습니다.', NULL, 15.0, 9, NULL, NOW() - INTERVAL 5 DAY, NULL, 'Y'),
-
--- 벤더사(4)가 푸드마스터(9)에게 요청한 케이스
-(4, 9, 'REJECTED', 'VENDOR_REQUEST', '건강식품 홍보를 제안드립니다.', '현재 다른 협업을 진행중입니다.', NULL, 4, 9, NOW() - INTERVAL 15 DAY, NOW() - INTERVAL 14 DAY, 'Y'),
-
--- 테크리뷰(10)가 벤더사(5)에 요청한 케이스
-(5, 10, 'APPROVED', 'INFLUENCER_REQUEST', '가전제품 리뷰를 하고 싶습니다.', '제품 리뷰를 진행해주세요.', 15.0, 10, 5, NOW() - INTERVAL 40 DAY, NOW() - INTERVAL 39 DAY, 'Y'),
-
--- 벤더사(6)이 테크리뷰(10)에게 요청한 케이스
-(6, 10, 'APPROVED', 'VENDOR_REQUEST', '신제품 홍보를 제안드립니다.', '협업을 진행하겠습니다.', 12.0, 6, 10, NOW() - INTERVAL 10 DAY, NOW() - INTERVAL 9 DAY, 'Y'); 

+ 0 - 5
ddl/check_current_table_structure.sql

@@ -1,5 +0,0 @@
--- USER_LIST 테이블 구조 확인
-SHOW COLUMNS FROM USER_LIST;
-
--- VENDOR_INFLUENCER_MAPPING 테이블 구조 확인
-SHOW COLUMNS FROM VENDOR_INFLUENCER_MAPPING;

+ 0 - 75
ddl/fix_missing_columns.sql

@@ -1,75 +0,0 @@
--- 누락된 컬럼들을 개별적으로 추가하는 DDL
--- DBeaver에서 각 라인을 개별 실행하거나 필요한 것만 실행하세요
-
--- 먼저 현재 VENDOR_LIST 테이블 구조 확인
--- DESCRIBE VENDOR_LIST;
-
--- 1. VENDOR_LIST에 누락될 수 있는 컬럼들 (개별 실행)
-
--- CATEGORY 컬럼 (없다면 추가)
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL COMMENT '사업 카테고리';
-
--- REGION 컬럼 (없다면 추가)
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `REGION` varchar(50) DEFAULT NULL COMMENT '지역';
-
--- DESCRIPTION 컬럼 (없다면 추가)
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `DESCRIPTION` text DEFAULT NULL COMMENT '벤더사 설명';
-
--- LOGO 컬럼 (없다면 추가)
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `LOGO` varchar(500) DEFAULT NULL COMMENT '로고 이미지 URL';
-
--- TAGS 컬럼 (없다면 추가)
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `TAGS` varchar(500) DEFAULT NULL COMMENT '검색 태그';
-
--- APPROVAL_STATUS 컬럼 (없다면 추가)
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVAL_STATUS` varchar(20) DEFAULT 'PENDING' COMMENT '승인 상태';
-
--- APPROVED_DATE 컬럼 (없다면 추가)
-ALTER TABLE `VENDOR_LIST` ADD COLUMN `APPROVED_DATE` timestamp NULL DEFAULT NULL COMMENT '승인일시';
-
--- 2. USER_LIST에 누락될 수 있는 컬럼들 (개별 실행)
-
--- 먼저 현재 USER_LIST 테이블 구조 확인
--- DESCRIBE USER_LIST;
-
--- INFLUENCER_TYPE 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `INFLUENCER_TYPE` varchar(50) DEFAULT NULL COMMENT '인플루언서 타입';
-
--- PRIMARY_CATEGORY 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `PRIMARY_CATEGORY` varchar(50) DEFAULT NULL COMMENT '주요 활동 카테고리';
-
--- FOLLOWER_COUNT 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `FOLLOWER_COUNT` int(11) DEFAULT 0 COMMENT '총 팔로워 수';
-
--- AVG_VIEWS 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `AVG_VIEWS` int(11) DEFAULT 0 COMMENT '평균 조회수';
-
--- PROFILE_IMAGE 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `PROFILE_IMAGE` varchar(500) DEFAULT NULL COMMENT '프로필 이미지 URL';
-
--- BIO 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `BIO` text DEFAULT NULL COMMENT '자기소개';
-
--- INSTAGRAM_URL 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `INSTAGRAM_URL` varchar(200) DEFAULT NULL COMMENT '인스타그램 링크';
-
--- YOUTUBE_URL 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `YOUTUBE_URL` varchar(200) DEFAULT NULL COMMENT '유튜브 링크';
-
--- TIKTOK_URL 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `TIKTOK_URL` varchar(200) DEFAULT NULL COMMENT '틱톡 링크';
-
--- BLOG_URL 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `BLOG_URL` varchar(200) DEFAULT NULL COMMENT '블로그 링크';
-
--- PREFERRED_REGION 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `PREFERRED_REGION` varchar(100) DEFAULT NULL COMMENT '선호 활동 지역';
-
--- MIN_COMMISSION_RATE 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `MIN_COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT '최소 수수료율';
-
--- VERIFICATION_STATUS 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `VERIFICATION_STATUS` varchar(20) DEFAULT 'UNVERIFIED' COMMENT '인증 상태';
-
--- VERIFIED_DATE 컬럼 (없다면 추가)
-ALTER TABLE `USER_LIST` ADD COLUMN `VERIFIED_DATE` timestamp NULL DEFAULT NULL COMMENT '인증일시';

+ 25 - 4
pages/view/vendor/dashboard/influencer-requests.vue

@@ -494,7 +494,9 @@
   |    computed
   ************************************************************************/
   const currentUser = computed(() => {
-    return JSON.parse(localStorage.getItem("authStore"))?.auth || {};
+    const authData = JSON.parse(localStorage.getItem("authStore"))?.auth || {};
+    console.log('🔍 currentUser (벤더 대시보드):', authData);
+    return authData;
   });
 
   /************************************************************************
@@ -530,11 +532,24 @@
         size: pagination.value.pageSize,
       };
 
+      console.log('🔍 loadRequests 호출됨:', params);
+      
       useAxios()
         .post("/api/vendor-influencer/requests", params)
         .then((res) => {
+          console.log('📥 API 응답:', res.data);
           if (res.data.success) {
-            requests.value = res.data.data.items;
+            const items = res.data.data.items;
+            console.log('📋 받아온 요청 목록:', items.length, items);
+            
+            // SEQ 중복 확인
+            const seqs = items.map(item => item.SEQ);
+            const uniqueSeqs = [...new Set(seqs)];
+            if (seqs.length !== uniqueSeqs.length) {
+              console.warn('⚠️ 중복된 SEQ 발견:', seqs);
+            }
+            
+            requests.value = items;
             pagination.value = res.data.data.pagination;
             stats.value = res.data.data.stats || stats.value;
           } else {
@@ -580,15 +595,20 @@
         processedBy: currentUser.value.seq,
         responseMessage: approveModal.value.approveMessage,
       };
+      
+      console.log('✅ 승인 처리 시작:', params);
 
       useAxios()
-        .post("/api/vendor-influencer/process", params)
+        .post("/api/vendor-influencer/approve", params)
         .then((res) => {
+          console.log('📥 승인 처리 응답:', res.data);
           if (res.data.success) {
             $toast.success("승인요청이 승인되었습니다.");
             closeApproveModal();
+            console.log('🔄 승인 후 목록 새로고침');
             loadRequests();
           } else {
+            console.error('❌ 승인 처리 실패:', res.data);
             $toast.error(res.data.message || "승인 처리 중 오류가 발생했습니다.");
           }
         })
@@ -637,7 +657,7 @@
       };
 
       useAxios()
-        .post("/api/vendor-influencer/process", params)
+        .post("/api/vendor-influencer/approve", params)
         .then((res) => {
           if (res.data.success) {
             $toast.success("승인요청이 거부되었습니다.");
@@ -739,6 +759,7 @@
   |    라이프사이클
   ************************************************************************/
   onMounted(async () => {
+    console.log('🚀 influencer-requests 컴포넌트 마운트됨');
     await loadRequests();
   });
 </script>

+ 2 - 2
stores/auth.js

@@ -25,12 +25,12 @@ export const useAuthStore = defineStore('authStore', () => {
   const getSnsTempData = computed(() => auth.value.snsTempData)       // sns 임시데이터 조회
 
   function setAuth(payload){
-    auth.value.companyId = payload.user.COMP_ID
+    auth.value.companyId = payload.user.COMPANY_NUMBER || ''
     auth.value.seq = payload.user.SEQ
     auth.value.id = payload.user.ID
     auth.value.name = payload.user.NAME
     auth.value.email = payload.user.EMAIL
-    auth.value.companyName = payload.user.COMP_NAME
+    auth.value.companyName = payload.user.companyName || payload.user.COMPANY_NAME || ''
     auth.value.phone = payload.user.PHONE
     auth.value.accessToken = payload.accessToken
     auth.value.refreshToken = payload.refreshToken