package cn.yinlihupo.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.time.LocalDate; import java.time.LocalDateTime; /** * 向量存储实体 * 对应 vector_store 表 * 兼容 Spring AI PgVectorStore 默认结构 */ @Data @TableName("vector_store") public class AiDocument { /** * 文档ID(字符串类型,兼容PgVectorStore) * 使用标准UUID格式(带连字符) */ @TableId(type = IdType.INPUT) private String id; /** * 关联项目ID */ private Long projectId; /** * 关联时间节点ID */ private Long timelineNodeId; /** * 关联知识库ID */ private Long kbId; /** * 来源类型: project-项目文档, risk-风险文档, ticket-工单, * report-日报, upload-上传文件, knowledge-知识库, chat-对话记录 */ private String sourceType; /** * 来源记录ID */ private Long sourceId; /** * 文档标题 */ private String title; /** * 文档内容(纯文本) */ private String content; /** * 原始内容(带格式) */ private String contentRaw; /** * AI生成的摘要 */ private String summary; /** * 向量嵌入(存储为字符串,实际由pgvector处理) */ private String embedding; /** * 文档类型: requirement-需求, design-设计, plan-计划, * report-报告, contract-合同, photo-照片, other-其他 */ private String docType; /** * 语言: zh-中文, en-英文 */ private String language; /** * 文件类型: pdf, doc, txt, md, jpg, png等 */ private String fileType; /** * 文件大小(字节) */ private Long fileSize; /** * 文件存储路径 */ private String filePath; /** * 文件访问URL */ private String fileUrl; /** * 文档日期(如日报日期、照片拍摄日期) */ private LocalDate docDate; /** * 文档时间戳 */ private LocalDateTime docDatetime; /** * 分块序号 */ private Integer chunkIndex; /** * 总分块数 */ private Integer chunkTotal; /** * 父文档ID(分块时使用) */ private String chunkParentId; /** * 标签数组(JSON) */ private String tags; /** * 分类 */ private String category; /** * 查看次数 */ private Integer viewCount; /** * 被检索次数 */ private Integer queryCount; /** * 最后被检索时间 */ private LocalDateTime lastQueriedAt; /** * 状态: active-可用, processing-处理中, error-错误, archived-归档 */ private String status; /** * 错误信息 */ private String errorMessage; /** * 创建人ID */ private Long createBy; /** * 创建时间 */ private LocalDateTime createTime; /** * 更新人ID */ private Long updateBy; /** * 更新时间 */ private LocalDateTime updateTime; /** * 删除标记 */ private Integer deleted; }