feat(ai): 新增AI对话与知识库功能模块
- 集成Fastjson2依赖优化JSON处理性能 - 配置专用文档处理异步线程池,提升任务并发处理能力 - 实现基于Spring AI的PgVectorStore向量存储配置 - 新增AI对话控制器,支持SSE流式对话及会话管理接口 - 新增AI知识库控制器,支持文件上传、文档管理及重新索引功能 - 定义AI对话和知识库相关的数据传输对象DTO与视图对象VO - 建立AI对话消息和文档向量的数据库实体与MyBatis Mapper - 实现AI对话服务接口及其具体业务逻辑,包括会话管理和RAG检索 - 完善安全校验和错误处理,确保接口调用的用户权限和参数有效性 - 提供对话消息流式响应机制,支持实时传输用户互动内容和引用文档信息
This commit is contained in:
189
src/main/java/cn/yinlihupo/domain/entity/AiDocument.java
Normal file
189
src/main/java/cn/yinlihupo/domain/entity/AiDocument.java
Normal file
@@ -0,0 +1,189 @@
|
||||
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;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* AI文档向量实体
|
||||
* 对应 ai_document 表
|
||||
*/
|
||||
@Data
|
||||
@TableName("ai_document")
|
||||
public class AiDocument {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 文档唯一标识(UUID)
|
||||
*/
|
||||
private UUID docId;
|
||||
|
||||
/**
|
||||
* 关联项目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;
|
||||
|
||||
/**
|
||||
* 文档日期(如日报日期、照片拍摄日期)
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 文档时间戳
|
||||
*/
|
||||
private LocalDateTime docDatetime;
|
||||
|
||||
/**
|
||||
* 分块序号
|
||||
*/
|
||||
private Integer chunkIndex;
|
||||
|
||||
/**
|
||||
* 总分块数
|
||||
*/
|
||||
private Integer chunkTotal;
|
||||
|
||||
/**
|
||||
* 父文档ID(分块时使用)
|
||||
*/
|
||||
private Long 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;
|
||||
}
|
||||
Reference in New Issue
Block a user