/**
 * 차량/지게차 관리 타입 정의
 * 레거시 5130 사이트 컬럼 구조 기반 (2025-01-28 스크린샷 검증)
 */

// ===== 엔진오일 교환 기록 =====
export interface OilChangeRecord {
  id: string;
  date: string;           // 교환일
  mileage: string;        // 주행거리
  cost: string;           // 비용
}

// ===== 정비 기록 =====
export interface MaintenanceRecord {
  id: string;
  date: string;           // 정비일
  description: string;    // 정비내역
  cost: string;           // 비용
}

// ===== 차량 관리 =====
export interface Vehicle {
  id: string;
  // 기본 정보
  vehicleNumber: string;        // 차량번호
  vehicleType: string;          // 차종
  purchaseType: string;         // 구매유형 (회사 소유, 렌트, 리스)
  firstRegistrationDate: string; // 최초등록/계약일

  // 담당자 정보
  managerMain: string;          // 담당자(정)
  managerSub: string;           // 담당자(부)

  // 구매/리스 정보
  purchaseDate: string;         // 구매일자
  leaseEndDate: string;         // 리스/렌트 종료일

  // 주행/검사 정보
  totalMileage: string;         // 총 주행거리 (km)
  mileageRecordDate: string;    // 기록일
  inspectionStartDate: string;  // 검사주기 시작일
  inspectionEndDate: string;    // 검사주기 종료일

  // 보험사 가입정보
  insuranceJoinDate: string;    // 가입일
  insuranceCompany: string;     // 보험회사, 증서번호
  insuranceContact: string;     // 연락처
  insuranceFee: string;         // 보험료
  insuranceAmount: string;      // 가입금액

  // 엔진오일 교환
  oilChangeCycle: string;       // 엔진오일 교환주기 (Km)
  oilChangeRecords: OilChangeRecord[]; // 엔진오일 교환 기록 (테이블)

  // 정비내역
  maintenanceRecords: MaintenanceRecord[]; // 정비 기록 (테이블)

  // 비고
  remarks: string;              // 비고
}

export interface VehicleFormData {
  vehicleNumber: string;
  vehicleType: string;
  purchaseType: string;
  firstRegistrationDate: string;
  managerMain: string;
  managerSub: string;
  purchaseDate: string;
  leaseEndDate: string;
  totalMileage: string;
  mileageRecordDate: string;
  inspectionStartDate: string;
  inspectionEndDate: string;
  insuranceJoinDate: string;
  insuranceCompany: string;
  insuranceContact: string;
  insuranceFee: string;
  insuranceAmount: string;
  oilChangeCycle: string;
  oilChangeRecords: OilChangeRecord[];
  maintenanceRecords: MaintenanceRecord[];
  remarks: string;
}

// ===== 차량일지/월간사진기록 =====
export interface VehicleLog {
  id: string;
  writeDate: string;            // 작성일
  vehicleInfo: string;          // 차량정보 (차종 - 차량번호)
  writer: string;               // 작성자
  title: string;                // 제목
  images?: string[];            // 첨부 이미지
  createdAt: string;            // 등록일
}

export interface VehicleLogFormData {
  writeDate: string;
  vehicleInfo: string;            // 차량정보 (차종 - 차량번호)
  writer: string;                 // 작성자
  title: string;                  // 제목
  images?: string[];              // 첨부 이미지
}

// ===== 지게차 부속품 교환 기록 =====
export interface PartsChangeRecord {
  id: string;
  date: string;           // 교환일
  mileage: string;        // 주행거리
  cost: string;           // 비용
}

// ===== 지게차 정비 기록 =====
export interface ForkliftMaintenanceRecord {
  id: string;
  date: string;           // 정비일자
  description: string;    // 정비내역 기록
  cost: string;           // 비용
}

// ===== 지게차 관리 =====
export interface Forklift {
  id: string;
  vehicleNumber: string;        // 지게차번호
  vehicleType: string;          // 차종
  purchaseType: string;         // 구매유형
  managerMain: string;          // 담당자(정)
  managerSub: string;           // 담당자(부)
  purchaseCompany: string;      // 구입업체
  purchaseCompanyContact: string; // 구입업체 연락처
  totalMileage: string;         // 총 주행거리 (km)
  mileageRecordDate: string;    // 기록일
  firstRegistrationDate: string; // 최초등록일
  purchaseDate: string;         // 구매일자
  partsChangeCycle: string;     // 부속품 교환주기(Km)
  partsChangeRecords: PartsChangeRecord[]; // 부속품 교환 기록 (테이블)
  maintenanceRecords: ForkliftMaintenanceRecord[]; // 정비내역 (테이블)
  remarks: string;              // 비고
}

export interface ForkliftFormData {
  vehicleNumber: string;
  vehicleType: string;
  purchaseType: string;
  managerMain: string;
  managerSub: string;
  purchaseCompany: string;
  purchaseCompanyContact: string;
  totalMileage: string;
  mileageRecordDate: string;
  firstRegistrationDate: string;
  purchaseDate: string;
  partsChangeCycle: string;
  partsChangeRecords: PartsChangeRecord[];
  maintenanceRecords: ForkliftMaintenanceRecord[];
  remarks: string;
}

// ===== API 응답 타입 =====
export interface ActionResponse<T = unknown> {
  success: boolean;
  data?: T;
  error?: string;
  __authError?: boolean;
}

export interface ListResponse<T> {
  success: boolean;
  data: T[];
  totalCount: number;
  totalPages: number;
  error?: string;
}
