/**
 * 부서 관리 관련 타입 정의
 */

// 부서 정보 (dept_info 테이블 기반)
export interface Department {
  dept_code: string; // 부서 코드
  dept_name: string; // 부서명
  company_code: string; // 회사 코드
  parent_dept_code?: string | null; // 상위 부서 코드
  sort_order?: number; // 정렬 순서
  created_at?: string;
  updated_at?: string;
  // UI용 추가 필드
  children?: Department[]; // 하위 부서 목록
  memberCount?: 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;
}

// 부서 등록/수정 폼 데이터
export interface DepartmentFormData {
  dept_name: string; // 부서명 (필수)
  parent_dept_code?: string | null; // 상위 부서 코드
}

// 부서 트리 노드 (UI용)
export interface DepartmentTreeNode {
  dept_code: string;
  dept_name: string;
  parent_dept_code?: string | null;
  children: DepartmentTreeNode[];
  memberCount: 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[];
}

