Files
common_agent/docs/ARCHITECTURE.md

8.2 KiB
Raw Blame History

Common Agent 当前代码架构说明

1. 文档目的

本文档描述 common_agent 当前已经落地的前后端架构,用于帮助快速理解代码边界、模块职责和扩展点。

2. 总体分层

后端分层

采用标准 Spring Boot + MyBatis-Plus 分层:

  • controller:对外暴露 REST API统一使用 DTO 交互,返回 RequestResult<T>
  • service:接口 + 实现,继承 MyBatis-Plus IService / ServiceImpl
  • mapper:继承 BaseMapper<T>,无 XML全部使用 lambdaQuery() 类型安全查询。
  • entity:数据库实体模型,继承 BaseEntity
  • dto/request|response:请求/响应 DTO响应 DTO 提供 fromEntity() 静态转换。
  • config / constant / enums / handler:模块级配置、常量、枚举和全局异常处理。

前端架构

  • 入口main.ts 挂载 Vue App注册 Pinia、Vue Router、Element Plus。
  • 布局AdminLayout.vue 管理后台壳布局(侧边栏菜单 + 主内容区)。
  • 页面:各业务页面位于 pages/,使用 Composition API + <script setup lang="ts">
  • API 层api/request.ts 封装 Axios统一 /api 前缀,RequestResult<T> 信封解包,大整数安全解析。
  • 路由router/index.ts 使用 HTML5 history 模式,所有页面作为 AdminLayout 子路由。
  • 状态stores/app.ts Pinia 状态管理(当前为环境名占位)。
  • 样式styles/global.css 定义全局 CSS 变量和布局,各页面使用 scoped style。

3. 已实现模块

3.1 公共基础模块

包路径:com.bruce.common

职责:

  • 提供实体基类 BaseEntity(主键、审计字段、乐观锁)。
  • 统一 API 返回体 RequestResult<T>
  • 全局异常处理 GlobalExceptionHandler
  • MyBatis-Plus 审计自动填充 EntityAuditMetaObjectHandler
  • 附件本地存储配置 AttachmentProperties
  • 文档解析抽象与 Apache Tika 解析实现。
  • 系统枚举管理能力CRUD + 批量新增 + 管理端查询)。
  • 附件上传能力(本地磁盘 + 元数据持久化)。

关键类:

路径
BaseEntity common/domain/model/BaseEntity.java
RequestResult common/domain/model/RequestResult.java
GlobalExceptionHandler common/handler/GlobalExceptionHandler.java
EntityAuditMetaObjectHandler common/config/EntityAuditMetaObjectHandler.java
AttachmentProperties common/config/AttachmentProperties.java
SysEnum common/domain/entity/SysEnum.java
SysAttachment common/domain/entity/SysAttachment.java
SysEnumController common/controller/SysEnumController.java
SysAttachmentController common/controller/SysAttachmentController.java
SysEnumServiceImpl common/service/impl/SysEnumServiceImpl.java
SysAttachmentServiceImpl common/service/impl/SysAttachmentServiceImpl.java
DocumentParserFactory common/document/parse/DocumentParserFactory.java
TxtDocumentParser common/document/parse/impl/TxtDocumentParser.java
PdfDocumentParser common/document/parse/impl/PdfDocumentParser.java
WordDocumentParser common/document/parse/impl/WordDocumentParser.java
ExcelDocumentParser common/document/parse/impl/ExcelDocumentParser.java
CommonStatusEnum common/enums/CommonStatusEnum.java
EnableStatusEnum common/enums/EnableStatusEnum.java

接口列表:

方法 路径 说明
POST /api/sys-enum/queryForManagement 管理端枚举查询(支持关键词搜索)
GET /api/sys-enum/detail 获取单个枚举
POST /api/sys-enum/save 新增/更新枚举
POST /api/sys-enum/batchSave 批量新增枚举
POST /api/sys-enum/delete 删除枚举
POST /api/attachments/upload 上传附件

3.2 RAG 知识库模块

包路径:com.bruce.rag

职责:

  • 维护 RAG 知识库主数据CRUD + 编码唯一性校验)。
  • 维护知识库文档与附件的关联关系。
  • 支持知识文档批量上传、解析入口和解析状态流转。
  • 定义切片、向量、解析状态、索引状态和 RAG 相关来源常量。

关键类:

路径
RagStore rag/entity/RagStore.java
RagDocument rag/entity/RagDocument.java
RagChunk rag/entity/RagChunk.java
RagChunkEmbedding rag/entity/RagChunkEmbedding.java
RagStoreController rag/controller/RagStoreController.java
RagDocumentController rag/controller/RagDocumentController.java
RagStoreServiceImpl rag/service/impl/RagStoreServiceImpl.java
RagDocumentServiceImpl rag/service/impl/RagDocumentServiceImpl.java
RagDocumentParseServiceImpl rag/service/impl/RagDocumentParseServiceImpl.java
RagParseStatusEnum rag/enums/RagParseStatusEnum.java
RagIndexStatusEnum rag/enums/RagIndexStatusEnum.java
RagChunkStrategyEnum rag/enums/RagChunkStrategyEnum.java
RagSystemConstants rag/constant/RagSystemConstants.java

接口列表:

方法 路径 说明
POST /api/rag/store/list 查询全部知识库
POST /api/rag/store/query 知识库条件查询
GET /api/rag/store/detail 获取知识库详情
GET /api/rag/store/overview 获取知识库总览
GET /api/rag/store/documentOverview 获取单个知识库文档概览
POST /api/rag/store/save 新增/更新知识库
POST /api/rag/store/delete 删除知识库
POST /api/rag/documents/list 查询全部知识文档
POST /api/rag/documents/query 知识文档条件查询
GET /api/rag/documents/detail 获取知识文档详情
POST /api/rag/documents/save 新增/更新知识文档
POST /api/rag/documents/delete 删除知识文档
POST /api/rag/documents/batchUpload 批量上传文档并创建 rag_document
POST /api/rag/documents/parse 批量解析知识文档

当前边界:

  • 知识库 CRUD、文档 CRUD、批量上传、Tika 文本解析和状态流转已完成。
  • 解析结果当前只返回给调用方并更新文档状态,尚未写入 rag_chunk
  • rag_chunkrag_chunk_embedding 的结构层已就绪,尚未实现切片生成、向量化、索引任务和检索问答。

4. 数据模型关系

当前核心表关系如下:

表名 说明 关联
sys_enum 系统枚举配置 独立
sys_attachment 附件元数据 独立,被 rag_document 引用
rag_store 知识库主表 独立
rag_document 知识库文档表 关联 rag_store.idsys_attachment.id
rag_chunk 知识切片表 关联 rag_store.idrag_document.id
rag_chunk_embedding 切片向量表 关联 rag_store.idrag_document.idrag_chunk.id

rag_document 是 RAG 模块与附件模块的连接点,rag_chunkrag_chunk_embedding 是下一步检索链路的核心落点。

5. 配置与运行

关键配置文件:

文件 说明
application.yaml 环境选择(当前 active: dev
application-dev.yaml 开发环境配置PostgreSQL 数据源、MyBatis-Plus、附件目录
application-template.yaml 配置模板

6. 测试策略

  • 后端测试围绕结构约束的单元测试Mapper/Service/Controller 继承体系、实体字段注解、方法签名验证)。
  • 前端测试Vitest + @vue/test-utils覆盖路由定义、布局组件、页面渲染、API 调用和 Long 类型解析。

7. 当前不足

  • RAG 尚未进入"可检索链路",当前完成上传与解析,但未完成切片、向量化和召回。
  • Agent 运行时相关模型与服务尚未开始建设。
  • 前端部分页面(工作台、附件管理、检索配置、最近任务)为占位或后续能力提示。
  • 缺少鉴权、租户、操作日志。

8. 建议演进方向

  1. 补 RAG 最小检索闭环:解析文本 → 生成切片 → 生成向量 → 检索召回。
  2. 接入 Spring AI实现最小模型调用链路。
  3. 建设 Agent 域模型Agent、Session、Message、Tool、Task。
  4. 补齐索引任务、重试、重建索引和前端任务视图。
  5. 衔接模型供应商、工作流编排和前端管理台。