115 lines
6.9 KiB
SQL
115 lines
6.9 KiB
SQL
-- 1. 견적서 마스터 테이블
|
|
-- 고객의 견적 요청 기본 정보와 여분 필드를 저장합니다.
|
|
CREATE TABLE IF NOT EXISTS `estimate` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`wr_id` int DEFAULT NULL COMMENT '원본 게시물 ID',
|
|
`status` VARCHAR(20) NOT NULL DEFAULT 'requesting' COMMENT '견적 상태 (requesting:신청중, completed:작성완료, bidding:입찰중, selected:채택됨, closed:마감)',
|
|
`bidding_deadline` DATETIME DEFAULT NULL COMMENT '입찰 마감일시',
|
|
`consultant_id` VARCHAR(20) DEFAULT NULL COMMENT '배정된 상담가 ID',
|
|
`consultant_assigned_at` DATETIME DEFAULT NULL COMMENT '상담가 배정일시',
|
|
`company_name` varchar(100) DEFAULT NULL COMMENT '회사명',
|
|
`site_name` varchar(100) DEFAULT NULL COMMENT '현장명',
|
|
`estimate_date` varchar(30) DEFAULT NULL COMMENT '견적일자',
|
|
`temp_1` varchar(255) DEFAULT NULL COMMENT '임시 필드 1',
|
|
`temp_2` varchar(255) DEFAULT NULL COMMENT '임시 필드 2',
|
|
`temp_3` varchar(255) DEFAULT NULL COMMENT '임시 필드 3',
|
|
`temp_4` varchar(255) DEFAULT NULL COMMENT '임시 필드 4',
|
|
`temp_5` varchar(255) DEFAULT NULL COMMENT '임시 필드 5',
|
|
`extra_1` varchar(255) DEFAULT NULL COMMENT '여분 필드 1',
|
|
`extra_2` varchar(255) DEFAULT NULL COMMENT '여분 필드 2',
|
|
`extra_3` varchar(255) DEFAULT NULL COMMENT '여분 필드 3',
|
|
`extra_4` varchar(255) DEFAULT NULL COMMENT '여분 필드 4',
|
|
`extra_5` varchar(255) DEFAULT NULL COMMENT '여분 필드 5',
|
|
`is_used` tinyint(1) NOT NULL DEFAULT '1' COMMENT '사용 여부 (1:사용, 0:미사용)',
|
|
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '삭제 여부 (1:삭제, 0:정상)',
|
|
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '생성일시',
|
|
`created_by` varchar(20) DEFAULT NULL COMMENT '생성자',
|
|
`updated_at` datetime DEFAULT NULL COMMENT '수정일시',
|
|
`updated_by` varchar(20) DEFAULT NULL COMMENT '수정자',
|
|
PRIMARY KEY (`id`),
|
|
KEY `wr_id` (`wr_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='견적서 마스터 정보';
|
|
|
|
|
|
|
|
-- 2. 견적서 상세 항목 테이블
|
|
-- 각 창의 상세 사양과 여분 필드를 저장합니다.
|
|
CREATE TABLE IF NOT EXISTS `estimate_item` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`estimate_id` int DEFAULT NULL COMMENT '견적서 ID (estimate.id)',
|
|
`no` int DEFAULT NULL COMMENT '항목 번호',
|
|
`location` varchar(50) DEFAULT NULL COMMENT '위치',
|
|
`product` varchar(50) DEFAULT NULL COMMENT '품명',
|
|
`window_main_type` VARCHAR(255) NULL DEFAULT NULL COMMENT '창 종류',
|
|
`windowRatio` varchar(20) DEFAULT NULL COMMENT '창비율',
|
|
`windowType` varchar(20) DEFAULT NULL COMMENT '창호형태',
|
|
`replacePart` varchar(20) DEFAULT NULL COMMENT '교체위치',
|
|
`color` varchar(20) DEFAULT NULL COMMENT '색상',
|
|
`spec_width` varchar(20) DEFAULT NULL COMMENT '규격(가로)',
|
|
`spec_height` varchar(20) DEFAULT NULL COMMENT '규격(세로)',
|
|
`glass_thickness` varchar(20) DEFAULT NULL COMMENT '유리두께',
|
|
`glass_color` varchar(20) DEFAULT NULL COMMENT '유리색상',
|
|
`screen` varchar(10) DEFAULT NULL COMMENT '방충망',
|
|
`handle` varchar(20) DEFAULT NULL COMMENT '손잡이(시정장치)',
|
|
`door_dir` varchar(20) DEFAULT NULL COMMENT '문방향',
|
|
`qty` int DEFAULT NULL COMMENT '수량',
|
|
`price` int DEFAULT NULL COMMENT '단가',
|
|
`amount` int DEFAULT NULL COMMENT '금액',
|
|
`install` varchar(5) DEFAULT NULL COMMENT '시공여부',
|
|
`brand` varchar(30) DEFAULT NULL COMMENT '브랜드',
|
|
`temp_1` varchar(255) DEFAULT NULL COMMENT '임시 필드 1',
|
|
`temp_2` varchar(255) DEFAULT NULL COMMENT '임시 필드 2',
|
|
`temp_3` varchar(255) DEFAULT NULL COMMENT '임시 필드 3',
|
|
`temp_4` varchar(255) DEFAULT NULL COMMENT '임시 필드 4',
|
|
`temp_5` varchar(255) DEFAULT NULL COMMENT '임시 필드 5',
|
|
`extra_1` varchar(255) DEFAULT NULL COMMENT '여분 필드 1',
|
|
`extra_2` varchar(255) DEFAULT NULL COMMENT '여분 필드 2',
|
|
`extra_3` varchar(255) DEFAULT NULL COMMENT '여분 필드 3',
|
|
`extra_4` varchar(255) DEFAULT NULL COMMENT '여분 필드 4',
|
|
`extra_5` varchar(255) DEFAULT NULL COMMENT '여분 필드 5',
|
|
`is_used` tinyint(1) NOT NULL DEFAULT '1' COMMENT '사용 여부 (1:사용, 0:미사용)',
|
|
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '삭제 여부 (1:삭제, 0:정상)',
|
|
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '생성일시',
|
|
`created_by` varchar(20) DEFAULT NULL COMMENT '생성자',
|
|
`updated_at` datetime DEFAULT NULL COMMENT '수정일시',
|
|
`updated_by` varchar(20) DEFAULT NULL COMMENT '수정자',
|
|
PRIMARY KEY (`id`),
|
|
KEY `estimate_id` (`estimate_id`),
|
|
CONSTRAINT `fk_item_to_estimate` FOREIGN KEY (`estimate_id`) REFERENCES `estimate` (`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='견적서 상세 항목';
|
|
|
|
|
|
-- 3. 견적 및 항목 변경 이력 테이블
|
|
-- 모든 데이터의 생성, 수정, 삭제 이력을 기록합니다.
|
|
CREATE TABLE IF NOT EXISTS `estimate_history` (
|
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '이력 고유 ID',
|
|
`estimate_id` int NOT NULL COMMENT '견적서 ID',
|
|
`item_id` int DEFAULT NULL COMMENT '견적 항목 ID (항목 변경 시)',
|
|
`action` varchar(20) NOT NULL COMMENT '작업 종류 (create, update, delete)',
|
|
`change_details` longtext COMMENT '변경된 데이터 (JSON 형식)',
|
|
`changed_by` varchar(20) NOT NULL COMMENT '변경자 ID',
|
|
`changed_at` datetime NOT NULL COMMENT '변경일시',
|
|
PRIMARY KEY (`id`),
|
|
KEY `estimate_id` (`estimate_id`),
|
|
KEY `item_id` (`item_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='견적 및 항목 변경 이력';
|
|
|
|
-- 4. 대리점 입찰 정보 테이블
|
|
-- 대리점이 고객의 견적 요청에 대해 제출한 입찰(견적) 정보를 저장합니다.
|
|
CREATE TABLE IF NOT EXISTS `estimate_bidding` (
|
|
`id` int NOT NULL AUTO_INCREMENT,
|
|
`estimate_id` int NOT NULL COMMENT '견적서 ID (estimate.id)',
|
|
`dealer_id` varchar(20) NOT NULL COMMENT '입찰한 대리점 회원 ID',
|
|
`bid_amount` int NOT NULL COMMENT '대리점 제시 금액',
|
|
`bid_message` text COMMENT '대리점 메모',
|
|
`status` varchar(20) NOT NULL DEFAULT 'bidding' COMMENT '입찰 상태 (bidding:입찰중, selected:채택됨, unselected:미채택)',
|
|
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '삭제 여부 (1:삭제, 0:정상)',
|
|
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '생성일시',
|
|
`updated_at` datetime DEFAULT NULL COMMENT '수정일시',
|
|
`updated_by` varchar(20) DEFAULT NULL COMMENT '수정자',
|
|
PRIMARY KEY (`id`),
|
|
KEY `estimate_id` (`estimate_id`),
|
|
KEY `dealer_id` (`dealer_id`),
|
|
CONSTRAINT `fk_bidding_to_estimate` FOREIGN KEY (`estimate_id`) REFERENCES `estimate` (`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='대리점 입찰 정보';
|