Compare commits
5 Commits
8abea44aa7
...
dfc9847e4d
| Author | SHA1 | Date | |
|---|---|---|---|
| dfc9847e4d | |||
| 130fa25275 | |||
| af068e04bc | |||
| 5a872ef197 | |||
| 7575fbfeb0 |
53
AGENT.md
53
AGENT.md
@@ -11,7 +11,8 @@
|
|||||||
- 文件上传与附件管理
|
- 文件上传与附件管理
|
||||||
- 前后端统一的管理控制台
|
- 前后端统一的管理控制台
|
||||||
|
|
||||||
当前阶段以"先搭平台骨架,再逐步补智能能力"为主,优先保证工程结构、接口规范、知识库链路和可扩展性。
|
当前阶段已经完成平台骨架、公共接口规范、知识库/知识文档管理、文档上传与解析入口。
|
||||||
|
后续重点从"元数据可管"推进到"RAG 可检索"和"Agent 可运行"。
|
||||||
|
|
||||||
## 2. 总体设计思路
|
## 2. 总体设计思路
|
||||||
|
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
|
|
||||||
- `sys_enum`:系统枚举配置(已完成 CRUD、批量新增、管理端查询)
|
- `sys_enum`:系统枚举配置(已完成 CRUD、批量新增、管理端查询)
|
||||||
- `sys_attachment`:附件与文件上传(已完成本地上传、元数据持久化)
|
- `sys_attachment`:附件与文件上传(已完成本地上传、元数据持久化)
|
||||||
|
- 文档解析抽象:`DocumentParser`、`DocumentParserFactory` 与 Tika 解析实现(已完成 TXT/Markdown/LOG、PDF、Word、Excel 文本抽取)
|
||||||
- 统一 DTO / `RequestResult`(已完成)
|
- 统一 DTO / `RequestResult`(已完成)
|
||||||
- 通用状态枚举、启用禁用枚举(已完成)
|
- 通用状态枚举、启用禁用枚举(已完成)
|
||||||
- 全局异常处理 `GlobalExceptionHandler`(已完成)
|
- 全局异常处理 `GlobalExceptionHandler`(已完成)
|
||||||
@@ -45,19 +47,23 @@
|
|||||||
|
|
||||||
### 3.2 RAG 知识库模块
|
### 3.2 RAG 知识库模块
|
||||||
|
|
||||||
当前已有完整的元数据管理层:
|
当前已有元数据管理、文档上传和解析入口:
|
||||||
|
|
||||||
- `rag_store`:知识库主表(已完成 CRUD、编码唯一性校验)
|
- `rag_store`:知识库主表(已完成 CRUD、编码唯一性校验)
|
||||||
- `rag_document`:知识库文档表(已完成实体、Mapper、Service、条件查询)
|
- `rag_document`:知识库文档表(已完成 CRUD、条件查询、批量上传、启停用)
|
||||||
|
- `rag_chunk`:知识切片表结构、实体、Mapper、Service(已完成结构,待生成逻辑)
|
||||||
|
- `rag_chunk_embedding`:切片向量表结构、实体、Mapper、Service(已完成结构,待向量化逻辑)
|
||||||
- RAG 解析状态枚举 `RagParseStatusEnum`(已完成)
|
- RAG 解析状态枚举 `RagParseStatusEnum`(已完成)
|
||||||
- RAG 索引状态枚举 `RagIndexStatusEnum`(已完成)
|
- RAG 索引状态枚举 `RagIndexStatusEnum`(已完成)
|
||||||
|
- RAG 切片策略枚举 `RagChunkStrategyEnum`(已完成)
|
||||||
|
- 文档解析接口 `/api/rag/documents/parse`(已完成状态流转和文本抽取,尚未落切片)
|
||||||
|
|
||||||
后续计划继续扩展:
|
后续计划继续扩展:
|
||||||
|
|
||||||
- 文档切片
|
- 将解析结果按切片策略写入 `rag_chunk`
|
||||||
- 向量化
|
- 调用 Embedding 模型并写入 `rag_chunk_embedding`
|
||||||
- 检索召回
|
- 检索召回与重排序
|
||||||
- 索引任务
|
- 索引任务、失败重试和任务日志
|
||||||
|
|
||||||
当前设计原则:
|
当前设计原则:
|
||||||
|
|
||||||
@@ -94,8 +100,8 @@
|
|||||||
- 工作台(占位)
|
- 工作台(占位)
|
||||||
- 系统枚举管理页(完整 CRUD + 批量新增)
|
- 系统枚举管理页(完整 CRUD + 批量新增)
|
||||||
- 附件管理入口(占位)
|
- 附件管理入口(占位)
|
||||||
- 知识库管理页(完整 CRUD + 双栏详情)
|
- 知识库管理页(完整 CRUD + 概览卡片 + 双栏详情 + 批量上传入口)
|
||||||
- 知识文档入口(占位)
|
- 知识文档页(条件查询 + 批量上传 + 批量解析入口 + 编辑/启停用/删除)
|
||||||
|
|
||||||
前端技术要点:
|
前端技术要点:
|
||||||
|
|
||||||
@@ -115,7 +121,7 @@
|
|||||||
后续控制台至少继续覆盖:
|
后续控制台至少继续覆盖:
|
||||||
|
|
||||||
- 附件管理页面前端联调
|
- 附件管理页面前端联调
|
||||||
- 知识文档管理页面前端联调
|
- RAG 检索配置、索引任务和最近任务页面联调
|
||||||
- Agent 调试页
|
- Agent 调试页
|
||||||
- 执行日志查看
|
- 执行日志查看
|
||||||
|
|
||||||
@@ -177,25 +183,28 @@
|
|||||||
1. ~~统一接口层规范~~ DTO、返回体、基础校验、通用异常处理(已完成)
|
1. ~~统一接口层规范~~ DTO、返回体、基础校验、通用异常处理(已完成)
|
||||||
2. ~~收紧基础模块~~ `sys_enum`、`sys_attachment`(已完成)
|
2. ~~收紧基础模块~~ `sys_enum`、`sys_attachment`(已完成)
|
||||||
3. ~~补全 RAG 基础元数据管理~~ `rag_store`、`rag_document`(已完成)
|
3. ~~补全 RAG 基础元数据管理~~ `rag_store`、`rag_document`(已完成)
|
||||||
4. 接入 Spring AI
|
4. ~~补全 RAG 文档上传与解析入口~~ 批量上传、Tika 文本抽取、解析状态流转(已完成)
|
||||||
5. 建立 Agent 运行时骨架
|
5. 接入切片生成与切片持久化
|
||||||
6. ~~补前端控制台基础骨架~~(已完成,部分页面待联调)
|
6. 接入 Spring AI Embedding / Chat 模型
|
||||||
|
7. 建立 Agent 运行时骨架
|
||||||
|
8. ~~补前端控制台基础骨架~~(已完成,部分高级页面待联调)
|
||||||
|
|
||||||
剩余重点:
|
剩余重点:
|
||||||
|
|
||||||
- 完善 RAG 文档上传、解析、索引的业务闭环
|
- 完成 RAG 解析结果到 `rag_chunk` 的落库闭环
|
||||||
- 补齐前端附件管理、知识文档页面的表单与接口联调
|
- 接入 Embedding,生成并保存 `rag_chunk_embedding`
|
||||||
- 接入 Spring AI 并实现模型调用链路
|
- 补齐索引任务、重试、重建索引和最近任务接口
|
||||||
|
- 接入 Spring AI 并实现最小模型调用链路
|
||||||
|
|
||||||
## 7. 下一步建议
|
## 7. 下一步建议
|
||||||
|
|
||||||
结合当前代码状态,接下来建议重点做:
|
结合当前代码状态,接下来建议重点做:
|
||||||
|
|
||||||
- 实现知识库文档上传并自动创建 `rag_document` 记录
|
- 实现解析结果切片:根据 `RagChunkStrategyEnum` 生成 `rag_chunk`
|
||||||
- 建立文档解析任务入口与状态流转
|
- 实现索引入口:对切片调用 Embedding 模型并写入 `rag_chunk_embedding`
|
||||||
- 为后续切片与向量化预留任务入口
|
- 把 `indexStatus` 从手工字段推进为真实状态流转
|
||||||
- 补齐前端附件管理、知识文档页面的联调
|
- 补齐重建索引、失败重试、最近任务接口和前端展示
|
||||||
- 接入 Spring AI,实现最小模型调用链路
|
- 接入 Spring AI,实现最小 Chat / Embedding 调用链路
|
||||||
|
|
||||||
## 8. 文档用途说明
|
## 8. 文档用途说明
|
||||||
|
|
||||||
@@ -210,4 +219,4 @@
|
|||||||
- `agent-runtime.md`
|
- `agent-runtime.md`
|
||||||
- `rag-design.md`
|
- `rag-design.md`
|
||||||
- `api-style.md`
|
- `api-style.md`
|
||||||
- `frontend-console.md`
|
- `frontend-console.md`
|
||||||
|
|||||||
27
README.md
27
README.md
@@ -3,8 +3,8 @@
|
|||||||
Common Agent 是一个规划中的通用 Agent 平台,技术路线基于 Java、Spring Boot 和 Spring AI。
|
Common Agent 是一个规划中的通用 Agent 平台,技术路线基于 Java、Spring Boot 和 Spring AI。
|
||||||
项目目标是建设一套完整的前后端系统,支持 Agent 编排、工具调用、会话管理、RAG 知识库和平台管理能力。
|
项目目标是建设一套完整的前后端系统,支持 Agent 编排、工具调用、会话管理、RAG 知识库和平台管理能力。
|
||||||
|
|
||||||
当前项目处于基础工程阶段。后端骨架(含 DTO、统一返回体、全局异常处理、审计自动填充)、PostgreSQL 配置、MyBatis-Plus、Lombok、多环境配置文件和前端控制台基础页面已经完成;
|
当前项目已经完成基础工程、公共模块、RAG 元数据管理、文档上传、文档解析入口、前端知识库与知识文档管理页面。
|
||||||
Agent 运行时、RAG 文档解析与向量化和更多管理功能会在后续阶段逐步实现。
|
Agent 运行时、RAG 切片入库、向量化、检索问答和更多平台管理能力会在后续阶段逐步实现。
|
||||||
|
|
||||||
## 项目愿景
|
## 项目愿景
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Common Agent 希望成为一个可复用的企业级 AI 应用基础平台:
|
|||||||
|------|------|
|
|------|------|
|
||||||
| 后端 | Java 21, Spring Boot 4.0.6, MyBatis-Plus 3.5.16 |
|
| 后端 | Java 21, Spring Boot 4.0.6, MyBatis-Plus 3.5.16 |
|
||||||
| 数据库 | PostgreSQL |
|
| 数据库 | PostgreSQL |
|
||||||
| 工具库 | Lombok, Springdoc OpenAPI 2.8.13, Jackson |
|
| 工具库 | Lombok, Springdoc OpenAPI 2.8.13, Jackson, Apache Tika 3.2.3 |
|
||||||
| 构建 | Maven Wrapper |
|
| 构建 | Maven Wrapper |
|
||||||
| 前端 | Vue 3, TypeScript 5.9, Vite, Element Plus, Pinia, Vue Router 4 |
|
| 前端 | Vue 3, TypeScript 5.9, Vite, Element Plus, Pinia, Vue Router 4 |
|
||||||
| 前端测试 | Vitest, @vue/test-utils |
|
| 前端测试 | Vitest, @vue/test-utils |
|
||||||
@@ -48,6 +48,7 @@ common_agent
|
|||||||
│ │ ├── common/ # 公共模块
|
│ │ ├── common/ # 公共模块
|
||||||
│ │ │ ├── config/ # AttachmentProperties, EntityAuditMetaObjectHandler
|
│ │ │ ├── config/ # AttachmentProperties, EntityAuditMetaObjectHandler
|
||||||
│ │ │ ├── controller/ # SysAttachmentController, SysEnumController
|
│ │ │ ├── controller/ # SysAttachmentController, SysEnumController
|
||||||
|
│ │ │ ├── document/parse/ # 文档解析抽象与 Tika 实现
|
||||||
│ │ │ ├── domain/
|
│ │ │ ├── domain/
|
||||||
│ │ │ │ ├── entity/ # SysAttachment, SysEnum
|
│ │ │ │ ├── entity/ # SysAttachment, SysEnum
|
||||||
│ │ │ │ └── model/ # BaseEntity, RequestResult
|
│ │ │ │ └── model/ # BaseEntity, RequestResult
|
||||||
@@ -62,8 +63,8 @@ common_agent
|
|||||||
│ │ ├── constant/ # RagSystemConstants
|
│ │ ├── constant/ # RagSystemConstants
|
||||||
│ │ ├── controller/ # RagStoreController, RagDocumentController
|
│ │ ├── controller/ # RagStoreController, RagDocumentController
|
||||||
│ │ ├── dto/ # 请求/响应 DTO
|
│ │ ├── dto/ # 请求/响应 DTO
|
||||||
│ │ ├── entity/ # RagStore, RagDocument
|
│ │ ├── entity/ # RagStore, RagDocument, RagChunk, RagChunkEmbedding
|
||||||
│ │ ├── enums/ # RagParseStatusEnum, RagIndexStatusEnum
|
│ │ ├── enums/ # RagParseStatusEnum, RagIndexStatusEnum, RagChunkStrategyEnum
|
||||||
│ │ ├── mapper/ # RagDocumentMapper, RagStoreMapper
|
│ │ ├── mapper/ # RagDocumentMapper, RagStoreMapper
|
||||||
│ │ └── service/ # 接口与实现
|
│ │ └── service/ # 接口与实现
|
||||||
│ ├── main/resources/
|
│ ├── main/resources/
|
||||||
@@ -149,7 +150,7 @@ npm run build
|
|||||||
| 系统枚举 | 完整 CRUD + 批量新增 |
|
| 系统枚举 | 完整 CRUD + 批量新增 |
|
||||||
| 附件管理 | 占位 |
|
| 附件管理 | 占位 |
|
||||||
| 知识库 | 完整 CRUD + 双栏详情 |
|
| 知识库 | 完整 CRUD + 双栏详情 |
|
||||||
| 知识文档 | 占位 |
|
| 知识文档 | 条件查询 + 批量上传 + 批量解析入口 + 编辑/启停用/删除 |
|
||||||
|
|
||||||
当前 UI 规范:
|
当前 UI 规范:
|
||||||
|
|
||||||
@@ -167,10 +168,20 @@ npm run build
|
|||||||
- 大整数 ID 通过 `@JsonSerialize(ToStringSerializer.class)` 防止前端精度丢失
|
- 大整数 ID 通过 `@JsonSerialize(ToStringSerializer.class)` 防止前端精度丢失
|
||||||
- 全局异常处理返回 HTTP 400/500 状态码
|
- 全局异常处理返回 HTTP 400/500 状态码
|
||||||
|
|
||||||
|
## RAG 当前能力边界
|
||||||
|
|
||||||
|
当前 RAG 已经从元数据管理推进到"上传 + 解析入口"阶段:
|
||||||
|
|
||||||
|
- 知识库:支持列表、条件查询、详情、总览、单库文档概览、新增、编辑、删除。
|
||||||
|
- 知识文档:支持列表、条件查询、详情、新增/编辑、删除、批量上传。
|
||||||
|
- 文档解析:基于 Apache Tika 支持 TXT/Markdown/LOG、PDF、Word、Excel 文本抽取,解析时更新 `parseStatus`。
|
||||||
|
- 切片与向量表:`rag_chunk`、`rag_chunk_embedding` 实体、Mapper、Service 已有结构,但尚未实现切片生成、向量写入和检索召回。
|
||||||
|
- 前端:知识库页和知识文档页已经接入当前接口,检索配置、最近任务、重建索引仍是后续能力。
|
||||||
|
|
||||||
## 规划模块
|
## 规划模块
|
||||||
|
|
||||||
- `agent-core`:Agent 执行模型、工具注册、记忆和编排能力。
|
- `agent-core`:Agent 执行模型、工具注册、记忆和编排能力。
|
||||||
- `rag-core`:文档导入、切片、Embedding、检索和引用元数据。
|
- `rag-core`:文档导入、解析、切片、Embedding、检索和引用元数据。
|
||||||
- `model-provider`:基于 Spring AI 的聊天模型、Embedding、重排序和模型配置层。
|
- `model-provider`:基于 Spring AI 的聊天模型、Embedding、重排序和模型配置层。
|
||||||
- `platform-api`:面向前端和外部系统的 REST API。
|
- `platform-api`:面向前端和外部系统的 REST API。
|
||||||
- `platform-admin`:平台管理前端。
|
- `platform-admin`:平台管理前端。
|
||||||
@@ -186,4 +197,4 @@ npm run build
|
|||||||
|
|
||||||
- [Spring AI Reference](https://docs.spring.io/spring-ai/reference/)
|
- [Spring AI Reference](https://docs.spring.io/spring-ai/reference/)
|
||||||
- [Spring AI RAG Reference](https://docs.spring.io/spring-ai/reference/api/retrieval-augmented-generation.html)
|
- [Spring AI RAG Reference](https://docs.spring.io/spring-ai/reference/api/retrieval-augmented-generation.html)
|
||||||
- [MyBatis-Plus](https://baomidou.com/)
|
- [MyBatis-Plus](https://baomidou.com/)
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
- 全局异常处理 `GlobalExceptionHandler`。
|
- 全局异常处理 `GlobalExceptionHandler`。
|
||||||
- MyBatis-Plus 审计自动填充 `EntityAuditMetaObjectHandler`。
|
- MyBatis-Plus 审计自动填充 `EntityAuditMetaObjectHandler`。
|
||||||
- 附件本地存储配置 `AttachmentProperties`。
|
- 附件本地存储配置 `AttachmentProperties`。
|
||||||
|
- 文档解析抽象与 Apache Tika 解析实现。
|
||||||
- 系统枚举管理能力(CRUD + 批量新增 + 管理端查询)。
|
- 系统枚举管理能力(CRUD + 批量新增 + 管理端查询)。
|
||||||
- 附件上传能力(本地磁盘 + 元数据持久化)。
|
- 附件上传能力(本地磁盘 + 元数据持久化)。
|
||||||
|
|
||||||
@@ -58,6 +59,11 @@
|
|||||||
| SysAttachmentController | `common/controller/SysAttachmentController.java` |
|
| SysAttachmentController | `common/controller/SysAttachmentController.java` |
|
||||||
| SysEnumServiceImpl | `common/service/impl/SysEnumServiceImpl.java` |
|
| SysEnumServiceImpl | `common/service/impl/SysEnumServiceImpl.java` |
|
||||||
| SysAttachmentServiceImpl | `common/service/impl/SysAttachmentServiceImpl.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` |
|
| CommonStatusEnum | `common/enums/CommonStatusEnum.java` |
|
||||||
| EnableStatusEnum | `common/enums/EnableStatusEnum.java` |
|
| EnableStatusEnum | `common/enums/EnableStatusEnum.java` |
|
||||||
|
|
||||||
@@ -80,7 +86,8 @@
|
|||||||
|
|
||||||
- 维护 RAG 知识库主数据(CRUD + 编码唯一性校验)。
|
- 维护 RAG 知识库主数据(CRUD + 编码唯一性校验)。
|
||||||
- 维护知识库文档与附件的关联关系。
|
- 维护知识库文档与附件的关联关系。
|
||||||
- 定义解析状态、索引状态和 RAG 相关来源常量。
|
- 支持知识文档批量上传、解析入口和解析状态流转。
|
||||||
|
- 定义切片、向量、解析状态、索引状态和 RAG 相关来源常量。
|
||||||
|
|
||||||
关键类:
|
关键类:
|
||||||
|
|
||||||
@@ -88,28 +95,42 @@
|
|||||||
|----|------|
|
|----|------|
|
||||||
| RagStore | `rag/entity/RagStore.java` |
|
| RagStore | `rag/entity/RagStore.java` |
|
||||||
| RagDocument | `rag/entity/RagDocument.java` |
|
| RagDocument | `rag/entity/RagDocument.java` |
|
||||||
|
| RagChunk | `rag/entity/RagChunk.java` |
|
||||||
|
| RagChunkEmbedding | `rag/entity/RagChunkEmbedding.java` |
|
||||||
| RagStoreController | `rag/controller/RagStoreController.java` |
|
| RagStoreController | `rag/controller/RagStoreController.java` |
|
||||||
| RagDocumentController | `rag/controller/RagDocumentController.java` |
|
| RagDocumentController | `rag/controller/RagDocumentController.java` |
|
||||||
| RagStoreServiceImpl | `rag/service/impl/RagStoreServiceImpl.java` |
|
| RagStoreServiceImpl | `rag/service/impl/RagStoreServiceImpl.java` |
|
||||||
| RagDocumentServiceImpl | `rag/service/impl/RagDocumentServiceImpl.java` |
|
| RagDocumentServiceImpl | `rag/service/impl/RagDocumentServiceImpl.java` |
|
||||||
|
| RagDocumentParseServiceImpl | `rag/service/impl/RagDocumentParseServiceImpl.java` |
|
||||||
| RagParseStatusEnum | `rag/enums/RagParseStatusEnum.java` |
|
| RagParseStatusEnum | `rag/enums/RagParseStatusEnum.java` |
|
||||||
| RagIndexStatusEnum | `rag/enums/RagIndexStatusEnum.java` |
|
| RagIndexStatusEnum | `rag/enums/RagIndexStatusEnum.java` |
|
||||||
|
| RagChunkStrategyEnum | `rag/enums/RagChunkStrategyEnum.java` |
|
||||||
| RagSystemConstants | `rag/constant/RagSystemConstants.java` |
|
| RagSystemConstants | `rag/constant/RagSystemConstants.java` |
|
||||||
|
|
||||||
接口列表:
|
接口列表:
|
||||||
|
|
||||||
| 方法 | 路径 | 说明 |
|
| 方法 | 路径 | 说明 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
|
| POST | `/api/rag/store/list` | 查询全部知识库 |
|
||||||
| POST | `/api/rag/store/query` | 知识库条件查询 |
|
| POST | `/api/rag/store/query` | 知识库条件查询 |
|
||||||
| GET | `/api/rag/store/detail` | 获取知识库详情 |
|
| GET | `/api/rag/store/detail` | 获取知识库详情 |
|
||||||
|
| GET | `/api/rag/store/overview` | 获取知识库总览 |
|
||||||
|
| GET | `/api/rag/store/documentOverview` | 获取单个知识库文档概览 |
|
||||||
| POST | `/api/rag/store/save` | 新增/更新知识库 |
|
| POST | `/api/rag/store/save` | 新增/更新知识库 |
|
||||||
| POST | `/api/rag/store/delete` | 删除知识库 |
|
| POST | `/api/rag/store/delete` | 删除知识库 |
|
||||||
|
| POST | `/api/rag/documents/list` | 查询全部知识文档 |
|
||||||
| POST | `/api/rag/documents/query` | 知识文档条件查询 |
|
| 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、文档 CRUD、批量上传、Tika 文本解析和状态流转已完成。
|
||||||
- 尚未实现"文档上传后自动建档"、"解析入库"、"切片向量化"、"检索问答"等业务流程。
|
- 解析结果当前只返回给调用方并更新文档状态,尚未写入 `rag_chunk`。
|
||||||
|
- `rag_chunk`、`rag_chunk_embedding` 的结构层已就绪,尚未实现切片生成、向量化、索引任务和检索问答。
|
||||||
|
|
||||||
## 4. 数据模型关系
|
## 4. 数据模型关系
|
||||||
|
|
||||||
@@ -121,8 +142,10 @@
|
|||||||
| `sys_attachment` | 附件元数据 | 独立,被 rag_document 引用 |
|
| `sys_attachment` | 附件元数据 | 独立,被 rag_document 引用 |
|
||||||
| `rag_store` | 知识库主表 | 独立 |
|
| `rag_store` | 知识库主表 | 独立 |
|
||||||
| `rag_document` | 知识库文档表 | 关联 `rag_store.id` 和 `sys_attachment.id` |
|
| `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_document` 是 RAG 模块与附件模块的连接点,`rag_chunk` 和 `rag_chunk_embedding` 是下一步检索链路的核心落点。
|
||||||
|
|
||||||
## 5. 配置与运行
|
## 5. 配置与运行
|
||||||
|
|
||||||
@@ -141,15 +164,15 @@
|
|||||||
|
|
||||||
## 7. 当前不足
|
## 7. 当前不足
|
||||||
|
|
||||||
- RAG 尚未进入"可用链路",只有元数据管理层。
|
- RAG 尚未进入"可检索链路",当前完成上传与解析,但未完成切片、向量化和召回。
|
||||||
- Agent 运行时相关模型与服务尚未开始建设。
|
- Agent 运行时相关模型与服务尚未开始建设。
|
||||||
- 前端部分页面(工作台、附件管理、知识文档)为占位状态。
|
- 前端部分页面(工作台、附件管理、检索配置、最近任务)为占位或后续能力提示。
|
||||||
- 缺少鉴权、租户、操作日志。
|
- 缺少鉴权、租户、操作日志。
|
||||||
|
|
||||||
## 8. 建议演进方向
|
## 8. 建议演进方向
|
||||||
|
|
||||||
1. 补 RAG 最小闭环:上传附件 → 建立文档 → 状态流转 → 解析占位。
|
1. 补 RAG 最小检索闭环:解析文本 → 生成切片 → 生成向量 → 检索召回。
|
||||||
2. 接入 Spring AI,实现最小模型调用链路。
|
2. 接入 Spring AI,实现最小模型调用链路。
|
||||||
3. 建设 Agent 域模型:Agent、Session、Message、Tool、Task。
|
3. 建设 Agent 域模型:Agent、Session、Message、Tool、Task。
|
||||||
4. 补齐前端占位页面的表单与联调。
|
4. 补齐索引任务、重试、重建索引和前端任务视图。
|
||||||
5. 衔接模型供应商、工作流编排和前端管理台。
|
5. 衔接模型供应商、工作流编排和前端管理台。
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Common Agent 开发路线图
|
# Common Agent 开发路线图
|
||||||
|
|
||||||
本文档基于 2026-05-21 当前分支代码整理,用来区分"已经完成""建议优先做""中期建设项"。
|
本文档基于 2026-05-24 当前分支代码整理,用来区分"已经完成""建议优先做""中期建设项"。
|
||||||
|
|
||||||
## 已完成
|
## 已完成
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
- Spring Boot 4.0.6 后端工程初始化。
|
- Spring Boot 4.0.6 后端工程初始化。
|
||||||
- PostgreSQL 数据源与多环境配置文件(dev / template)。
|
- PostgreSQL 数据源与多环境配置文件(dev / template)。
|
||||||
- MyBatis-Plus 3.5.16、Lombok、Springdoc OpenAPI 2.8.13 已接入。
|
- MyBatis-Plus 3.5.16、Lombok、Springdoc OpenAPI 2.8.13 已接入。
|
||||||
|
- Apache Tika 3.2.3 已接入,用于文档文本抽取。
|
||||||
- Maven Wrapper。
|
- Maven Wrapper。
|
||||||
|
|
||||||
### 公共能力
|
### 公共能力
|
||||||
@@ -18,6 +19,8 @@
|
|||||||
- `RequestResult<T>` 统一 API 返回体。
|
- `RequestResult<T>` 统一 API 返回体。
|
||||||
- `GlobalExceptionHandler` 全局异常处理。
|
- `GlobalExceptionHandler` 全局异常处理。
|
||||||
- `AttachmentProperties` 附件本地存储配置。
|
- `AttachmentProperties` 附件本地存储配置。
|
||||||
|
- 文档解析抽象:`DocumentParser`、`DocumentParserFactory`、`DocumentParseContext`、`DocumentParseResult`。
|
||||||
|
- Tika 解析实现:TXT/Markdown/LOG、PDF、Word、Excel。
|
||||||
- `sys_enum` 完整能力:实体、Mapper、Service、Controller、DTO 层。
|
- `sys_enum` 完整能力:实体、Mapper、Service、Controller、DTO 层。
|
||||||
- 支持单条增删改查、批量新增、管理端条件查询(含关键词搜索)。
|
- 支持单条增删改查、批量新增、管理端条件查询(含关键词搜索)。
|
||||||
- 批量新增内含重复值校验。
|
- 批量新增内含重复值校验。
|
||||||
@@ -27,10 +30,14 @@
|
|||||||
### RAG 基础能力
|
### RAG 基础能力
|
||||||
|
|
||||||
- `rag_store`、`rag_document` 表结构与实体定义。
|
- `rag_store`、`rag_document` 表结构与实体定义。
|
||||||
|
- `rag_chunk`、`rag_chunk_embedding` 表结构与实体定义。
|
||||||
- RAG 知识库完整 CRUD(含编码唯一性校验)。
|
- RAG 知识库完整 CRUD(含编码唯一性校验)。
|
||||||
- 知识文档条件查询服务。
|
- 知识文档完整 CRUD、条件查询、批量上传。
|
||||||
|
- 文档解析入口:支持批量提交文档 ID,按切片策略参数发起解析,状态流转为 PARSING / PARSED / FAILED。
|
||||||
|
- 知识库总览接口与单库文档概览接口。
|
||||||
- RAG 解析状态枚举 `RagParseStatusEnum`(UPLOADED / PARSING / PARSED / FAILED)。
|
- RAG 解析状态枚举 `RagParseStatusEnum`(UPLOADED / PARSING / PARSED / FAILED)。
|
||||||
- RAG 索引状态枚举 `RagIndexStatusEnum`(PENDING / INDEXING / INDEXED / FAILED)。
|
- RAG 索引状态枚举 `RagIndexStatusEnum`(PENDING / INDEXING / INDEXED / FAILED)。
|
||||||
|
- RAG 切片策略枚举 `RagChunkStrategyEnum`(FIXED_LENGTH / PARAGRAPH / HEADING / TABLE_ROW / DELIMITER / SEMANTIC)。
|
||||||
- RAG 来源常量 `RagSystemConstants`。
|
- RAG 来源常量 `RagSystemConstants`。
|
||||||
|
|
||||||
### 前端控制台
|
### 前端控制台
|
||||||
@@ -38,7 +45,9 @@
|
|||||||
- Vue 3 + TypeScript + Vite + Element Plus + Pinia + Vue Router 工程。
|
- Vue 3 + TypeScript + Vite + Element Plus + Pinia + Vue Router 工程。
|
||||||
- `AdminLayout.vue` 管理后台布局(侧边栏菜单 + 主内容区)。
|
- `AdminLayout.vue` 管理后台布局(侧边栏菜单 + 主内容区)。
|
||||||
- 系统枚举管理页:完整 CRUD + 批量新增对话框 + 关键词搜索 + 响应式布局。
|
- 系统枚举管理页:完整 CRUD + 批量新增对话框 + 关键词搜索 + 响应式布局。
|
||||||
- 知识库管理页:完整 CRUD + 概览卡片 + 双栏详情 + 编辑对话框。
|
- 知识库管理页:完整 CRUD + 概览卡片 + 双栏详情 + 编辑对话框 + 批量上传入口。
|
||||||
|
- 知识文档管理页:条件查询 + 批量上传 + 批量解析入口 + 编辑/启停用/删除。
|
||||||
|
- RAG 文档批量上传组件:支持锁定知识库或选择知识库上传。
|
||||||
- API 层:Axios 封装 + Long 类型安全解析 + 统一错误拦截。
|
- API 层:Axios 封装 + Long 类型安全解析 + 统一错误拦截。
|
||||||
- 单元测试:Vitest + @vue/test-utils,覆盖路由、布局、页面和 API。
|
- 单元测试:Vitest + @vue/test-utils,覆盖路由、布局、页面和 API。
|
||||||
|
|
||||||
@@ -49,24 +58,24 @@
|
|||||||
|
|
||||||
## 短期优先级
|
## 短期优先级
|
||||||
|
|
||||||
建议优先完成下面几项,把 RAG 元数据管理层升级为可用的业务闭环:
|
建议优先完成下面几项,把 RAG 上传解析链路升级为可检索链路:
|
||||||
|
|
||||||
1. 知识库文档上传接口:上传文件后自动创建 `rag_document` 记录。
|
1. 切片生成服务:把解析服务拿到的 `DocumentParseResult.text` 改造成可持久化的 `rag_chunk` 记录。
|
||||||
2. 文档解析任务入口与状态流转。
|
2. 按 `RagChunkStrategyEnum` 先落地 `FIXED_LENGTH` 和 `DELIMITER`,再扩展段落/标题/表格/语义切片。
|
||||||
3. 向量化任务入口与状态流转。
|
3. 索引任务入口:把文档或知识库的 `indexStatus` 推进为真实状态流转。
|
||||||
4. 知识库文档新增、详情、启停用、重试等管理接口。
|
4. 接入 Spring AI Embedding 模型,生成并保存 `rag_chunk_embedding`。
|
||||||
5. 前端附件管理页面联调。
|
5. 补齐重建索引、失败重试、最近任务接口。
|
||||||
6. 前端知识文档页面联调。
|
6. 前端接入检索配置、最近任务和重建索引动作。
|
||||||
|
|
||||||
## RAG 最小闭环
|
## RAG 最小闭环
|
||||||
|
|
||||||
在基础规范层补齐后,当前 RAG 元数据层已完成,下一步建设业务闭环:
|
当前上传与解析入口已完成,下一步建设最小检索闭环:
|
||||||
|
|
||||||
1. 附件上传后自动创建 `rag_document` 记录。
|
1. 批量上传文件,自动创建 `sys_attachment` 与 `rag_document`。
|
||||||
2. 建立文档解析任务入口(占位解析器)。
|
2. 调用解析入口,使用 Tika 抽取文本并更新 `parseStatus`。
|
||||||
3. 解析状态、索引状态按流程流转。
|
3. 根据切片策略生成 `rag_chunk`。
|
||||||
4. 接入占位向量化接口。
|
4. 调用 Embedding 模型生成向量并写入 `rag_chunk_embedding`。
|
||||||
5. 提供知识库文档管理完整接口(新增、详情、启停用、重试、删除)。
|
5. 提供检索接口,按 query 向量召回切片并返回引用元数据。
|
||||||
|
|
||||||
## Agent 核心能力
|
## Agent 核心能力
|
||||||
|
|
||||||
@@ -98,6 +107,8 @@ RAG 数据链路稳定后,再进入 Agent 主线:
|
|||||||
- 上传接口返回模型:`SysAttachmentResponse`。
|
- 上传接口返回模型:`SysAttachmentResponse`。
|
||||||
- 枚举查询接口规范:POST `/api/sys-enum/queryForManagement`。
|
- 枚举查询接口规范:POST `/api/sys-enum/queryForManagement`。
|
||||||
- RAG 文档状态字段:`parseStatus` + `indexStatus` + `enabled`。
|
- RAG 文档状态字段:`parseStatus` + `indexStatus` + `enabled`。
|
||||||
|
- RAG 文档批量上传接口:POST `/api/rag/documents/batchUpload`。
|
||||||
|
- RAG 文档解析接口:POST `/api/rag/documents/parse`,当前同步解析并返回解析元数据。
|
||||||
- 大整数 ID 通过 `@JsonSerialize(ToStringSerializer.class)` 输出为字符串。
|
- 大整数 ID 通过 `@JsonSerialize(ToStringSerializer.class)` 输出为字符串。
|
||||||
|
|
||||||
## 里程碑
|
## 里程碑
|
||||||
@@ -109,9 +120,9 @@ RAG 数据链路稳定后,再进入 Agent 主线:
|
|||||||
|
|
||||||
### 里程碑 2:RAG 可演示
|
### 里程碑 2:RAG 可演示
|
||||||
|
|
||||||
- 实现知识库文档上传、建档、状态流转。
|
- 已完成知识库文档上传、建档、解析状态流转。
|
||||||
- 预留解析和索引任务接口。
|
- 下一步完成切片持久化、向量化和检索接口。
|
||||||
- 前端知识库页面完整联调。
|
- 前端知识库与知识文档页面已接入当前接口,索引任务和检索配置待接入。
|
||||||
|
|
||||||
### 里程碑 3:Agent 最小运行时
|
### 里程碑 3:Agent 最小运行时
|
||||||
|
|
||||||
@@ -119,4 +130,4 @@ RAG 数据链路稳定后,再进入 Agent 主线:
|
|||||||
|
|
||||||
### 里程碑 4:平台管理化
|
### 里程碑 4:平台管理化
|
||||||
|
|
||||||
- 补齐前端占位页面联调与后台配置能力,形成完整平台雏形。
|
- 补齐前端占位页面联调与后台配置能力,形成完整平台雏形。
|
||||||
|
|||||||
@@ -1,92 +0,0 @@
|
|||||||
# Vue3 Frontend Framework Implementation Plan
|
|
||||||
|
|
||||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
||||||
|
|
||||||
**Goal:** 在当前仓库根目录下新增 `frontend/` Vue3 前端工程,形成可独立运行的前后端分离管理台骨架。
|
|
||||||
|
|
||||||
**Architecture:** 前端采用 `Vite + Vue 3 + TypeScript + Vue Router + Pinia + Axios`,以 `frontend/` 作为独立工程目录。页面层按“管理台主布局 + 模块页面”组织,接口请求按模块拆到 `api/`,统一解析后端 `RequestResult<T>` 返回体,并通过开发代理转发到 Spring Boot 后端。
|
|
||||||
|
|
||||||
**Tech Stack:** Vue 3、TypeScript、Vite、Vue Router、Pinia、Axios、CSS Variables
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Task 1: 初始化前端工程目录和基础依赖
|
|
||||||
|
|
||||||
**Files:**
|
|
||||||
- Create: `frontend/package.json`
|
|
||||||
- Create: `frontend/tsconfig.json`
|
|
||||||
- Create: `frontend/tsconfig.node.json`
|
|
||||||
- Create: `frontend/vite.config.ts`
|
|
||||||
- Create: `frontend/index.html`
|
|
||||||
- Create: `frontend/.gitignore`
|
|
||||||
|
|
||||||
- [ ] 建立前端工程元数据、脚本和 Vite 配置
|
|
||||||
- [ ] 配置开发服务器代理到后端 `/api`
|
|
||||||
- [ ] 固定 TypeScript 和构建入口
|
|
||||||
|
|
||||||
### Task 2: 建立应用入口与全局框架
|
|
||||||
|
|
||||||
**Files:**
|
|
||||||
- Create: `frontend/src/main.ts`
|
|
||||||
- Create: `frontend/src/App.vue`
|
|
||||||
- Create: `frontend/src/styles/reset.css`
|
|
||||||
- Create: `frontend/src/styles/theme.css`
|
|
||||||
- Create: `frontend/src/styles/global.css`
|
|
||||||
|
|
||||||
- [ ] 注册 Router 与 Pinia
|
|
||||||
- [ ] 建立全局样式、主题变量和基础页面容器
|
|
||||||
- [ ] 保证桌面与移动端都能正常加载
|
|
||||||
|
|
||||||
### Task 3: 建立路由、布局和导航骨架
|
|
||||||
|
|
||||||
**Files:**
|
|
||||||
- Create: `frontend/src/router/index.ts`
|
|
||||||
- Create: `frontend/src/layouts/AdminLayout.vue`
|
|
||||||
- Create: `frontend/src/components/app/AppSidebar.vue`
|
|
||||||
- Create: `frontend/src/components/app/AppHeader.vue`
|
|
||||||
- Create: `frontend/src/components/app/AppShellCard.vue`
|
|
||||||
|
|
||||||
- [ ] 建立管理台布局
|
|
||||||
- [ ] 配置仪表盘、系统枚举、附件管理、RAG知识库、RAG文档路由
|
|
||||||
- [ ] 建立侧边导航和顶部栏
|
|
||||||
|
|
||||||
### Task 4: 建立接口层与通用类型
|
|
||||||
|
|
||||||
**Files:**
|
|
||||||
- Create: `frontend/src/types/http.ts`
|
|
||||||
- Create: `frontend/src/types/sys-enum.ts`
|
|
||||||
- Create: `frontend/src/types/attachment.ts`
|
|
||||||
- Create: `frontend/src/types/rag.ts`
|
|
||||||
- Create: `frontend/src/api/http.ts`
|
|
||||||
- Create: `frontend/src/api/sys-enum.ts`
|
|
||||||
- Create: `frontend/src/api/attachment.ts`
|
|
||||||
- Create: `frontend/src/api/rag.ts`
|
|
||||||
|
|
||||||
- [ ] 建立 `RequestResult<T>` 前端类型
|
|
||||||
- [ ] 建立 Axios 实例和统一响应解包
|
|
||||||
- [ ] 按模块拆分 API 请求方法
|
|
||||||
|
|
||||||
### Task 5: 建立页面骨架与基础交互
|
|
||||||
|
|
||||||
**Files:**
|
|
||||||
- Create: `frontend/src/views/dashboard/DashboardView.vue`
|
|
||||||
- Create: `frontend/src/views/sys-enum/SysEnumView.vue`
|
|
||||||
- Create: `frontend/src/views/attachment/AttachmentView.vue`
|
|
||||||
- Create: `frontend/src/views/rag-store/RagStoreView.vue`
|
|
||||||
- Create: `frontend/src/views/rag-document/RagDocumentView.vue`
|
|
||||||
- Create: `frontend/src/components/common/PageSection.vue`
|
|
||||||
- Create: `frontend/src/components/common/EmptyState.vue`
|
|
||||||
|
|
||||||
- [ ] 建立四个业务页面的查询区、状态卡片和表格占位
|
|
||||||
- [ ] 系统枚举、RAG 页面接入真实查询请求
|
|
||||||
- [ ] 附件页面预留上传表单和结果展示
|
|
||||||
|
|
||||||
### Task 6: 补充工程说明与验证
|
|
||||||
|
|
||||||
**Files:**
|
|
||||||
- Modify: `README.md`
|
|
||||||
- Create: `frontend/README.md`
|
|
||||||
|
|
||||||
- [ ] 追加前端启动说明
|
|
||||||
- [ ] 记录 Node 版本、运行命令和代理约定
|
|
||||||
- [ ] 执行 `npm install`、`npm run build` 做基础验证
|
|
||||||
34
frontend/README.md
Normal file
34
frontend/README.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Common Agent Frontend
|
||||||
|
|
||||||
|
## 启动方式
|
||||||
|
|
||||||
|
进入前端目录:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd frontend
|
||||||
|
```
|
||||||
|
|
||||||
|
安装依赖:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm config set registry https://registry.npmjs.org/
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
启动开发服务:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm dev
|
||||||
|
```
|
||||||
|
|
||||||
|
构建生产包:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm build
|
||||||
|
```
|
||||||
|
|
||||||
|
本地预览生产包:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm preview
|
||||||
|
```
|
||||||
171
frontend/pnpm-lock.yaml
generated
171
frontend/pnpm-lock.yaml
generated
@@ -56,7 +56,7 @@ importers:
|
|||||||
version: 4.1.6(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.3(@types/node@24.12.4))
|
version: 4.1.6(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.3(@types/node@24.12.4))
|
||||||
vue-tsc:
|
vue-tsc:
|
||||||
specifier: ^3.1.8
|
specifier: ^3.1.8
|
||||||
version: 3.3.1(typescript@5.9.3)
|
version: 3.3.0(typescript@5.9.3)
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -553,17 +553,17 @@ packages:
|
|||||||
'@vue/devtools-api@6.6.4':
|
'@vue/devtools-api@6.6.4':
|
||||||
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
|
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
|
||||||
|
|
||||||
'@vue/devtools-api@7.7.7':
|
'@vue/devtools-api@7.7.9':
|
||||||
resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==}
|
resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==}
|
||||||
|
|
||||||
'@vue/devtools-kit@7.7.7':
|
'@vue/devtools-kit@7.7.9':
|
||||||
resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==}
|
resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==}
|
||||||
|
|
||||||
'@vue/devtools-shared@7.7.7':
|
'@vue/devtools-shared@7.7.9':
|
||||||
resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==}
|
resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==}
|
||||||
|
|
||||||
'@vue/language-core@3.3.1':
|
'@vue/language-core@3.3.0':
|
||||||
resolution: {integrity: sha512-NP8g6V7x81NVOXbLupUvYY6i6LqUkjkVowe2epRedmpgaFCOdjgWHE/rQBvEJ4r7koAYODIjGeBWEdt6n7jYXQ==}
|
resolution: {integrity: sha512-EyUxq1b8Yoxk6hQ6X33BIRnfFLb9Rbm9w/8G8y6uMxlQu7CW7yy9JS/z54xSpIvBvVWX6Lt5v1aBGwmrqD4aJw==}
|
||||||
|
|
||||||
'@vue/reactivity@3.5.34':
|
'@vue/reactivity@3.5.34':
|
||||||
resolution: {integrity: sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==}
|
resolution: {integrity: sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==}
|
||||||
@@ -620,16 +620,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
|
resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
|
||||||
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
|
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
|
||||||
|
|
||||||
agent-base@6.0.0:
|
agent-base@6.0.2:
|
||||||
resolution: {integrity: sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==}
|
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
||||||
engines: {node: '>= 6.0.0'}
|
engines: {node: '>= 6.0.0'}
|
||||||
|
|
||||||
agent-base@7.1.0:
|
agent-base@7.1.4:
|
||||||
resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
|
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
|
||||||
engines: {node: '>= 14'}
|
|
||||||
|
|
||||||
agent-base@7.1.2:
|
|
||||||
resolution: {integrity: sha512-JVzqkCNRT+VfqzzgPWDPnwvDheSAUdiMUn3NoLXpDJF5lRqeJqyC9iGsAxIOAW+mzIdq+uP1TvcX6bMtrH0agg==}
|
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
alien-signals@3.2.1:
|
alien-signals@3.2.1:
|
||||||
@@ -664,8 +660,8 @@ packages:
|
|||||||
axios@1.16.1:
|
axios@1.16.1:
|
||||||
resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==}
|
resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==}
|
||||||
|
|
||||||
balanced-match@1.0.0:
|
balanced-match@1.0.2:
|
||||||
resolution: {integrity: sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==}
|
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||||
|
|
||||||
bidi-js@1.0.3:
|
bidi-js@1.0.3:
|
||||||
resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
|
resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
|
||||||
@@ -673,8 +669,8 @@ packages:
|
|||||||
bignumber.js@9.0.0:
|
bignumber.js@9.0.0:
|
||||||
resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==}
|
resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==}
|
||||||
|
|
||||||
birpc@2.3.0:
|
birpc@2.9.0:
|
||||||
resolution: {integrity: sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==}
|
resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==}
|
||||||
|
|
||||||
brace-expansion@2.1.0:
|
brace-expansion@2.1.0:
|
||||||
resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==}
|
resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==}
|
||||||
@@ -698,8 +694,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
commander@10.0.0:
|
commander@10.0.1:
|
||||||
resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==}
|
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
config-chain@1.1.13:
|
config-chain@1.1.13:
|
||||||
@@ -833,8 +829,8 @@ packages:
|
|||||||
debug:
|
debug:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
foreground-child@3.1.0:
|
foreground-child@3.3.1:
|
||||||
resolution: {integrity: sha512-lXeSPRCndWPaipZbtI4CkvTZpF6OPsy19dkvf7+5AHeJD+w+iAKPc9Q78xWBmX4SdR+8xrtY9jTXs/YDv8q+Ug==}
|
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
form-data@4.0.5:
|
form-data@4.0.5:
|
||||||
@@ -897,9 +893,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
|
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
ini@1.3.4:
|
ini@1.3.8:
|
||||||
resolution: {integrity: sha512-VUA7WAWNCWfm6/8f9kAb8Y6iGBWnmCfgFS5dTrv2C38LLm1KUmpY388mCVCJCsMKQomvOQ1oW8/edXdChd9ZXQ==}
|
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
|
||||||
deprecated: Please update to ini >=1.3.6 to avoid a prototype pollution issue
|
|
||||||
|
|
||||||
is-fullwidth-code-point@3.0.0:
|
is-fullwidth-code-point@3.0.0:
|
||||||
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
||||||
@@ -915,9 +910,8 @@ packages:
|
|||||||
isexe@2.0.0:
|
isexe@2.0.0:
|
||||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||||
|
|
||||||
jackspeak@3.1.2:
|
jackspeak@3.4.3:
|
||||||
resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==}
|
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
|
||||||
engines: {node: '>=14'}
|
|
||||||
|
|
||||||
js-beautify@1.15.4:
|
js-beautify@1.15.4:
|
||||||
resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
|
resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
|
||||||
@@ -953,12 +947,11 @@ packages:
|
|||||||
lodash@4.18.1:
|
lodash@4.18.1:
|
||||||
resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
|
resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
|
||||||
|
|
||||||
lru-cache@10.2.0:
|
lru-cache@10.4.3:
|
||||||
resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
|
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
|
||||||
engines: {node: 14 || >=16.14}
|
|
||||||
|
|
||||||
lru-cache@11.5.0:
|
lru-cache@11.4.0:
|
||||||
resolution: {integrity: sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==}
|
resolution: {integrity: sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==}
|
||||||
engines: {node: 20 || >=22}
|
engines: {node: 20 || >=22}
|
||||||
|
|
||||||
magic-string@0.30.21:
|
magic-string@0.30.21:
|
||||||
@@ -1119,8 +1112,8 @@ packages:
|
|||||||
std-env@4.1.0:
|
std-env@4.1.0:
|
||||||
resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
|
resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
|
||||||
|
|
||||||
string-width@4.2.0:
|
string-width@4.2.3:
|
||||||
resolution: {integrity: sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==}
|
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
string-width@5.1.2:
|
string-width@5.1.2:
|
||||||
@@ -1264,16 +1257,16 @@ packages:
|
|||||||
vscode-uri@3.1.0:
|
vscode-uri@3.1.0:
|
||||||
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
|
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
|
||||||
|
|
||||||
vue-component-type-helpers@3.3.1:
|
vue-component-type-helpers@3.3.0:
|
||||||
resolution: {integrity: sha512-pu58kqxmVyEH6VfNYW1UyEfR3XAnJ27ZXT3yzXxxpjLxVzAbyC35Zk/nm/RMs7ijWnJNSd9fWkeex2OhUsx3MA==}
|
resolution: {integrity: sha512-vwR8DDsBysI9NWXa0okPFpCcW+BUC3sPTuLBNo1faMzw4QWMFd+3/lFYFu29ZN0q+8UReXWJHEYesC9dcXYCLg==}
|
||||||
|
|
||||||
vue-router@4.6.4:
|
vue-router@4.6.4:
|
||||||
resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==}
|
resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.5.0
|
vue: ^3.5.0
|
||||||
|
|
||||||
vue-tsc@3.3.1:
|
vue-tsc@3.3.0:
|
||||||
resolution: {integrity: sha512-webBP3jhlxzhELZ2g+11KJ6pg5OVY1xWhWrj7N/yQMi1CrtxJnW+tUACyRVeDK0cQNLP2Va5HNYK8pe+7c+msw==}
|
resolution: {integrity: sha512-kY8RcoTOENASi0P1GLPvJgA2+hoGF+t8We1UGgmnAb1r/GjTUMSE3zz+WGfjPORZNnBHdAt67sVPhBLXWunkeg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=5.0.0'
|
typescript: '>=5.0.0'
|
||||||
@@ -1306,8 +1299,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==}
|
resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==}
|
||||||
engines: {node: '>=20'}
|
engines: {node: '>=20'}
|
||||||
|
|
||||||
which@2.0.1:
|
which@2.0.2:
|
||||||
resolution: {integrity: sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==}
|
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -1353,7 +1346,7 @@ snapshots:
|
|||||||
'@csstools/css-color-parser': 4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
|
'@csstools/css-color-parser': 4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
|
||||||
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
||||||
'@csstools/css-tokenizer': 4.0.0
|
'@csstools/css-tokenizer': 4.0.0
|
||||||
lru-cache: 11.5.0
|
lru-cache: 11.4.0
|
||||||
|
|
||||||
'@asamuzakjp/dom-selector@6.8.1':
|
'@asamuzakjp/dom-selector@6.8.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1361,7 +1354,7 @@ snapshots:
|
|||||||
bidi-js: 1.0.3
|
bidi-js: 1.0.3
|
||||||
css-tree: 3.2.1
|
css-tree: 3.2.1
|
||||||
is-potential-custom-element-name: 1.0.1
|
is-potential-custom-element-name: 1.0.1
|
||||||
lru-cache: 11.5.0
|
lru-cache: 11.4.0
|
||||||
|
|
||||||
'@asamuzakjp/nwsapi@2.3.9': {}
|
'@asamuzakjp/nwsapi@2.3.9': {}
|
||||||
|
|
||||||
@@ -1502,7 +1495,7 @@ snapshots:
|
|||||||
'@isaacs/cliui@8.0.2':
|
'@isaacs/cliui@8.0.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
string-width: 5.1.2
|
string-width: 5.1.2
|
||||||
string-width-cjs: string-width@4.2.0
|
string-width-cjs: string-width@4.2.3
|
||||||
strip-ansi: 7.2.0
|
strip-ansi: 7.2.0
|
||||||
strip-ansi-cjs: strip-ansi@6.0.1
|
strip-ansi-cjs: strip-ansi@6.0.1
|
||||||
wrap-ansi: 8.1.0
|
wrap-ansi: 8.1.0
|
||||||
@@ -1710,25 +1703,25 @@ snapshots:
|
|||||||
|
|
||||||
'@vue/devtools-api@6.6.4': {}
|
'@vue/devtools-api@6.6.4': {}
|
||||||
|
|
||||||
'@vue/devtools-api@7.7.7':
|
'@vue/devtools-api@7.7.9':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-kit': 7.7.7
|
'@vue/devtools-kit': 7.7.9
|
||||||
|
|
||||||
'@vue/devtools-kit@7.7.7':
|
'@vue/devtools-kit@7.7.9':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-shared': 7.7.7
|
'@vue/devtools-shared': 7.7.9
|
||||||
birpc: 2.3.0
|
birpc: 2.9.0
|
||||||
hookable: 5.5.3
|
hookable: 5.5.3
|
||||||
mitt: 3.0.1
|
mitt: 3.0.1
|
||||||
perfect-debounce: 1.0.0
|
perfect-debounce: 1.0.0
|
||||||
speakingurl: 14.0.1
|
speakingurl: 14.0.1
|
||||||
superjson: 2.2.6
|
superjson: 2.2.6
|
||||||
|
|
||||||
'@vue/devtools-shared@7.7.7':
|
'@vue/devtools-shared@7.7.9':
|
||||||
dependencies:
|
dependencies:
|
||||||
rfdc: 1.4.1
|
rfdc: 1.4.1
|
||||||
|
|
||||||
'@vue/language-core@3.3.1':
|
'@vue/language-core@3.3.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/language-core': 2.4.28
|
'@volar/language-core': 2.4.28
|
||||||
'@vue/compiler-dom': 3.5.34
|
'@vue/compiler-dom': 3.5.34
|
||||||
@@ -1767,7 +1760,7 @@ snapshots:
|
|||||||
'@vue/compiler-dom': 3.5.34
|
'@vue/compiler-dom': 3.5.34
|
||||||
js-beautify: 1.15.4
|
js-beautify: 1.15.4
|
||||||
vue: 3.5.34(typescript@5.9.3)
|
vue: 3.5.34(typescript@5.9.3)
|
||||||
vue-component-type-helpers: 3.3.1
|
vue-component-type-helpers: 3.3.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@vue/server-renderer': 3.5.34(vue@3.5.34(typescript@5.9.3))
|
'@vue/server-renderer': 3.5.34(vue@3.5.34(typescript@5.9.3))
|
||||||
|
|
||||||
@@ -1791,23 +1784,13 @@ snapshots:
|
|||||||
|
|
||||||
abbrev@2.0.0: {}
|
abbrev@2.0.0: {}
|
||||||
|
|
||||||
agent-base@6.0.0:
|
agent-base@6.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
agent-base@7.1.0:
|
agent-base@7.1.4: {}
|
||||||
dependencies:
|
|
||||||
debug: 4.4.3
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
agent-base@7.1.2:
|
|
||||||
dependencies:
|
|
||||||
debug: 4.4.3
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
alien-signals@3.2.1: {}
|
alien-signals@3.2.1: {}
|
||||||
|
|
||||||
@@ -1837,7 +1820,7 @@ snapshots:
|
|||||||
- debug
|
- debug
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
balanced-match@1.0.0: {}
|
balanced-match@1.0.2: {}
|
||||||
|
|
||||||
bidi-js@1.0.3:
|
bidi-js@1.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1845,11 +1828,11 @@ snapshots:
|
|||||||
|
|
||||||
bignumber.js@9.0.0: {}
|
bignumber.js@9.0.0: {}
|
||||||
|
|
||||||
birpc@2.3.0: {}
|
birpc@2.9.0: {}
|
||||||
|
|
||||||
brace-expansion@2.1.0:
|
brace-expansion@2.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
balanced-match: 1.0.0
|
balanced-match: 1.0.2
|
||||||
|
|
||||||
call-bind-apply-helpers@1.0.2:
|
call-bind-apply-helpers@1.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1868,11 +1851,11 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
delayed-stream: 1.0.0
|
delayed-stream: 1.0.0
|
||||||
|
|
||||||
commander@10.0.0: {}
|
commander@10.0.1: {}
|
||||||
|
|
||||||
config-chain@1.1.13:
|
config-chain@1.1.13:
|
||||||
dependencies:
|
dependencies:
|
||||||
ini: 1.3.4
|
ini: 1.3.8
|
||||||
proto-list: 1.2.4
|
proto-list: 1.2.4
|
||||||
|
|
||||||
convert-source-map@2.0.0: {}
|
convert-source-map@2.0.0: {}
|
||||||
@@ -1885,7 +1868,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-key: 3.1.1
|
path-key: 3.1.1
|
||||||
shebang-command: 2.0.0
|
shebang-command: 2.0.0
|
||||||
which: 2.0.1
|
which: 2.0.2
|
||||||
|
|
||||||
css-tree@3.2.1:
|
css-tree@3.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1897,7 +1880,7 @@ snapshots:
|
|||||||
'@asamuzakjp/css-color': 4.1.2
|
'@asamuzakjp/css-color': 4.1.2
|
||||||
'@csstools/css-syntax-patches-for-csstree': 1.1.4(css-tree@3.2.1)
|
'@csstools/css-syntax-patches-for-csstree': 1.1.4(css-tree@3.2.1)
|
||||||
css-tree: 3.2.1
|
css-tree: 3.2.1
|
||||||
lru-cache: 11.5.0
|
lru-cache: 11.4.0
|
||||||
|
|
||||||
csstype@3.2.3: {}
|
csstype@3.2.3: {}
|
||||||
|
|
||||||
@@ -1927,7 +1910,7 @@ snapshots:
|
|||||||
editorconfig@1.0.7:
|
editorconfig@1.0.7:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@one-ini/wasm': 0.1.1
|
'@one-ini/wasm': 0.1.1
|
||||||
commander: 10.0.0
|
commander: 10.0.1
|
||||||
minimatch: 9.0.9
|
minimatch: 9.0.9
|
||||||
semver: 7.8.0
|
semver: 7.8.0
|
||||||
|
|
||||||
@@ -1948,7 +1931,7 @@ snapshots:
|
|||||||
memoize-one: 6.0.0
|
memoize-one: 6.0.0
|
||||||
normalize-wheel-es: 1.2.0
|
normalize-wheel-es: 1.2.0
|
||||||
vue: 3.5.34(typescript@5.9.3)
|
vue: 3.5.34(typescript@5.9.3)
|
||||||
vue-component-type-helpers: 3.3.1
|
vue-component-type-helpers: 3.3.0
|
||||||
|
|
||||||
emoji-regex@8.0.0: {}
|
emoji-regex@8.0.0: {}
|
||||||
|
|
||||||
@@ -2018,7 +2001,7 @@ snapshots:
|
|||||||
|
|
||||||
follow-redirects@1.16.0: {}
|
follow-redirects@1.16.0: {}
|
||||||
|
|
||||||
foreground-child@3.1.0:
|
foreground-child@3.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
cross-spawn: 7.0.6
|
cross-spawn: 7.0.6
|
||||||
signal-exit: 4.1.0
|
signal-exit: 4.1.0
|
||||||
@@ -2056,8 +2039,8 @@ snapshots:
|
|||||||
|
|
||||||
glob@10.5.0:
|
glob@10.5.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
foreground-child: 3.1.0
|
foreground-child: 3.3.1
|
||||||
jackspeak: 3.1.2
|
jackspeak: 3.4.3
|
||||||
minimatch: 9.0.9
|
minimatch: 9.0.9
|
||||||
minipass: 7.1.3
|
minipass: 7.1.3
|
||||||
package-json-from-dist: 1.0.1
|
package-json-from-dist: 1.0.1
|
||||||
@@ -2085,26 +2068,26 @@ snapshots:
|
|||||||
|
|
||||||
http-proxy-agent@7.0.2:
|
http-proxy-agent@7.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 7.1.0
|
agent-base: 7.1.4
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
https-proxy-agent@5.0.1:
|
https-proxy-agent@5.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 6.0.0
|
agent-base: 6.0.2
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
https-proxy-agent@7.0.6:
|
https-proxy-agent@7.0.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 7.1.2
|
agent-base: 7.1.4
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
ini@1.3.4: {}
|
ini@1.3.8: {}
|
||||||
|
|
||||||
is-fullwidth-code-point@3.0.0: {}
|
is-fullwidth-code-point@3.0.0: {}
|
||||||
|
|
||||||
@@ -2114,7 +2097,7 @@ snapshots:
|
|||||||
|
|
||||||
isexe@2.0.0: {}
|
isexe@2.0.0: {}
|
||||||
|
|
||||||
jackspeak@3.1.2:
|
jackspeak@3.4.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@isaacs/cliui': 8.0.2
|
'@isaacs/cliui': 8.0.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -2172,9 +2155,9 @@ snapshots:
|
|||||||
|
|
||||||
lodash@4.18.1: {}
|
lodash@4.18.1: {}
|
||||||
|
|
||||||
lru-cache@10.2.0: {}
|
lru-cache@10.4.3: {}
|
||||||
|
|
||||||
lru-cache@11.5.0: {}
|
lru-cache@11.4.0: {}
|
||||||
|
|
||||||
magic-string@0.30.21:
|
magic-string@0.30.21:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2226,7 +2209,7 @@ snapshots:
|
|||||||
|
|
||||||
path-scurry@1.11.1:
|
path-scurry@1.11.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache: 10.2.0
|
lru-cache: 10.4.3
|
||||||
minipass: 7.1.3
|
minipass: 7.1.3
|
||||||
|
|
||||||
pathe@2.0.3: {}
|
pathe@2.0.3: {}
|
||||||
@@ -2239,7 +2222,7 @@ snapshots:
|
|||||||
|
|
||||||
pinia@3.0.4(typescript@5.9.3)(vue@3.5.34(typescript@5.9.3)):
|
pinia@3.0.4(typescript@5.9.3)(vue@3.5.34(typescript@5.9.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 7.7.7
|
'@vue/devtools-api': 7.7.9
|
||||||
vue: 3.5.34(typescript@5.9.3)
|
vue: 3.5.34(typescript@5.9.3)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
@@ -2315,7 +2298,7 @@ snapshots:
|
|||||||
|
|
||||||
std-env@4.1.0: {}
|
std-env@4.1.0: {}
|
||||||
|
|
||||||
string-width@4.2.0:
|
string-width@4.2.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
emoji-regex: 8.0.0
|
emoji-regex: 8.0.0
|
||||||
is-fullwidth-code-point: 3.0.0
|
is-fullwidth-code-point: 3.0.0
|
||||||
@@ -2412,17 +2395,17 @@ snapshots:
|
|||||||
|
|
||||||
vscode-uri@3.1.0: {}
|
vscode-uri@3.1.0: {}
|
||||||
|
|
||||||
vue-component-type-helpers@3.3.1: {}
|
vue-component-type-helpers@3.3.0: {}
|
||||||
|
|
||||||
vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)):
|
vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 6.6.4
|
'@vue/devtools-api': 6.6.4
|
||||||
vue: 3.5.34(typescript@5.9.3)
|
vue: 3.5.34(typescript@5.9.3)
|
||||||
|
|
||||||
vue-tsc@3.3.1(typescript@5.9.3):
|
vue-tsc@3.3.0(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/typescript': 2.4.28
|
'@volar/typescript': 2.4.28
|
||||||
'@vue/language-core': 3.3.1
|
'@vue/language-core': 3.3.0
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
|
|
||||||
vue@3.5.34(typescript@5.9.3):
|
vue@3.5.34(typescript@5.9.3):
|
||||||
@@ -2450,7 +2433,7 @@ snapshots:
|
|||||||
tr46: 6.0.0
|
tr46: 6.0.0
|
||||||
webidl-conversions: 8.0.1
|
webidl-conversions: 8.0.1
|
||||||
|
|
||||||
which@2.0.1:
|
which@2.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe: 2.0.0
|
isexe: 2.0.0
|
||||||
|
|
||||||
@@ -2462,7 +2445,7 @@ snapshots:
|
|||||||
wrap-ansi@7.0.0:
|
wrap-ansi@7.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-styles: 4.3.0
|
ansi-styles: 4.3.0
|
||||||
string-width: 4.2.0
|
string-width: 4.2.3
|
||||||
strip-ansi: 6.0.1
|
strip-ansi: 6.0.1
|
||||||
|
|
||||||
wrap-ansi@8.1.0:
|
wrap-ansi@8.1.0:
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
allowBuilds:
|
allowBuilds:
|
||||||
esbuild: true
|
esbuild: false
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 知识库页面后端接口清单
|
# 知识库页面后端接口清单
|
||||||
|
|
||||||
本文对应前端页面:[RagStoresPage.vue](/D:/Code/common_agent/frontend/src/pages/RagStoresPage.vue)
|
本文对应前端页面:[RagStoresPage.vue](frontend/src/pages/rag/RagStoresPage.vue) 和 [RagDocumentsPage.vue](frontend/src/pages/rag/RagDocumentsPage.vue)。
|
||||||
|
|
||||||
## 1. 页面目标
|
## 1. 页面目标
|
||||||
|
|
||||||
@@ -11,13 +11,13 @@
|
|||||||
- 右侧当前知识库详情
|
- 右侧当前知识库详情
|
||||||
- 当前知识库级别操作:编辑、批量导入文件、重建索引
|
- 当前知识库级别操作:编辑、批量导入文件、重建索引
|
||||||
|
|
||||||
因此接口建议拆成 `全局概览`、`知识库列表/详情`、`单库动作` 三组。
|
因此接口拆成 `全局概览`、`知识库列表/详情`、`文档管理`、`后续索引动作` 四组。
|
||||||
|
|
||||||
## 2. 本批已实现并已用于前端联调的接口
|
## 2. 本批已实现并已用于前端联调的接口
|
||||||
|
|
||||||
### 2.1 查询全部知识库
|
### 2.1 查询全部知识库
|
||||||
|
|
||||||
- `GET /api/rag/stores`
|
- `POST /api/rag/store/list`
|
||||||
|
|
||||||
当前返回类型:
|
当前返回类型:
|
||||||
|
|
||||||
@@ -34,12 +34,12 @@
|
|||||||
|
|
||||||
对应代码:
|
对应代码:
|
||||||
|
|
||||||
- [RagStoreController.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/controller/RagStoreController.java)
|
- `src/main/java/com/bruce/rag/controller/RagStoreController.java`
|
||||||
- [RagStoreResponse.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java)
|
- `src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java`
|
||||||
|
|
||||||
### 2.2 按条件查询知识库
|
### 2.2 按条件查询知识库
|
||||||
|
|
||||||
- `POST /api/rag/stores/query`
|
- `POST /api/rag/store/query`
|
||||||
|
|
||||||
请求体:
|
请求体:
|
||||||
|
|
||||||
@@ -59,11 +59,11 @@
|
|||||||
|
|
||||||
对应代码:
|
对应代码:
|
||||||
|
|
||||||
- [RagStoreQueryRequest.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java)
|
- `src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java`
|
||||||
|
|
||||||
### 2.3 查询知识库详情
|
### 2.3 查询知识库详情
|
||||||
|
|
||||||
- `GET /api/rag/stores/{id}`
|
- `GET /api/rag/store/detail?id={id}`
|
||||||
|
|
||||||
返回类型:
|
返回类型:
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
### 2.4 新增或修改知识库
|
### 2.4 新增或修改知识库
|
||||||
|
|
||||||
- `POST /api/rag/stores`
|
- `POST /api/rag/store/save`
|
||||||
|
|
||||||
请求体:
|
请求体:
|
||||||
|
|
||||||
@@ -97,17 +97,50 @@
|
|||||||
|
|
||||||
### 2.5 删除知识库
|
### 2.5 删除知识库
|
||||||
|
|
||||||
- `DELETE /api/rag/stores/{id}`
|
- `POST /api/rag/store/delete?id={id}`
|
||||||
|
|
||||||
返回类型:
|
返回类型:
|
||||||
|
|
||||||
- `RequestResult<Boolean>`
|
- `RequestResult<Boolean>`
|
||||||
|
|
||||||
## 3. 当前项目里已有但本批前端未联调的接口
|
### 2.6 知识库总览统计
|
||||||
|
|
||||||
|
- `GET /api/rag/store/overview`
|
||||||
|
|
||||||
|
返回类型:
|
||||||
|
|
||||||
|
- `RequestResult<RagStoreOverviewResponse>`
|
||||||
|
|
||||||
|
字段:
|
||||||
|
|
||||||
|
- `totalStores`
|
||||||
|
- `totalDocuments`
|
||||||
|
- `totalChunks`(当前为 `null`,待切片入库后统计)
|
||||||
|
- `retrievableStores`
|
||||||
|
|
||||||
|
### 2.7 知识库文档概览
|
||||||
|
|
||||||
|
- `GET /api/rag/store/documentOverview?storeId={storeId}`
|
||||||
|
|
||||||
|
返回类型:
|
||||||
|
|
||||||
|
- `RequestResult<RagStoreDocumentOverviewResponse>`
|
||||||
|
|
||||||
|
字段:
|
||||||
|
|
||||||
|
- `storeId`
|
||||||
|
- `storeName`
|
||||||
|
- `documentCount`
|
||||||
|
- `enabledDocumentCount`
|
||||||
|
- `parsedDocumentCount`
|
||||||
|
- `indexedDocumentCount`
|
||||||
|
- `lastUploadTime`
|
||||||
|
|
||||||
|
## 3. 当前文档管理接口
|
||||||
|
|
||||||
### 3.1 查询全部知识文档
|
### 3.1 查询全部知识文档
|
||||||
|
|
||||||
- `GET /api/rag/documents`
|
- `POST /api/rag/documents/list`
|
||||||
|
|
||||||
### 3.2 按条件查询知识文档
|
### 3.2 按条件查询知识文档
|
||||||
|
|
||||||
@@ -117,50 +150,74 @@
|
|||||||
|
|
||||||
对应代码:
|
对应代码:
|
||||||
|
|
||||||
- [RagDocumentController.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/controller/RagDocumentController.java)
|
- `src/main/java/com/bruce/rag/controller/RagDocumentController.java`
|
||||||
- [RagDocumentQueryRequest.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java)
|
- `src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java`
|
||||||
|
|
||||||
## 4. 下一批建议补充的接口
|
### 3.3 查询知识文档详情
|
||||||
|
|
||||||
当前已有接口能支撑最基础的列表查询,但还不足以支撑统计卡片、右侧详情聚合和单库动作。建议补下面几个接口。
|
- `GET /api/rag/documents/detail?id={id}`
|
||||||
|
|
||||||
### 4.1 知识库总览统计
|
### 3.4 新增或修改知识文档
|
||||||
|
|
||||||
- `GET /api/rag/stores/overview`
|
- `POST /api/rag/documents/save`
|
||||||
|
|
||||||
用途:
|
### 3.5 删除知识文档
|
||||||
|
|
||||||
- 顶部 4 张卡片数据
|
- `POST /api/rag/documents/delete?id={id}`
|
||||||
|
|
||||||
返回建议:
|
### 3.6 批量上传文档到知识库
|
||||||
|
|
||||||
|
- `POST /api/rag/documents/batchUpload`
|
||||||
|
|
||||||
|
请求类型:
|
||||||
|
|
||||||
|
- `multipart/form-data`
|
||||||
|
|
||||||
|
表单字段:
|
||||||
|
|
||||||
|
- `storeId`:知识库 ID
|
||||||
|
- `sourceType`:默认为 `RAG`
|
||||||
|
- `files`:文件数组
|
||||||
|
- `documentSummary`:可选,批量设置文档摘要
|
||||||
|
- `remark`:可选
|
||||||
|
|
||||||
|
当前行为:
|
||||||
|
|
||||||
|
- 逐个调用附件上传服务,写入 `sys_attachment`
|
||||||
|
- 自动创建 `rag_document`
|
||||||
|
- 新文档默认 `parseStatus=UPLOADED`、`indexStatus=PENDING`、`enabled=true`
|
||||||
|
|
||||||
|
### 3.7 批量解析知识文档
|
||||||
|
|
||||||
|
- `POST /api/rag/documents/parse`
|
||||||
|
|
||||||
|
请求体:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"resultcode": "0",
|
"documentIds": [1, 2],
|
||||||
"message": null,
|
"chunkStrategy": "FIXED_LENGTH",
|
||||||
"data": {
|
"chunkSize": 800,
|
||||||
"storeCount": 12,
|
"chunkOverlap": 120,
|
||||||
"documentCount": 1286,
|
"delimiter": "。"
|
||||||
"chunkCount": 24390,
|
|
||||||
"retrievableStoreCount": 9
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
建议响应 DTO:
|
当前行为:
|
||||||
|
|
||||||
- `RagStoreOverviewResponse`
|
- 校验 `chunkStrategy` 是否属于 `RagChunkStrategyEnum`
|
||||||
|
- 根据附件后缀或 content type 选择 Tika 解析器
|
||||||
|
- 解析成功后更新 `parseStatus=PARSED`
|
||||||
|
- 解析失败后更新 `parseStatus=FAILED` 和 `errorMessage`
|
||||||
|
- 当前暂不写入 `rag_chunk`
|
||||||
|
|
||||||
字段建议:
|
## 4. 下一批建议补充的接口
|
||||||
|
|
||||||
- `storeCount`
|
当前已有接口能支撑知识库、文档、上传和解析入口。下一批建议聚焦切片、索引和任务化。
|
||||||
- `documentCount`
|
|
||||||
- `chunkCount`
|
|
||||||
- `retrievableStoreCount`
|
|
||||||
|
|
||||||
### 4.2 知识库列表查询增强版
|
### 4.1 知识库列表查询增强版
|
||||||
|
|
||||||
- `POST /api/rag/stores/manage/query`
|
- `POST /api/rag/store/manage/query`
|
||||||
|
|
||||||
用途:
|
用途:
|
||||||
|
|
||||||
@@ -216,9 +273,9 @@
|
|||||||
- `retrievable`
|
- `retrievable`
|
||||||
- `updateTime`
|
- `updateTime`
|
||||||
|
|
||||||
### 4.3 查询单个知识库详情增强版
|
### 4.2 查询单个知识库详情增强版
|
||||||
|
|
||||||
- `GET /api/rag/stores/{id}/detail`
|
- `GET /api/rag/store/detailPlus?id={id}`
|
||||||
|
|
||||||
用途:
|
用途:
|
||||||
|
|
||||||
@@ -258,86 +315,9 @@
|
|||||||
|
|
||||||
- `RagStoreDetailResponse`
|
- `RagStoreDetailResponse`
|
||||||
|
|
||||||
### 4.4 新建知识库独立接口
|
### 4.3 发起当前知识库重建索引
|
||||||
|
|
||||||
- `POST /api/rag/stores`
|
- `POST /api/rag/store/reindex?storeId={id}`
|
||||||
|
|
||||||
请求体建议:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"storeCode": "PROD_DOC",
|
|
||||||
"storeName": "产品制度库",
|
|
||||||
"description": "产品制度、业务规范、流程材料"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
返回建议:
|
|
||||||
|
|
||||||
- 返回新建后的 `id` 或完整 `RagStoreDetailResponse`
|
|
||||||
|
|
||||||
建议请求 DTO:
|
|
||||||
|
|
||||||
- `RagStoreSaveRequest`
|
|
||||||
|
|
||||||
### 4.5 编辑知识库独立接口
|
|
||||||
|
|
||||||
- `PUT /api/rag/stores/{id}`
|
|
||||||
|
|
||||||
请求体建议:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"storeCode": "PROD_DOC",
|
|
||||||
"storeName": "产品制度库",
|
|
||||||
"description": "产品制度、业务规范、流程材料",
|
|
||||||
"status": "ENABLED"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
用途:
|
|
||||||
|
|
||||||
- 右侧“编辑”按钮
|
|
||||||
|
|
||||||
### 4.6 当前知识库批量导入文件
|
|
||||||
|
|
||||||
- `POST /api/rag/stores/{id}/documents/import`
|
|
||||||
|
|
||||||
用途:
|
|
||||||
|
|
||||||
- 右侧“批量导入文件”按钮
|
|
||||||
|
|
||||||
建议请求类型:
|
|
||||||
|
|
||||||
- `multipart/form-data`
|
|
||||||
|
|
||||||
表单字段建议:
|
|
||||||
|
|
||||||
- `files`: 文件数组
|
|
||||||
- `remark`: 批次备注,可选
|
|
||||||
|
|
||||||
返回建议:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"resultcode": "0",
|
|
||||||
"message": null,
|
|
||||||
"data": {
|
|
||||||
"taskId": 1001,
|
|
||||||
"storeId": 1,
|
|
||||||
"fileCount": 12,
|
|
||||||
"status": "PROCESSING"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
建议响应 DTO:
|
|
||||||
|
|
||||||
- `RagImportTaskResponse`
|
|
||||||
|
|
||||||
### 4.7 发起当前知识库重建索引
|
|
||||||
|
|
||||||
- `POST /api/rag/stores/{id}/reindex`
|
|
||||||
|
|
||||||
用途:
|
用途:
|
||||||
|
|
||||||
@@ -365,9 +345,9 @@
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4.8 查询当前知识库最近任务
|
### 4.4 查询当前知识库最近任务
|
||||||
|
|
||||||
- `GET /api/rag/stores/{id}/tasks?limit=10`
|
- `GET /api/rag/store/tasks?storeId={id}&limit=10`
|
||||||
|
|
||||||
用途:
|
用途:
|
||||||
|
|
||||||
@@ -404,31 +384,34 @@
|
|||||||
|
|
||||||
## 5. 这页前后端最小联调顺序
|
## 5. 这页前后端最小联调顺序
|
||||||
|
|
||||||
如果想尽快把这页从演示版切到真实联调版,建议按下面顺序接:
|
当前知识库页和知识文档页已经接入基础接口。下一步联调顺序建议:
|
||||||
|
|
||||||
1. 先复用已有:
|
1. 完成切片入库:
|
||||||
- `POST /api/rag/stores/query`
|
- `POST /api/rag/documents/parse` 解析后写入 `rag_chunk`
|
||||||
|
|
||||||
2. 然后新增:
|
2. 完成索引入口:
|
||||||
- `GET /api/rag/stores/overview`
|
- `POST /api/rag/documents/index`
|
||||||
- `GET /api/rag/stores/{id}/detail`
|
- `POST /api/rag/store/reindex`
|
||||||
|
|
||||||
3. 再补动作接口:
|
3. 再补任务查询:
|
||||||
- `POST /api/rag/stores`
|
- `GET /api/rag/store/tasks`
|
||||||
- `PUT /api/rag/stores/{id}`
|
- `GET /api/rag/documents/tasks`
|
||||||
- `POST /api/rag/stores/{id}/documents/import`
|
|
||||||
- `POST /api/rag/stores/{id}/reindex`
|
|
||||||
- `GET /api/rag/stores/{id}/tasks`
|
|
||||||
|
|
||||||
## 6. 当前前端实现说明
|
## 6. 当前前端实现说明
|
||||||
|
|
||||||
当前前端页已经按上述页面结构实现,但由于后端尚未提供完整聚合接口,页面中的统计、详情和任务区先以演示数据承载。
|
当前前端已经接入:
|
||||||
|
|
||||||
后端接口齐备后,前端建议按下面方式替换:
|
- 统计卡片:`/api/rag/store/overview`
|
||||||
|
- 左侧列表:`/api/rag/store/query`
|
||||||
|
- 右侧详情:`/api/rag/store/detail`
|
||||||
|
- 文档概览:`/api/rag/store/documentOverview`
|
||||||
|
- 批量上传:`/api/rag/documents/batchUpload`
|
||||||
|
- 知识文档列表:`/api/rag/documents/query`
|
||||||
|
- 批量解析:`/api/rag/documents/parse`
|
||||||
|
|
||||||
- 统计卡片:改调 `/api/rag/stores/overview`
|
仍待后端补齐后再联调:
|
||||||
- 左侧列表:改调 `/api/rag/stores/manage/query`
|
|
||||||
- 右侧详情:改调 `/api/rag/stores/{id}/detail`
|
- 重建索引
|
||||||
- 批量导入:改调 `/api/rag/stores/{id}/documents/import`
|
- 最近任务
|
||||||
- 重建索引:改调 `/api/rag/stores/{id}/reindex`
|
- 检索配置
|
||||||
- 最近任务:改调 `/api/rag/stores/{id}/tasks`
|
- 检索测试/召回预览
|
||||||
|
|||||||
@@ -14,15 +14,28 @@ public class EntityAuditMetaObjectHandler implements MetaObjectHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void insertFill(MetaObject metaObject) {
|
public void insertFill(MetaObject metaObject) {
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
strictInsertFill(metaObject, "createTime", Date.class, now);
|
fillIfNull(metaObject, "createTime", now);
|
||||||
strictInsertFill(metaObject, "updateTime", Date.class, now);
|
fillIfNull(metaObject, "updateTime", now);
|
||||||
strictInsertFill(metaObject, "createBy", String.class, SYSTEM_USER);
|
fillIfNull(metaObject, "createBy", SYSTEM_USER);
|
||||||
strictInsertFill(metaObject, "updateBy", String.class, SYSTEM_USER);
|
fillIfNull(metaObject, "updateBy", SYSTEM_USER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateFill(MetaObject metaObject) {
|
public void updateFill(MetaObject metaObject) {
|
||||||
strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
|
setIfWritable(metaObject, "updateTime", new Date());
|
||||||
strictUpdateFill(metaObject, "updateBy", String.class, SYSTEM_USER);
|
setIfWritable(metaObject, "updateBy", SYSTEM_USER);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillIfNull(MetaObject metaObject, String fieldName, Object fieldVal) {
|
||||||
|
if (!metaObject.hasSetter(fieldName) || metaObject.getValue(fieldName) != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
metaObject.setValue(fieldName, fieldVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setIfWritable(MetaObject metaObject, String fieldName, Object fieldVal) {
|
||||||
|
if (metaObject.hasSetter(fieldName)) {
|
||||||
|
metaObject.setValue(fieldName, fieldVal);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user