-- ============================================================================= -- 담당자(manager) 원격/운영 DB 보정 스크립트 -- ============================================================================= -- 목적 -- - 앱에서 사용하는 담당자 구분값(mg_dept_code): company | district | agency -- - 테스트용처럼 보이지 않도록 성명·전화·이메일·직위코드를 현실적인 형태로 정리 -- -- 실행 전 -- 1) 반드시 백업(또는 스테이징 DB에서 먼저 검증) -- 2) 아래 @LG_IDX 를 운영 지자체 PK로 맞추거나, 전체 지자체에 적용하려면 NULL 로 둠 -- -- 사용 예 (MySQL 클라이언트) -- mysql -h HOST -u USER -p DBNAME < writable/database/manager_remote_realistic_update.sql -- -- 주의 -- - 이 스크립트는 **기존 manager 행을 UPDATE** 합니다(INSERT 아님). -- - mg_position_code 는 기존 시드에서 쓰던 직위 코드(1,2,3,5,6)를 순환 배정합니다. -- 운영 DB에 해당 code_detail(T) 코드가 없다면 직위 셀렉트가 비어 보일 수 있으니, 그 경우 직위 UPDATE 블록만 주석 처리하세요. -- ============================================================================= SET NAMES utf8mb4; -- 적용 대상 지자체: 예) 대구 시범 lg_idx=1 이면 1 / 전체 적용이면 NULL SET @LG_IDX := NULL; -- --------------------------------------------------------------------------- -- 1) 카테고리(담당자 구분) 부여: mg_idx 기준으로 3종 순환 -- --------------------------------------------------------------------------- UPDATE `manager` m SET m.`mg_dept_code` = ELT(MOD(m.`mg_idx`, 3) + 1, 'company', 'district', 'agency') WHERE m.`mg_state` = 1 AND (@LG_IDX IS NULL OR m.`mg_lg_idx` = @LG_IDX); -- --------------------------------------------------------------------------- -- 2) 성명/전화/이메일/직위: mg_idx 기반으로 일관되게 생성(완전 난수 아님) -- --------------------------------------------------------------------------- UPDATE `manager` m SET m.`mg_name` = ELT( MOD(m.`mg_idx`, 18) + 1, '김민환', '이서연', '박지훈', '최유진', '정다운', '한채원', '오승우', '윤가람', '강도현', '임하늘', '조은별', '배시현', '문태영', '신재원', '홍수진', '권도영', '안예린', '유재혁' ), m.`mg_tel` = CONCAT( '053-661-', LPAD(300 + MOD(m.`mg_idx`, 700), 4, '0') ), m.`mg_phone` = CONCAT( '010-', LPAD(2000 + MOD(m.`mg_idx` * 7, 7999), 4, '0'), '-', LPAD(3000 + MOD(m.`mg_idx` * 11, 7999), 4, '0') ), m.`mg_email` = CONCAT('waste.mgr.', m.`mg_idx`, '@daegu.go.kr'), m.`mg_position_code` = ELT(MOD(m.`mg_idx`, 5) + 1, '1', '2', '3', '5', '6') WHERE m.`mg_state` = 1 AND (@LG_IDX IS NULL OR m.`mg_lg_idx` = @LG_IDX); -- --------------------------------------------------------------------------- -- 3) 확인용 SELECT (실행 후 결과 점검) -- --------------------------------------------------------------------------- -- SELECT mg_idx, mg_lg_idx, mg_dept_code, mg_name, mg_position_code, mg_tel, mg_phone, mg_email -- FROM manager -- WHERE mg_state = 1 AND (@LG_IDX IS NULL OR mg_lg_idx = @LG_IDX) -- ORDER BY mg_lg_idx, mg_idx;