Files
2026-06-11 18:47:38 +09:00

91 lines
6.7 KiB
SQL

-- 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='[솔루션] 메일 발송 이력';