/**
 * 人员扩展路由类型定义（前端专用）
 * 此文件不包含任何运行时导入，只包含类型定义
 * 用于前端包进行类型检查
 *
 * Hono RPC 客户端使用嵌套对象结构表示路由：
 * - enterpriseDisabilityClient[':id']['work-history'].$get 对应 /:id/work-history
 * - enterpriseDisabilityClient[':id'].$get 对应 /:id
 */

/**
 * 工作历史项类型
 */
export type WorkHistoryItem = {
  订单ID: number;
  订单名称: string | null;
  入职日期: string | null;
  实际入职日期: string | null;
  离职日期: string | null;
  工作状态: string;
  个人薪资: number;
};

/**
 * 工作历史响应类型
 */
export type WorkHistoryResponse = {
  工作历史: WorkHistoryItem[];
};

/**
 * 薪资历史项类型
 */
export type SalaryHistoryItem = {
  月份: string | null;
  基本工资: number;
  补贴: number;
  扣款: number;
  实发工资: number;
};

/**
 * 薪资历史响应类型
 */
export type SalaryHistoryResponse = {
  薪资历史: SalaryHistoryItem[];
};

/**
 * 征信信息项类型
 */
export type CreditInfoItem = {
  文件ID: string;
  文件URL: string | null;
  上传时间: string | null;
  文件类型: string | null;
  银行卡号: string | null;
  持卡人姓名: string | null;
  银行名称: number | null;
};

/**
 * 征信信息响应类型
 */
export type CreditInfoResponse = {
  征信信息: CreditInfoItem[];
};

/**
 * 视频关联项类型
 */
export type PersonVideoItem = {
  视频类型: string;
  文件ID: string;
  文件URL: string | null;
  上传时间: string | null;
  文件类型: string | null;
  关联订单ID: number | null;
};

/**
 * 视频关联响应类型
 */
export type PersonVideosResponse = {
  视频列表: PersonVideoItem[];
};

/**
 * 企业人才列表项类型
 */
export type CompanyPersonListItem = {
  personId: number;
  name: string;
  gender: string;
  idCard: string;
  disabilityType: string;
  disabilityLevel: string;
  phone: string | null;
  birthDate: string | null;
  salaryDetail: number | null;
  jobStatus: string;
  workStatus: number;
  workStatusLabel: string;
  latestJoinDate: string | null;
  orderName: string | null;
};

/**
 * 分页信息类型
 */
export type PaginationInfo = {
  page: number;
  limit: number;
  total: number;
  totalPages: number;
};

/**
 * 企业人才列表响应类型
 */
export type CompanyPersonListResponse = {
  data: CompanyPersonListItem[];
  pagination: PaginationInfo;
};

/**
 * 银行卡类型
 */
export type BankCard = {
  cardId: number;
  bankName: string;
  cardNumber: string;
  isDefault: boolean;
};

/**
 * 照片类型
 */
export type Photo = {
  fileId: number;
  fileName: string;
  fileUrl: string;
};

/**
 * 企业人才详情类型
 */
export type CompanyPersonDetail = {
  personId: number;
  name: string;
  gender: string;
  idCard: string;
  disabilityType: string;
  disabilityLevel: string;
  birthDate: string | null;
  salaryDetail: number | null;
  phone: string | null;
  jobStatus: string;
  workStatus: number;
  workStatusLabel: string;
  bankCards: BankCard[];
  photos: Photo[];
};

/**
 * Hono 路由类型定义（前端专用）
 *
 * 使用嵌套对象结构匹配 Hono RPC 客户端的路径解析：
 * - client[':id']['work-history'].$get 对应 /:id/work-history
 * - client[':id'].$get 对应 /:id
 * - client.$get 对应 /
 */
export interface PersonExtensionRoutes {
  /**
   * 路径参数 :id 的子路由
   * 对应 /:id 及其子路径
   */
  ':id': {
    /**
     * 获取企业人才详情
     * 路径: /:id
     */
    $get: {
      input: {
        param: { id: number };
      };
      output: CompanyPersonDetail;
    };

    /**
     * 获取工作历史
     * 路径: /:id/work-history
     */
    'work-history': {
      $get: {
        input: {
          param: { id: number };
        };
        output: WorkHistoryResponse;
      };
    };

    /**
     * 获取薪资历史
     * 路径: /:id/salary-history
     */
    'salary-history': {
      $get: {
        input: {
          param: { id: number };
        };
        output: SalaryHistoryResponse;
      };
    };

    /**
     * 获取征信信息
     * 路径: /:id/credit-info
     */
    'credit-info': {
      $get: {
        input: {
          param: { id: number };
        };
        output: CreditInfoResponse;
      };
    };

    /**
     * 获取视频关联
     * 路径: /:id/videos
     */
    videos: {
      $get: {
        input: {
          param: { id: number };
        };
        output: PersonVideosResponse;
      };
    };
  };

  /**
   * 根路径路由
   * 路径: /
   */
  $get: {
    input: {
      query: {
        search?: string;
        disabilityType?: string;
        jobStatus?: number | string;
        page?: number;
        limit?: number;
      };
    };
    output: CompanyPersonListResponse;
  };
}
