chore: initialize wygj monorepo
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# ruoyi-ai 能力分片迁移计划
|
||||
|
||||
目标:逐步吸收 `ageerle/ruoyi-ai` 的知识库、模型配置、文档解析、RAG 和 chat 能力,但保留本项目 `ruoyi-aihr` 的业务边界,不整包搬入 `ruoyi-chat`。
|
||||
|
||||
## 迁移原则
|
||||
|
||||
- 业务落点仍是 `backend/ruoyi-modules/ruoyi-aihr`,包名使用 `org.dromara.aihr`。
|
||||
- 数据表使用 `aihr_knowledge_*`、`aihr_model_*` 前缀,避免和未来上游模块或系统表撞名。
|
||||
- `/api/knowledge/search` 保持当前契约:真实 RAG 优先,失败回退 seed。
|
||||
- 先只接一条 SOP 知识库链路;模型能力先走 OpenAI-compatible 边界,再扩展到案例、陪练和 chat。
|
||||
|
||||
## 分片顺序
|
||||
|
||||
| 阶段 | 搬什么 | 不搬什么 | 验收 |
|
||||
|---|---|---|---|
|
||||
| 1. 知识库 schema | `knowledge_info / attach / fragment` 改造为 `aihr_knowledge_*` | 向量库、LLM、上传 UI | SQL 可导入,seed API 不受影响 |
|
||||
| 2. 模型能力 | `chat_provider / chat_model` 改造为 `aihr_model_*`,最小 OpenAI-compatible 调用边界 | 多模型市场、图像、SSE、成本看板 | 模型列表可查;数据库配置后可调用 `/chat/completions` |
|
||||
| 3. 文档解析 | 文本/Markdown/PDF/Word/Excel/PPT loader、OSS-first 上传与分片 | 异步重试队列、图片智能分析 | txt/md/PDF/Word/Excel/PPT 文件可落 OSS 并解析为 fragment |
|
||||
| 4. 检索与 embedding | MySQL Fulltext + OpenAI-compatible embedding + Qdrant 最小向量召回 | Milvus/Weaviate 全量适配、独立向量库后台 | 同一问题返回带分数片段,配置 vector 模型后片段有 embedding,Qdrant 可用时参与 RRF 融合 |
|
||||
| 5. 资料处理状态 | 解析任务状态页、资料分类、处理链路、多文件/目录选择上传、服务端后台目录导入任务 | 单失败文件重试、分布式队列 | 能查看等待解析/解析中/已完成/失败、片段数、向量化状态并导入 Demo 文件 |
|
||||
| 6. RAG 回答 | 带引用回答、训练题生成 | 多模型市场、成本看板 | SOP 页面展示真实引用 |
|
||||
| 7. Chat | 最小会话、消息、引用来源 | 多智能体、工作流、MCP、Skills | 可围绕 SOP 连续追问 |
|
||||
|
||||
## 来源映射
|
||||
|
||||
| ruoyi-ai 来源 | 本项目落点 |
|
||||
|---|---|
|
||||
| `ruoyi-modules/ruoyi-chat/controller/knowledge` | `ruoyi-aihr/controller` 下只保留业务 API |
|
||||
| `KnowledgeAttachServiceImpl` | 文档上传、解析、分片、入库服务 |
|
||||
| `KnowledgeRetrievalServiceImpl` | 检索服务,先保留 fulltext,再接向量 |
|
||||
| `VectorStoreService` | 暂不抽独立 service,先在 `AihrSopSeedService` 用 Qdrant REST 做最小闭环 |
|
||||
| `chat_model / chat_provider` | `aihr_model_config / aihr_model_provider` |
|
||||
| `CustomApiServiceImpl / OpenAIServiceImpl` | 先落 `AihrModelSeedService` 的 OpenAI-compatible HTTP 边界 |
|
||||
| `EmbeddingModelFactory / RerankModelFactory` | 后续接向量化与重排序时再搬 provider adapter |
|
||||
|
||||
## 当前第一片
|
||||
|
||||
- 新增 MySQL 8 DDL:`backend/script/sql/aihr_knowledge_mysql8.sql`
|
||||
- 先定义 `aihr_knowledge_info`、`aihr_knowledge_attach`、`aihr_knowledge_fragment`
|
||||
- DDL 已包含住宅类 SOP seed 数据;`scripts/reset-dev-db.sh` 会导入。
|
||||
|
||||
## 当前第二片
|
||||
|
||||
- 新增 MySQL 8 DDL:`backend/script/sql/aihr_model_mysql8.sql`
|
||||
- 先定义 `aihr_model_provider`、`aihr_model_config`
|
||||
- 新增后端 API:`GET /api/aihr/model/providers`、`GET /api/aihr/model/configs`、`POST /api/aihr/model/chat`
|
||||
- `POST /api/aihr/model/chat` 优先读取 `aihr_model_config`,并从 `aihr_model_provider` 继承 `api_host/api_key`;未配置时返回 seed fallback,不向接口响应暴露密钥。
|
||||
|
||||
## 当前第三片
|
||||
|
||||
- 新增后端 API:`POST /api/knowledge/doc/upload`
|
||||
- SOP 页面已提供“上传文档”入口,支持 `.txt/.md/.markdown/.pdf/.doc/.docx/.xls/.xlsx/.ppt/.pptx`。
|
||||
- 上传时先复用若依 `sys_oss` 写入 MinIO,再按 `category` 找到或创建 `aihr_knowledge_info`,在 `aihr_knowledge_attach` 绑定 `oss_id/doc_id`,最后写入 `aihr_knowledge_fragment`。
|
||||
- 当前限制 100MB 内;同一知识库同名文件会复用 `doc_id` 并替换旧片段。
|
||||
- PDF/Word 解析走 Tika core + PDF/Microsoft 模块,不整包引入标准解析器集合。
|
||||
- 暂不引入图片智能分析和异步解析任务;这些进入后续片。
|
||||
|
||||
## 当前第四片
|
||||
|
||||
- `/api/knowledge/search` 已优先查询 `aihr_knowledge_fragment`。
|
||||
- 检索方式先迁移 `ruoyi-ai` 的 MySQL Fulltext 关键词召回:`MATCH(content) AGAINST(...)`。
|
||||
- MySQL 未命中或表未导入时仍回退当前 seed,保证 Demo 页面不断。
|
||||
- `aihr_knowledge_fragment` 已增加 `embedding_json/embedding_model/embedding_time`。
|
||||
- 若数据库启用 `category=vector` 的模型配置,上传后会同步调用 OpenAI-compatible `/embeddings` 并写入片段向量。
|
||||
- Qdrant 已接入本地开发编排;embedding 写入 MySQL 后尽力 upsert 到默认 collection `aihr_knowledge`。
|
||||
- `/api/knowledge/search` 在 vector 模型和 Qdrant 可用时会生成 query embedding,走 Qdrant 召回后回 MySQL hydrate 片段,并与 MySQL Fulltext 用 RRF 融合。
|
||||
- Qdrant 不可用或 vector 模型未配置时,仍走 MySQL Fulltext / LIKE / seed fallback。
|
||||
|
||||
## 当前第五片
|
||||
|
||||
- 新增后端 API:`GET /api/knowledge/processing/overview`。
|
||||
- 新增前端页面:`/knowledge/processing`,菜单名“资料处理”;`SOP知识库` 菜单保持独立不改名。
|
||||
- 页面聚合展示资料总量、已完成、处理中、失败、资料分类、解析任务表、处理链路、规则风险和最近事件。
|
||||
- 批量导入先复用 `POST /api/knowledge/doc/upload`,支持多文件和浏览器目录选择。
|
||||
- 新增 `POST /api/knowledge/doc/import-local-task` 和 `GET /api/knowledge/doc/import-tasks`,只读取 `AIHR_IMPORT_ROOT` / `aihr.import.root` 下的相对目录,写入 `aihr_knowledge_import_task` 后后台逐文件复用上传解析链路,页面轮询进度;`POST /api/knowledge/doc/import-local` 保留同步调试。
|
||||
|
||||
## 暂缓项
|
||||
|
||||
- 完整 `ruoyi-chat` 模块
|
||||
- Vben Admin 前端
|
||||
- Milvus/Weaviate/pgvector 等多向量库同时支持
|
||||
- 工作流、多智能体、MCP、Skills
|
||||
- 全量模型管理后台
|
||||
- 完整流式 chat 与消息持久化
|
||||
- 图片 OCR/视觉模型解析
|
||||
- 单失败文件重试、导入任务取消/暂停、分布式队列
|
||||
Reference in New Issue
Block a user