package com.vetti.hotake.domain;

import java.math.BigDecimal;
import java.util.List;

import com.vetti.common.core.domain.entity.SysUser;
import com.vetti.hotake.domain.dto.HotakeAiCvScoringRankingDto;
import com.vetti.hotake.domain.dto.HotakeCandidateCompatibilityDto;
import com.vetti.hotake.domain.dto.HotakeCandidateInterviewEvaluationDto;
import com.vetti.hotake.domain.dto.HotakeCvInfoDto;
import lombok.Data;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModelProperty;
import com.vetti.common.annotation.Excel;
import com.vetti.common.core.domain.BaseEntity;

/**
 * 候选人岗位申请信息对象 hotake_roles_apply_info
 *
 * @author wangxiangshun
 * @date 2025-12-17
 */
@Data
@Accessors(chain = true)
public class HotakeRolesApplyInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @ApiModelProperty("主键ID")
    private Long id;

    /** 候选人ID */
    @ApiModelProperty("候选人ID")
    @Excel(name = "候选人ID")
    private Long candidateId;

    /** 招聘人ID */
    @ApiModelProperty("招聘人ID")
    @Excel(name = "招聘人ID")
    private Long recruiterId;

    /** 岗位ID */
    @ApiModelProperty("岗位ID")
    @Excel(name = "岗位ID")
    private Long roleId;

    /** 姓名 */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String fullName;

    /** 邮箱 */
    @ApiModelProperty("邮箱")
    @Excel(name = "邮箱")
    private String email;

    /** 手机号 */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    private String phoneNumber;

    /** CV 简历文件地址 */
    @ApiModelProperty("CV 简历文件地址")
    @Excel(name = "CV 简历文件地址")
    private String cvFile;

    /** 简历类型（如：image/jpeg, application/pdf等） */
    @ApiModelProperty("简历文件后缀(doc/pdf)")
    private String cvFileSuffix;

    @ApiModelProperty("简历文件大小")
    private String fileSizeShow;

    /** 求职信 */
    @ApiModelProperty("求职信")
    @Excel(name = "求职信")
    private String coverLetter;

    /** 候选人状态（Hot、Warm、Cold、Pending） */
    @ApiModelProperty("候选人状态（hot、warm、cold、pending）")
    private String candidateStatus;

    /** 当前阶段 */
    @ApiModelProperty("当前阶段(applied:已申请,shortlisted:入围,interview:面试，offer：邀约，hired，受雇,refuseOffer:拒绝邀约，interviewFail：面试失败)")
    @Excel(name = "当前阶段")
    private String stage;

    /** 最后联系时间 */
    @ApiModelProperty("最后联系时间")
    @Excel(name = "最后联系时间")
    private String lastContact;

    /** 简历模版Json */
    @ApiModelProperty("简历模版Json")
    @Excel(name = "简历模版Json")
    private String cvTemplateJson;

    /** 简历评分以及说明 */
    @ApiModelProperty("简历评分以及说明")
    @Excel(name = "简历评分以及说明")
    private String cvScore;

    /** 简历文件Hash */
    @ApiModelProperty("简历文件Hash")
    @Excel(name = "简历文件Hash")
    private String cvMd5;

    /** 工作经验 */
    @ApiModelProperty("工作经验")
    @Excel(name = "工作经验")
    private String experience;

    /** AI评分 */
    @ApiModelProperty("AI评分")
    @Excel(name = "AI评分")
    private String aiMatchScore;

    /** AI评分百分比 */
    @ApiModelProperty("AI评分百分比")
    @Excel(name = "AI评分百分比")
    private BigDecimal aiMatchScorePercentage;

    /** 申请状态（pending:进行中，complete：已完成，Canceled：取消） */
    @ApiModelProperty("申请状态（pending:进行中，complete：已完成，canceled：取消）")
    private String status;

    @ApiModelProperty("AI简历评分和排名JSON")
    private String aiCvScoringRankingJson;

    @ApiModelProperty("AI简历评分和排名最终得分")
    private BigDecimal aiCvScore;

    @ApiModelProperty("候选人匹配度JSON")
    private String candidateCompatibilityJson;

    @ApiModelProperty("候选人匹配度最终得分")
    private BigDecimal candidateCompatibilityScore;

    @ApiModelProperty("候选人面试综合评估JSON")
    private String evaluationJson;

    @ApiModelProperty("候选人面试综合评估最终得分")
    private BigDecimal evaluationScore;

    @ApiModelProperty("AI面试分析JSON 数据")
    private String aiInterviewAnalysisJson;

    @ApiModelProperty("AI面试问答数据记录JSON")
    private String aiInterviewAnalysisQaJson;

    @ApiModelProperty("岗位信息")
    private HotakeRolesInfo rolesInfo;

    @ApiModelProperty("解析的简历数据信息")
    private HotakeCvInfoDto cvInfoDto;

    @ApiModelProperty("岗位申请操作记录数据集合")
    private List<HotakeRolesApplyOperRecord> applyOperRecords;

    @ApiModelProperty("候选人用户信息")
    private SysUser candidateUSer;

    @ApiModelProperty("AI简历评分和排名数据对象")
    private HotakeAiCvScoringRankingDto rankingDto;

    @ApiModelProperty("招聘者查看候选人匹配度数据对象")
    private HotakeCandidateCompatibilityDto compatibilityDto;

    @ApiModelProperty("候选人面试综合评估数据对象")
    private HotakeCandidateInterviewEvaluationDto evaluationDto;

    @ApiModelProperty("岗位申请ID数据集合")
    private List<Long> applyRoleIdList;

    @ApiModelProperty("初步筛选问题回答数据集合")
    private List<HotakeInitScreQuestionsReplyRecordInfo> screQuestionsReplyRecordInfoList;

}
