ERP-node/frontend/types/company.ts

93 lines
2.5 KiB
TypeScript

/**
* 회사 관리 관련 타입 정의
*/
// 회사 기본 정보 인터페이스 (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;
}