/** * 부서 관리 관련 타입 정의 */ // 부서 정보 (dept_info 테이블 1:1 매핑) — V019 정리 후 export interface Department { dept_code: string; // 부서 코드 (PK) parent_dept_code?: string | null; // 상위 부서 코드 dept_name: string; // 부서명 location?: string | null; // 위치코드 (UI hide, V2 매핑용 컬럼만 유지) created_date?: string | null; // 생성일시 status?: "active" | "inactive" | null; // 사용여부 company_name?: string | null; // 회사명 company_code: string; // 회사 코드 short_name?: string | null; // 부서약칭 dept_type?: string | null; // 부서유형 (dept/team/temp) org_system?: string | null; // 조직체계 approval_manager?: string | null; // 결재관리자 user_id dept_manager?: string | null; // 부서관리자 user_id zipcode?: string | null; address1?: string | null; address2?: string | null; start_date?: string | null; // YYYY-MM-DD end_date?: string | null; // YYYY-MM-DD sort_order?: number | null; created_at?: string; updated_at?: string; deleted_at?: string | null; // V1: soft-delete 시각. NULL=active, 값 있음=휴지통 // 다중 관리자 매핑 (서버 응답: dept_managers 테이블에서 role 별로 json_agg) approval_managers?: { user_id: string }[]; dept_managers?: { user_id: string }[]; org_leaders?: { user_id: string }[]; // UI용 추가 필드 children?: Department[]; member_count?: number; } // 부서원 정보 export interface DepartmentMember { user_id: string; // 사용자 ID user_name: string; // 사용자명 dept_code: string; // 부서 코드 dept_name: string; // 부서명 is_primary: boolean; // 주 부서 여부 position_name?: string; // 직책명 email?: string; // 이메일 phone?: string; // 전화번호 cell_phone?: string; // 휴대폰 } // 사용자-부서 매핑 (겸직 지원) export interface UserDepartmentMapping { user_id: string; dept_code: string; is_primary: boolean; // 주 부서 여부 created_at?: string; } // 부서 등록/수정 폼 데이터 — dept_info 스키마 1:1 (V019 정리 후) export interface DepartmentFormData { dept_name: string; // 부서명 (필수) parent_dept_code?: string | null; short_name?: string | null; dept_type?: string | null; org_system?: string | null; approval_manager?: string | null; dept_manager?: string | null; zipcode?: string | null; address1?: string | null; address2?: string | null; start_date?: string | null; end_date?: string | null; sort_order?: number | null; status?: "active" | "inactive" | null; // dept_info 추가 필드 (location 코드만 유지) location?: string | null; dept_code?: string | null; // 일괄등록용 (자동 부여 시 미전달) } // 부서 트리 노드 (UI용) export interface DepartmentTreeNode { dept_code: string; dept_name: string; parent_dept_code?: string | null; children: DepartmentTreeNode[]; member_count: number; isExpanded: boolean; } // 부서 API 응답 export interface DepartmentApiResponse { success: boolean; message: string; data?: Department | Department[]; } // 부서원 API 응답 export interface DepartmentMemberApiResponse { success: boolean; message: string; data?: DepartmentMember | DepartmentMember[]; }