/** * 회사 관리 관련 타입 정의 */ // 회사 기본 정보 인터페이스 (DB 테이블 구조 기반) export interface Company { company_code: string; // 회사 코드 (varchar 32) - PK company_name: string; // 회사명 (varchar 64) business_registration_number?: string; // 사업자등록번호 (varchar 20) representative_name?: string; // 대표자명 (varchar 100) representative_phone?: string; // 대표 연락처 (varchar 20) email?: string; // 이메일 (varchar 255) website?: string; // 웹사이트 (varchar 500) address?: string; // 회사 주소 (text) writer: string; // 등록자 (varchar 32) regdate: string; // 등록일시 (timestamp -> ISO string) status: string; // 상태 (varchar 32) // 디스크 사용량 정보 (선택적) diskUsage?: { fileCount: number; totalSize: number; totalSizeMB: number; lastChecked: string; }; } // 회사 등록/수정 폼 데이터 export interface CompanyFormData { company_name: string; // 회사명 (필수) business_registration_number: string; // 사업자등록번호 (필수) representative_name?: string; // 대표자명 representative_phone?: string; // 대표 연락처 email?: string; // 이메일 website?: string; // 웹사이트 address?: string; // 회사 주소 } // 회사 검색 필터 export interface CompanySearchFilter { company_name?: string; // 회사명으로 검색 status?: string; // 상태로 필터링 } // 회사 관리 모달 상태 export interface CompanyModalState { isOpen: boolean; mode: "create" | "edit"; // 등록 모드 or 수정 모드 selectedCompany: Company | null; formData: CompanyFormData; } // 회사 삭제 다이얼로그 상태 export interface CompanyDeleteState { isOpen: boolean; targetCompany: Company | null; } // API 응답 타입 export interface CompanyApiResponse { success: boolean; message: string; data?: Company | Company[]; } // 회사 목록 테이블 컬럼 정의 export interface CompanyTableColumn { key: keyof Company; label: string; sortable?: boolean; width?: string; } // 디스크 사용량 정보 export interface DiskUsageInfo { companyCode: string; fileCount: number; totalSize: number; totalSizeMB: number; lastChecked: string; } // 전체 디스크 사용량 통계 export interface AllDiskUsageInfo { companies: DiskUsageInfo[]; summary: { totalCompanies: number; totalFiles: number; totalSize: number; totalSizeMB: number; }; lastChecked: string; }