P2-07~14 판매대행소/담당자/업체/무료대상자 CRUD 일괄 구현

- 4개 테이블 생성 (sales_agency, manager, company, free_recipient)
- 4개 Model + 4개 Controller + 12개 View
- 담당자: 소속(S)/직위(T) 코드 연동
- 업체: 협회/제작업체/회수업체 유형 분류
- 무료대상자: 무상지급구분(H)/동코드(D) 연동
- 모두 지자체별 멀티테넌시 적용
- 24개 라우트 추가
- E2E 테스트 9개 전체 통과

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
javamon1174
2026-03-25 17:41:15 +09:00
parent b453b970d4
commit da132f0e51
26 changed files with 1400 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
-- ============================================
-- 업체 테이블 (P2-11, P2-12)
-- ============================================
CREATE TABLE IF NOT EXISTS `company` (
`cp_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`cp_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`cp_type` VARCHAR(20) NOT NULL COMMENT '협회/제작업체/회수업체',
`cp_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '업체명',
`cp_biz_no` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '사업자번호',
`cp_rep_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대표자명',
`cp_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '전화번호',
`cp_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '주소',
`cp_state` TINYINT UNSIGNED NOT NULL DEFAULT 1,
`cp_regdate` DATETIME NOT NULL,
PRIMARY KEY (`cp_idx`),
KEY `idx_cp_lg_idx` (`cp_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='업체(협회/제작/회수)';

View File

@@ -0,0 +1,19 @@
-- ============================================
-- 무료용 대상자 테이블 (P2-13, P2-14)
-- ============================================
CREATE TABLE IF NOT EXISTS `free_recipient` (
`fr_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`fr_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`fr_type_code` VARCHAR(20) NOT NULL COMMENT '무상지급구분 code_detail(H)',
`fr_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '대상자/기관명',
`fr_phone` VARCHAR(20) NOT NULL DEFAULT '',
`fr_addr` VARCHAR(255) NOT NULL DEFAULT '',
`fr_dong_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '동코드 code_detail(D)',
`fr_note` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '비고',
`fr_end_date` DATE NULL DEFAULT NULL COMMENT '종료일자',
`fr_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 0=삭제',
`fr_regdate` DATETIME NOT NULL,
PRIMARY KEY (`fr_idx`),
KEY `idx_fr_lg_idx` (`fr_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='무료용 대상자';

View File

@@ -0,0 +1,18 @@
-- ============================================
-- 담당자 테이블 (P2-09, P2-10)
-- ============================================
CREATE TABLE IF NOT EXISTS `manager` (
`mg_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`mg_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`mg_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '담당자명',
`mg_dept_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '소속 code_detail(S)',
`mg_position_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '직위 code_detail(T)',
`mg_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '전화번호',
`mg_phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '휴대전화',
`mg_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '이메일',
`mg_state` TINYINT UNSIGNED NOT NULL DEFAULT 1,
`mg_regdate` DATETIME NOT NULL,
PRIMARY KEY (`mg_idx`),
KEY `idx_mg_lg_idx` (`mg_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='담당자';

View File

@@ -0,0 +1,17 @@
-- ============================================
-- 판매 대행소 테이블 (P2-07, P2-08)
-- ============================================
CREATE TABLE IF NOT EXISTS `sales_agency` (
`sa_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`sa_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK',
`sa_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '대행소명',
`sa_biz_no` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '사업자번호',
`sa_rep_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대표자명',
`sa_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '전화번호',
`sa_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '주소',
`sa_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 0=미사용',
`sa_regdate` DATETIME NOT NULL,
PRIMARY KEY (`sa_idx`),
KEY `idx_sa_lg_idx` (`sa_lg_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='판매 대행소';