9.1 KiB
9.1 KiB
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.tsPinia 状态管理(当前为环境名占位)。 - 样式:
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_chunk、rag_chunk_embedding的结构层已就绪,尚未实现切片生成、向量化、索引任务和检索问答。
4. 数据模型关系
当前核心表关系如下:
| 表名 | 说明 | 关联 |
|---|---|---|
sys_enum |
系统枚举配置 | 独立 |
sys_attachment |
附件元数据 | 独立,被 rag_document 引用 |
rag_store |
知识库主表 | 独立 |
rag_document |
知识库文档表 | 关联 rag_store.id 和 sys_attachment.id |
rag_chunk |
知识切片表 | 关联 rag_store.id 和 rag_document.id |
rag_chunk_embedding |
切片向量表 | 关联 rag_store.id、rag_document.id 和 rag_chunk.id |
rag_document 是 RAG 模块与附件模块的连接点,rag_chunk 和 rag_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 类型解析。
6.1 注释规范
- 新增或修改核心业务代码时,需补充中文注释,优先说明类职责、方法目的、关键判断和扩展边界。
- 每次提交代码时,需要同步检查本次改动是否已经补齐对应中文注释,避免后续阅读只能靠反推代码语义。
- 注释应聚焦设计意图和边界,不建议堆砌“变量赋值”“循环遍历”这类低价值说明。
6.2 结构化枚举规范
- 长期固定的结构化文本字段,统一采用整型枚举值作为前后端传输协议,不再直接传递字符串名称。
- 后端 Java 枚举类是这类结构化枚举的单一事实来源,前端常量和
sys_enum数据都基于它同步。 - 新增或修改结构化枚举时,需要通过统一的枚举初始化测试按
catalog + type先删后全量重建写入sys_enum。 - 不同枚举组之间的
catalog + type必须唯一,否则会破坏枚举组重建的确定性。
7. 当前不足
- RAG 尚未进入"可检索链路",当前完成上传与解析,但未完成切片、向量化和召回。
- Agent 运行时相关模型与服务尚未开始建设。
- 前端部分页面(工作台、附件管理、检索配置、最近任务)为占位或后续能力提示。
- 缺少鉴权、租户、操作日志。
8. 建议演进方向
- 补 RAG 最小检索闭环:解析文本 → 生成切片 → 生成向量 → 检索召回。
- 接入 Spring AI,实现最小模型调用链路。
- 建设 Agent 域模型:Agent、Session、Message、Tool、Task。
- 补齐索引任务、重试、重建索引和前端任务视图。
- 衔接模型供应商、工作流编排和前端管理台。