feat(부서관리): V1 슬림 스코프 + 트리 컨텍스트 메뉴 UX 리디자인
백엔드: - V018 soft-delete (deleted_at 컬럼) + 휴지통/복구 흐름 - V019 미사용 컬럼 cleanup (V1 슬림 스코프) - DepartmentService.updateDepartment 에 parent_dept_code 사이클 가드 (자기 자신/자손을 부모로 지정 시도 차단) - DepartmentController, mapper 갱신 프론트: - 부서관리 페이지(deptMngList) UX 리디자인 - 트리 노드 ⋮ 컨텍스트 메뉴 (하위 추가, 다른 부서 아래로 이동, 정렬 4단계, 삭제) - 헤더 breadcrumb 으로 부서 위치 상시 표시 - 폼의 상위부서 row 제거 (트리 ⋮ 로 진입점 일원화) - 빈 상태 placeholder + X 닫기 동작 - 토글 버튼 토스 스타일 (아이콘 + 툴팁, 일정한 위치) - 부서유형 row 좁은 화면 가로 오버플로 fix - DepartmentPicker 신규 재사용 컴포넌트 (자손 자동 exclude, 사이클 차단) - 회사관리/프로비저닝 폼 개선 (Step1Basic, fields, CompanyTable, AdminPageRenderer) - companyList/[companyCode]/departments 구버전 페이지 삭제 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -48,15 +48,17 @@ public class StartupSchemaMigrator {
|
||||
// 메타 DB 는 Flyway V017 로도 적용되지만 프로비저닝된 테넌트 DB 는
|
||||
// 회사 생성 시점 스냅샷이 박혀있으므로 부팅 때 모든 활성 DB 에 동기화.
|
||||
// SEQ 만 갱신 → 멱등.
|
||||
// 타입 주의: SEQ 가 varchar 이므로 THEN 값도 문자열 리터럴로 줄 것
|
||||
// (정수 리터럴이면 ELSE SEQ 와 CASE 타입 불일치 42804 발생).
|
||||
"""
|
||||
UPDATE MENU_INFO
|
||||
SET SEQ = CASE MENU_NAME_KOR
|
||||
WHEN '회사관리' THEN 100
|
||||
WHEN '부서관리' THEN 200
|
||||
WHEN '사용자관리' THEN 300
|
||||
WHEN '메뉴관리' THEN 400
|
||||
WHEN '권한관리' THEN 500
|
||||
WHEN '권한 그룹관리' THEN 600
|
||||
WHEN '회사관리' THEN '100'
|
||||
WHEN '부서관리' THEN '200'
|
||||
WHEN '사용자관리' THEN '300'
|
||||
WHEN '메뉴관리' THEN '400'
|
||||
WHEN '권한관리' THEN '500'
|
||||
WHEN '권한 그룹관리' THEN '600'
|
||||
ELSE SEQ
|
||||
END
|
||||
WHERE MENU_TYPE = '0'
|
||||
@@ -67,7 +69,27 @@ public class StartupSchemaMigrator {
|
||||
'회사관리', '부서관리', '사용자관리',
|
||||
'메뉴관리', '권한관리', '권한 그룹관리'
|
||||
)
|
||||
"""
|
||||
""",
|
||||
|
||||
// V018 (1) 부서관리 V1 - DEPT_INFO 소프트삭제 컬럼.
|
||||
// DELETE 동작이 hard 가 아니라 DELETED_AT = NOW() 로 전환됨.
|
||||
// 메타 DB 는 Flyway V018 로도 적용되지만 프로비저닝된 테넌트 DB 는 부팅 때 동기화.
|
||||
"ALTER TABLE DEPT_INFO ADD COLUMN IF NOT EXISTS DELETED_AT TIMESTAMP NULL",
|
||||
|
||||
// V018 (2) DEPT_INFO 활성 부서 부분 인덱스 (DELETED_AT IS NULL 쿼리 가속)
|
||||
"CREATE INDEX IF NOT EXISTS IDX_DEPT_INFO_ACTIVE ON DEPT_INFO (COMPANY_CODE, PARENT_DEPT_CODE) WHERE DELETED_AT IS NULL",
|
||||
|
||||
// V019: 부서관리 V1 - DEPT_INFO 미사용/중복 컬럼 정리.
|
||||
// 메타 DB 는 Flyway V019 로도 적용되지만 프로비저닝된 테넌트 DB 는 부팅 때 동기화.
|
||||
// DROP IF EXISTS 로 멱등성 보장.
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS MASTER_SABUN",
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS MASTER_USER_ID",
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS ORG_HEAD",
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS LOCATION_NAME",
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS SALES_YN",
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS SHOW_IN_CHART",
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS ERP_MANAGED",
|
||||
"ALTER TABLE DEPT_INFO DROP COLUMN IF EXISTS DATA_TYPE"
|
||||
);
|
||||
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
|
||||
Reference in New Issue
Block a user