package tech.easyflow.agent.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import tech.easyflow.common.entity.DateEntity;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;

/**
 * Agent 文档不可变读取快照元数据实体。
 */
@Table("tb_agent_document_snapshot")
public class AgentDocumentSnapshot extends DateEntity implements Serializable {

    /** 主键。 */
    @Id(keyType = KeyType.Generator, value = "snowFlakeId")
    private BigInteger id;
    /** 读取快照 ID。 */
    private String readSnapshotId;
    /** 租户 ID。 */
    @Column(tenantId = true)
    private BigInteger tenantId;
    /** 稳定附件 ID。 */
    private String attachmentId;
    /** 原文件 SHA-256。 */
    private String fileSha256;
    /** 读取器版本。 */
    private String readerVersion;
    /** 读取策略版本。 */
    private String readPolicyVersion;
    /** 私有快照对象键。 */
    private String snapshotObjectKey;
    /** 字符数。 */
    private Integer charCount;
    /** Token 估算。 */
    private Integer tokenEstimate;
    /** 片段数。 */
    private Integer segmentCount;
    /** 快照状态。 */
    private String status;
    /** 错误码。 */
    private String errorCode;
    /** 创建时间。 */
    private Date created;
    /** 创建人。 */
    private BigInteger createdBy;
    /** 修改时间。 */
    private Date modified;
    /** 修改人。 */
    private BigInteger modifiedBy;

    /** @return 主键 */
    public BigInteger getId() { return id; }
    /** @param id 主键 */
    public void setId(BigInteger id) { this.id = id; }
    /** @return 快照 ID */
    public String getReadSnapshotId() { return readSnapshotId; }
    /** @param readSnapshotId 快照 ID */
    public void setReadSnapshotId(String readSnapshotId) { this.readSnapshotId = readSnapshotId; }
    /** @return 租户 ID */
    public BigInteger getTenantId() { return tenantId; }
    /** @param tenantId 租户 ID */
    public void setTenantId(BigInteger tenantId) { this.tenantId = tenantId; }
    /** @return 附件 ID */
    public String getAttachmentId() { return attachmentId; }
    /** @param attachmentId 附件 ID */
    public void setAttachmentId(String attachmentId) { this.attachmentId = attachmentId; }
    /** @return 原文件 SHA-256 */
    public String getFileSha256() { return fileSha256; }
    /** @param fileSha256 原文件 SHA-256 */
    public void setFileSha256(String fileSha256) { this.fileSha256 = fileSha256; }
    /** @return 读取器版本 */
    public String getReaderVersion() { return readerVersion; }
    /** @param readerVersion 读取器版本 */
    public void setReaderVersion(String readerVersion) { this.readerVersion = readerVersion; }
    /** @return 读取策略版本 */
    public String getReadPolicyVersion() { return readPolicyVersion; }
    /** @param readPolicyVersion 读取策略版本 */
    public void setReadPolicyVersion(String readPolicyVersion) { this.readPolicyVersion = readPolicyVersion; }
    /** @return 快照对象键 */
    public String getSnapshotObjectKey() { return snapshotObjectKey; }
    /** @param snapshotObjectKey 快照对象键 */
    public void setSnapshotObjectKey(String snapshotObjectKey) { this.snapshotObjectKey = snapshotObjectKey; }
    /** @return 字符数 */
    public Integer getCharCount() { return charCount; }
    /** @param charCount 字符数 */
    public void setCharCount(Integer charCount) { this.charCount = charCount; }
    /** @return Token 估算 */
    public Integer getTokenEstimate() { return tokenEstimate; }
    /** @param tokenEstimate Token 估算 */
    public void setTokenEstimate(Integer tokenEstimate) { this.tokenEstimate = tokenEstimate; }
    /** @return 片段数 */
    public Integer getSegmentCount() { return segmentCount; }
    /** @param segmentCount 片段数 */
    public void setSegmentCount(Integer segmentCount) { this.segmentCount = segmentCount; }
    /** @return 快照状态 */
    public String getStatus() { return status; }
    /** @param status 快照状态 */
    public void setStatus(String status) { this.status = status; }
    /** @return 错误码 */
    public String getErrorCode() { return errorCode; }
    /** @param errorCode 错误码 */
    public void setErrorCode(String errorCode) { this.errorCode = errorCode; }
    /** @return 创建时间 */
    @Override public Date getCreated() { return created; }
    /** @param created 创建时间 */
    @Override public void setCreated(Date created) { this.created = created; }
    /** @return 创建人 */
    public BigInteger getCreatedBy() { return createdBy; }
    /** @param createdBy 创建人 */
    public void setCreatedBy(BigInteger createdBy) { this.createdBy = createdBy; }
    /** @return 修改时间 */
    @Override public Date getModified() { return modified; }
    /** @param modified 修改时间 */
    @Override public void setModified(Date modified) { this.modified = modified; }
    /** @return 修改人 */
    public BigInteger getModifiedBy() { return modifiedBy; }
    /** @param modifiedBy 修改人 */
    public void setModifiedBy(BigInteger modifiedBy) { this.modifiedBy = modifiedBy; }
}
