first commit 2
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
-- 1. SMTP 서버 설정을 저장하는 테이블
|
||||
CREATE TABLE IF NOT EXISTS `g5_mail_smtp_config` (
|
||||
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '고유 ID',
|
||||
`name` VARCHAR(255) NOT NULL COMMENT 'SMTP 설정 이름 (관리용)',
|
||||
`host` VARCHAR(255) NOT NULL COMMENT 'SMTP 호스트 주소',
|
||||
`username` VARCHAR(255) NOT NULL COMMENT 'SMTP 사용자 아이디',
|
||||
`password` VARCHAR(255) NOT NULL COMMENT 'SMTP 사용자 비밀번호',
|
||||
`port` INT NOT NULL DEFAULT 465 COMMENT '포트 번호',
|
||||
`encryption` ENUM('none','ssl','tls') NOT NULL DEFAULT 'ssl' COMMENT '암호화 방식',
|
||||
`from_email` VARCHAR(255) NOT NULL COMMENT '발신자 이메일',
|
||||
`from_name` VARCHAR(255) NOT NULL COMMENT '발신자 이름',
|
||||
`is_use` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '사용 여부 (1:사용, 0:미사용)',
|
||||
`is_deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '삭제 여부 (1:삭제, 0:정상)',
|
||||
`created_by` VARCHAR(20) NOT NULL COMMENT '생성자 아이디',
|
||||
`updated_by` VARCHAR(20) NOT NULL COMMENT '수정자 아이디',
|
||||
`created_at` DATETIME NOT NULL COMMENT '생성일시',
|
||||
`updated_at` DATETIME NOT NULL COMMENT '수정일시'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] SMTP 서버 설정 정보';
|
||||
|
||||
-- 2. SMTP 설정 변경 이력을 기록하는 테이블
|
||||
CREATE TABLE IF NOT EXISTS `g5_mail_smtp_change_log` (
|
||||
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '고유 ID',
|
||||
`smtp_config_id` INT UNSIGNED NOT NULL COMMENT 'SMTP 설정 ID',
|
||||
`action` ENUM('insert','update','delete') NOT NULL COMMENT '작업 종류 (추가, 수정, 삭제)',
|
||||
`changed_by` VARCHAR(20) NOT NULL COMMENT '변경자 아이디',
|
||||
`change_date` DATETIME NOT NULL COMMENT '변경일시',
|
||||
`change_details` TEXT NOT NULL COMMENT '변경 상세 내용',
|
||||
KEY `smtp_config_id` (`smtp_config_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] SMTP 설정 변경 이력';
|
||||
|
||||
-- 3. 메일 템플릿의 본문, 헤더, 푸터 등을 저장하는 테이블
|
||||
CREATE TABLE IF NOT EXISTS `g5_mail_template` (
|
||||
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '고유 ID',
|
||||
`code` VARCHAR(100) NOT NULL UNIQUE COMMENT '템플릿 고유 코드 (개발자용)',
|
||||
`title` VARCHAR(255) NOT NULL COMMENT '메일 제목',
|
||||
`content` LONGTEXT NOT NULL COMMENT '메일 본문 내용 (HTML)',
|
||||
`header_html` TEXT NULL COMMENT '템플릿별 헤더 HTML',
|
||||
`footer_html` TEXT NULL COMMENT '템플릿별 푸터 HTML',
|
||||
`is_use` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '사용 여부 (1:사용, 0:미사용)',
|
||||
`is_deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '삭제 여부 (1:삭제, 0:정상)',
|
||||
`created_by` VARCHAR(20) NOT NULL COMMENT '생성자 아이디',
|
||||
`updated_by` VARCHAR(20) NOT NULL COMMENT '수정자 아이디',
|
||||
`created_at` DATETIME NOT NULL COMMENT '생성일시',
|
||||
`updated_at` DATETIME NOT NULL COMMENT '수정일시'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 메일 템플릿 정보';
|
||||
|
||||
-- 4. 각 템플릿에 사용되는 치환 변수({이름})와 기본값을 저장하는 테이블
|
||||
CREATE TABLE IF NOT EXISTS `g5_mail_template_vars` (
|
||||
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '고유 ID',
|
||||
`template_id` INT UNSIGNED NOT NULL COMMENT '메일 템플릿 ID',
|
||||
`var_name` VARCHAR(100) NOT NULL COMMENT '치환 변수명 (예: 이름)',
|
||||
`default_value` TEXT NULL COMMENT '치환 변수의 기본값',
|
||||
`created_at` DATETIME NOT NULL COMMENT '생성일시',
|
||||
`updated_at` DATETIME NOT NULL COMMENT '수정일시',
|
||||
KEY `template_id` (`template_id`),
|
||||
CONSTRAINT `fk_template_vars_template_id` FOREIGN KEY (`template_id`) REFERENCES `g5_mail_template`(`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 메일 템플릿의 치환 변수 정보';
|
||||
|
||||
-- 5. 메일 템플릿 변경 이력을 기록하는 테이블
|
||||
CREATE TABLE IF NOT EXISTS `g5_mail_template_change_log` (
|
||||
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '고유 ID',
|
||||
`template_id` INT UNSIGNED NOT NULL COMMENT '메일 템플릿 ID',
|
||||
`action` ENUM('insert','update','delete') NOT NULL COMMENT '작업 종류 (추가, 수정, 삭제)',
|
||||
`changed_by` VARCHAR(20) NOT NULL COMMENT '변경자 아이디',
|
||||
`change_date` DATETIME NOT NULL COMMENT '변경일시',
|
||||
`change_details` TEXT NOT NULL COMMENT '변경 상세 내용',
|
||||
KEY `template_id` (`template_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 메일 템플릿 변경 이력';
|
||||
|
||||
-- 6. 메일 발송 성공/실패 이력을 모두 기록하는 테이블
|
||||
CREATE TABLE IF NOT EXISTS `g5_mail_send_log` (
|
||||
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '고유 ID',
|
||||
`to_email` VARCHAR(255) NOT NULL COMMENT '수신자 이메일',
|
||||
`cc_email` VARCHAR(255) DEFAULT NULL COMMENT '참조 이메일',
|
||||
`bcc_email` VARCHAR(255) DEFAULT NULL COMMENT '숨은참조 이메일',
|
||||
`subject` VARCHAR(255) NOT NULL COMMENT '메일 제목',
|
||||
`body` LONGTEXT NOT NULL COMMENT '메일 본문 (HTML)',
|
||||
`status` ENUM('success','fail') NOT NULL COMMENT '발송 상태 (성공, 실패)',
|
||||
`error_msg` TEXT NULL COMMENT '발송 실패 시 상세 오류 메시지',
|
||||
`try_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '재시도 횟수',
|
||||
`max_try_count` INT UNSIGNED NOT NULL DEFAULT 3 COMMENT '최대 재시도 횟수',
|
||||
`send_time` DATETIME DEFAULT NULL COMMENT '발송 완료 일시',
|
||||
`resend_of` INT UNSIGNED DEFAULT NULL COMMENT '재발송의 원본 로그 ID',
|
||||
`is_scheduled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '예약 발송 여부 (1:예약, 0:즉시)',
|
||||
`scheduled_time` DATETIME DEFAULT NULL COMMENT '예약 발송 시간',
|
||||
`created_by` VARCHAR(20) NOT NULL COMMENT '발송 요청자 아이디',
|
||||
`created_at` DATETIME NOT NULL COMMENT '로그 생성 일시',
|
||||
KEY `status` (`status`),
|
||||
KEY `resend_of` (`resend_of`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 메일 발송 이력';
|
||||
Reference in New Issue
Block a user