package com.emoon.tongue.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.emoon.common.tenant.core.TenantEntity;
import com.emoon.tongue.domain.vo.TongueDiagnosisInfo;
import lombok.*;

import java.io.Serial;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 舌诊任务对象 tongue_diagnosis
 *
 * @author destiny
 * @date 2025-12-09
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "tongue_diagnosis", autoResultMap = true)
public class TongueDiagnosis extends TenantEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 医院编码
     */
    private String projectId;

    /**
     * 患者ID（原挂号单号）
     */
    @TableField("reg_number")
    private String patientId;

    /**
     * 上传状态（0 - 未上传，1 - 已上传待推理，2 - 推理完成）
     */
    private Integer uploadStatus;

    /**
     * 患者年龄
     */
    private Integer patientAge;

    /**
     * 患者性别（0-未填写；1-男性；2-女性）
     */
    private Integer patientGender;

    /**
     * 主诉
     */
    private String patientChiefComplaint;

    /**
     * 舌象照片访问地址
     */
    private String imageUrl;

    /**
     * 舌象图片服务器存储路径
     */
    private String imagePath;

    /**
     * 上传时间
     */
    private LocalDateTime uploadTime;

    /**
     * 舌象诊断结果
     */
    @TableField(value = "tongue_diagnosis_info", typeHandler = JacksonTypeHandler.class)
    private TongueDiagnosisInfo tongueDiagnosisInfo;

    /**
     * 推理完成时间
     */
    private LocalDateTime inferFinishTime;

    /**
     * 删除标志（0代表存在 1代表删除）
     */
    @TableLogic
    private String delFlag;

}
