mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-16 13:23:42 +00:00
Merge pull request #177 from MuSan-Li/feature_20250820_fix_prompt_temp
feat: 调整知识库问答接入提示词模板
This commit is contained in:
@@ -46,4 +46,11 @@ public interface IPromptTemplateService {
|
|||||||
* 校验并批量删除提示词模板信息
|
* 校验并批量删除提示词模板信息
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据分类查询提示词模板
|
||||||
|
*
|
||||||
|
* @param category 分类
|
||||||
|
*/
|
||||||
|
PromptTemplateVo queryByCategory(String category);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,4 +109,13 @@ public class PromptTemplateServiceImpl implements IPromptTemplateService {
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
return baseMapper.deleteBatchIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PromptTemplateVo queryByCategory(String category) {
|
||||||
|
LambdaQueryWrapper<PromptTemplate> queryWrapper = Wrappers.lambdaQuery(PromptTemplate.class);
|
||||||
|
queryWrapper.eq(PromptTemplate::getCategory, category);
|
||||||
|
queryWrapper.orderByDesc(PromptTemplate::getUpdateTime);
|
||||||
|
queryWrapper.last("limit 1");
|
||||||
|
return baseMapper.selectVoOne(queryWrapper);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package org.ruoyi.chat.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提示词模板分类
|
||||||
|
*
|
||||||
|
* @author evo
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum promptTemplateEnum {
|
||||||
|
CHAT(1, "chat"),
|
||||||
|
VECTOR(2, "vector"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private final Integer code;
|
||||||
|
private final String desc;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
package org.ruoyi.chat.service.chat.impl;
|
package org.ruoyi.chat.service.chat.impl;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
|
import org.ruoyi.chat.enums.promptTemplateEnum;
|
||||||
import org.ruoyi.chat.factory.ChatServiceFactory;
|
import org.ruoyi.chat.factory.ChatServiceFactory;
|
||||||
import org.ruoyi.chat.service.chat.IChatCostService;
|
import org.ruoyi.chat.service.chat.IChatCostService;
|
||||||
import org.ruoyi.chat.service.chat.IChatService;
|
import org.ruoyi.chat.service.chat.IChatService;
|
||||||
@@ -27,9 +29,11 @@ import org.ruoyi.domain.bo.ChatSessionBo;
|
|||||||
import org.ruoyi.domain.bo.QueryVectorBo;
|
import org.ruoyi.domain.bo.QueryVectorBo;
|
||||||
import org.ruoyi.domain.vo.ChatModelVo;
|
import org.ruoyi.domain.vo.ChatModelVo;
|
||||||
import org.ruoyi.domain.vo.KnowledgeInfoVo;
|
import org.ruoyi.domain.vo.KnowledgeInfoVo;
|
||||||
|
import org.ruoyi.domain.vo.PromptTemplateVo;
|
||||||
import org.ruoyi.service.IChatModelService;
|
import org.ruoyi.service.IChatModelService;
|
||||||
import org.ruoyi.service.IChatSessionService;
|
import org.ruoyi.service.IChatSessionService;
|
||||||
import org.ruoyi.service.IKnowledgeInfoService;
|
import org.ruoyi.service.IKnowledgeInfoService;
|
||||||
|
import org.ruoyi.service.IPromptTemplateService;
|
||||||
import org.ruoyi.service.VectorStoreService;
|
import org.ruoyi.service.VectorStoreService;
|
||||||
import org.springframework.core.io.InputStreamResource;
|
import org.springframework.core.io.InputStreamResource;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
@@ -45,9 +49,8 @@ import java.io.IOException;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ageer
|
* @author ageer
|
||||||
@@ -73,6 +76,9 @@ public class SseServiceImpl implements ISseService {
|
|||||||
|
|
||||||
private ChatModelVo chatModelVo;
|
private ChatModelVo chatModelVo;
|
||||||
|
|
||||||
|
// 提示词模板服务
|
||||||
|
private final IPromptTemplateService promptTemplateService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SseEmitter sseChat(ChatRequest chatRequest, HttpServletRequest request) {
|
public SseEmitter sseChat(ChatRequest chatRequest, HttpServletRequest request) {
|
||||||
@@ -89,9 +95,9 @@ public class SseServiceImpl implements ISseService {
|
|||||||
// 设置对话角色
|
// 设置对话角色
|
||||||
chatRequest.setRole(Message.Role.USER.getName());
|
chatRequest.setRole(Message.Role.USER.getName());
|
||||||
|
|
||||||
if(LoginHelper.isLogin()){
|
if (LoginHelper.isLogin()) {
|
||||||
|
|
||||||
// 设置用户id
|
// 设置用户id
|
||||||
chatRequest.setUserId(LoginHelper.getUserId());
|
chatRequest.setUserId(LoginHelper.getUserId());
|
||||||
|
|
||||||
|
|
||||||
@@ -100,10 +106,10 @@ public class SseServiceImpl implements ISseService {
|
|||||||
//待优化的地方 (这里请前端提交send的时候传递uuid进来或者sessionId)
|
//待优化的地方 (这里请前端提交send的时候传递uuid进来或者sessionId)
|
||||||
{
|
{
|
||||||
// 设置会话id
|
// 设置会话id
|
||||||
if (chatRequest.getUuid() == null){
|
if (chatRequest.getUuid() == null) {
|
||||||
//暂时随机生成会话id
|
//暂时随机生成会话id
|
||||||
chatRequest.setSessionId(System.currentTimeMillis());
|
chatRequest.setSessionId(System.currentTimeMillis());
|
||||||
}else{
|
} else {
|
||||||
//这里或许需要修改一下,这里应该用uuid 或者 前端传递 sessionId
|
//这里或许需要修改一下,这里应该用uuid 或者 前端传递 sessionId
|
||||||
chatRequest.setSessionId(chatRequest.getUuid());
|
chatRequest.setSessionId(chatRequest.getUuid());
|
||||||
}
|
}
|
||||||
@@ -113,7 +119,7 @@ public class SseServiceImpl implements ISseService {
|
|||||||
// 保存消息记录 并扣除费用
|
// 保存消息记录 并扣除费用
|
||||||
chatCostService.deductToken(chatRequest);
|
chatCostService.deductToken(chatRequest);
|
||||||
chatRequest.setUserId(chatCostService.getUserId());
|
chatRequest.setUserId(chatCostService.getUserId());
|
||||||
if(chatRequest.getSessionId()==null){
|
if (chatRequest.getSessionId() == null) {
|
||||||
ChatSessionBo chatSessionBo = new ChatSessionBo();
|
ChatSessionBo chatSessionBo = new ChatSessionBo();
|
||||||
chatSessionBo.setUserId(chatCostService.getUserId());
|
chatSessionBo.setUserId(chatCostService.getUserId());
|
||||||
chatSessionBo.setSessionTitle(getFirst10Characters(chatRequest.getPrompt()));
|
chatSessionBo.setSessionTitle(getFirst10Characters(chatRequest.getPrompt()));
|
||||||
@@ -130,29 +136,30 @@ public class SseServiceImpl implements ISseService {
|
|||||||
ChatModelVo currentModel = this.chatModelVo;
|
ChatModelVo currentModel = this.chatModelVo;
|
||||||
String currentCategory = currentModel.getCategory();
|
String currentCategory = currentModel.getCategory();
|
||||||
ChatRetryHelper.executeWithRetry(
|
ChatRetryHelper.executeWithRetry(
|
||||||
currentModel,
|
currentModel,
|
||||||
currentCategory,
|
currentCategory,
|
||||||
chatModelService,
|
chatModelService,
|
||||||
sseEmitter,
|
sseEmitter,
|
||||||
(modelForTry, onFailure) -> {
|
(modelForTry, onFailure) -> {
|
||||||
// 替换请求中的模型名称
|
// 替换请求中的模型名称
|
||||||
chatRequest.setModel(modelForTry.getModelName());
|
chatRequest.setModel(modelForTry.getModelName());
|
||||||
// 以 emitter 实例为唯一键注册失败回调
|
// 以 emitter 实例为唯一键注册失败回调
|
||||||
RetryNotifier.setFailureCallback(sseEmitter, onFailure);
|
RetryNotifier.setFailureCallback(sseEmitter, onFailure);
|
||||||
try {
|
try {
|
||||||
autoSelectServiceByCategoryAndInvoke(chatRequest, sseEmitter, modelForTry.getCategory());
|
autoSelectServiceByCategoryAndInvoke(chatRequest, sseEmitter,
|
||||||
} finally {
|
modelForTry.getCategory());
|
||||||
// 不在此处清理,待下游结束/失败时清理
|
} finally {
|
||||||
|
// 不在此处清理,待下游结束/失败时清理
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// 不重试不降级,直接调用
|
// 不重试不降级,直接调用
|
||||||
chatService.chat(chatRequest, sseEmitter);
|
chatService.chat(chatRequest, sseEmitter);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(),e);
|
log.error(e.getMessage(), e);
|
||||||
SSEUtil.sendErrorEvent(sseEmitter,e.getMessage());
|
SSEUtil.sendErrorEvent(sseEmitter, e.getMessage());
|
||||||
}
|
}
|
||||||
return sseEmitter;
|
return sseEmitter;
|
||||||
}
|
}
|
||||||
@@ -220,9 +227,9 @@ public class SseServiceImpl implements ISseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建消息列表
|
* 构建消息列表
|
||||||
*/
|
*/
|
||||||
private void buildChatMessageList(ChatRequest chatRequest){
|
private void buildChatMessageList(ChatRequest chatRequest) {
|
||||||
List<Message> messages = chatRequest.getMessages();
|
List<Message> messages = chatRequest.getMessages();
|
||||||
|
|
||||||
// 处理知识库相关逻辑
|
// 处理知识库相关逻辑
|
||||||
@@ -256,7 +263,7 @@ public class SseServiceImpl implements ISseService {
|
|||||||
*/
|
*/
|
||||||
private String processKnowledgeBase(ChatRequest chatRequest, List<Message> messages) {
|
private String processKnowledgeBase(ChatRequest chatRequest, List<Message> messages) {
|
||||||
if (StringUtils.isEmpty(chatRequest.getKid())) {
|
if (StringUtils.isEmpty(chatRequest.getKid())) {
|
||||||
return getDefaultSystemPrompt();
|
return getPromptTemplatePrompt(promptTemplateEnum.VECTOR.getDesc());
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -264,14 +271,14 @@ public class SseServiceImpl implements ISseService {
|
|||||||
KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(chatRequest.getKid()));
|
KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(chatRequest.getKid()));
|
||||||
if (knowledgeInfoVo == null) {
|
if (knowledgeInfoVo == null) {
|
||||||
log.warn("知识库信息不存在,kid: {}", chatRequest.getKid());
|
log.warn("知识库信息不存在,kid: {}", chatRequest.getKid());
|
||||||
return getDefaultSystemPrompt();
|
return getPromptTemplatePrompt(promptTemplateEnum.VECTOR.getDesc());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询向量模型配置信息
|
// 查询向量模型配置信息
|
||||||
ChatModelVo chatModel = chatModelService.selectModelByName(knowledgeInfoVo.getEmbeddingModelName());
|
ChatModelVo chatModel = chatModelService.selectModelByName(knowledgeInfoVo.getEmbeddingModelName());
|
||||||
if (chatModel == null) {
|
if (chatModel == null) {
|
||||||
log.warn("向量模型配置不存在,模型名称: {}", knowledgeInfoVo.getEmbeddingModelName());
|
log.warn("向量模型配置不存在,模型名称: {}", knowledgeInfoVo.getEmbeddingModelName());
|
||||||
return getDefaultSystemPrompt();
|
return getPromptTemplatePrompt(promptTemplateEnum.VECTOR.getDesc());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建向量查询参数
|
// 构建向量查询参数
|
||||||
@@ -288,14 +295,15 @@ public class SseServiceImpl implements ISseService {
|
|||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("处理知识库信息失败: {}", e.getMessage(), e);
|
log.error("处理知识库信息失败: {}", e.getMessage(), e);
|
||||||
return getDefaultSystemPrompt();
|
return getPromptTemplatePrompt(promptTemplateEnum.VECTOR.getDesc());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建向量查询参数
|
* 构建向量查询参数
|
||||||
*/
|
*/
|
||||||
private QueryVectorBo buildQueryVectorBo(ChatRequest chatRequest, KnowledgeInfoVo knowledgeInfoVo, ChatModelVo chatModel) {
|
private QueryVectorBo buildQueryVectorBo(ChatRequest chatRequest, KnowledgeInfoVo knowledgeInfoVo,
|
||||||
|
ChatModelVo chatModel) {
|
||||||
String content = chatRequest.getMessages().get(chatRequest.getMessages().size() - 1).getContent().toString();
|
String content = chatRequest.getMessages().get(chatRequest.getMessages().size() - 1).getContent().toString();
|
||||||
|
|
||||||
QueryVectorBo queryVectorBo = new QueryVectorBo();
|
QueryVectorBo queryVectorBo = new QueryVectorBo();
|
||||||
@@ -340,15 +348,28 @@ public class SseServiceImpl implements ISseService {
|
|||||||
return sysPrompt;
|
return sysPrompt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取提示词模板提示词
|
||||||
|
*/
|
||||||
|
private String getPromptTemplatePrompt(String category) {
|
||||||
|
PromptTemplateVo promptTemplateVo = promptTemplateService.queryByCategory(category);
|
||||||
|
if (Objects.isNull(promptTemplateVo) || StringUtils.isEmpty(promptTemplateVo.getTemplateContent())) {
|
||||||
|
return getDefaultSystemPrompt();
|
||||||
|
}
|
||||||
|
return promptTemplateVo.getTemplateContent();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取默认系统提示词
|
* 获取默认系统提示词
|
||||||
*/
|
*/
|
||||||
private String getDefaultSystemPrompt() {
|
private String getDefaultSystemPrompt() {
|
||||||
String sysPrompt = chatModelVo != null ? chatModelVo.getSystemPrompt() : null;
|
String sysPrompt = chatModelVo != null ? chatModelVo.getSystemPrompt() : null;
|
||||||
if (StringUtils.isEmpty(sysPrompt)) {
|
if (StringUtils.isEmpty(sysPrompt)) {
|
||||||
sysPrompt = "你是一个由RuoYI-AI开发的人工智能助手,名字叫熊猫助手。你擅长中英文对话,能够理解并处理各种问题,提供安全、有帮助、准确的回答。" +
|
sysPrompt = "你是一个由RuoYI-AI开发的人工智能助手,名字叫RuoYI人工智能助手。"
|
||||||
"当前时间:" + DateUtils.getDate() +
|
+ "你擅长中英文对话,能够理解并处理各种问题,提供安全、有帮助、准确的回答。"
|
||||||
"#注意:回复之前注意结合上下文和工具返回内容进行回复。";
|
+ "当前时间:" + DateUtils.getDate()
|
||||||
|
+ "#注意:回复之前注意结合上下文和工具返回内容进行回复。";
|
||||||
}
|
}
|
||||||
return sysPrompt;
|
return sysPrompt;
|
||||||
}
|
}
|
||||||
@@ -365,8 +386,8 @@ public class SseServiceImpl implements ISseService {
|
|||||||
InputStreamResource resource = new InputStreamResource(body.byteStream());
|
InputStreamResource resource = new InputStreamResource(body.byteStream());
|
||||||
// 创建并返回ResponseEntity
|
// 创建并返回ResponseEntity
|
||||||
return ResponseEntity.ok()
|
return ResponseEntity.ok()
|
||||||
.contentType(MediaType.parseMediaType("audio/mpeg"))
|
.contentType(MediaType.parseMediaType("audio/mpeg"))
|
||||||
.body(resource);
|
.body(resource);
|
||||||
} else {
|
} else {
|
||||||
// 如果ResponseBody为空,返回404状态码
|
// 如果ResponseBody为空,返回404状态码
|
||||||
return ResponseEntity.notFound().build();
|
return ResponseEntity.notFound().build();
|
||||||
|
|||||||
@@ -647,28 +647,25 @@ INSERT INTO `sys_menu` VALUES (1929170702299045893, '提示词模板修改', 192
|
|||||||
INSERT INTO `sys_menu` VALUES (1929170702299045894, '提示词模板删除', 1929170702299045890, '4', '#', '', NULL, 1, 0, 'F', '0', '0', 'system:promptTemplate:remove', '#', 103, 1, sysdate(), null, null, '');
|
INSERT INTO `sys_menu` VALUES (1929170702299045894, '提示词模板删除', 1929170702299045890, '4', '#', '', NULL, 1, 0, 'F', '0', '0', 'system:promptTemplate:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||||
INSERT INTO `sys_menu` VALUES (1929170702299045895, '提示词模板导出', 1929170702299045890, '5', '#', '', NULL, 1, 0, 'F', '0', '0', 'system:promptTemplate:export', '#', 103, 1, sysdate(), null, null, '');
|
INSERT INTO `sys_menu` VALUES (1929170702299045895, '提示词模板导出', 1929170702299045890, '5', '#', '', NULL, 1, 0, 'F', '0', '0', 'system:promptTemplate:export', '#', 103, 1, sysdate(), null, null, '');
|
||||||
|
|
||||||
|
INSERT INTO sys_menu VALUES (2000, '在线开发', 0, 20, 'dev', '', '', 1, 0, 'M', '0', '0', '', 'carbon:development', 103, 1, '2025-07-11 19:38:05', 1, '2025-07-11 19:43:03', '在线开发目录');
|
||||||
|
INSERT INTO sys_menu VALUES (1944213468857495553, '模型分组', 2000, 1, 'schemaGroup', 'dev/schemaGroup/index', null, 1, 0, 'C', '0', '0', null, '#', 103, 1, '2025-07-13 09:53:07', 1, '2025-07-13 09:54:45', '模型分组菜单');
|
||||||
|
INSERT INTO sys_menu VALUES (1944229086906281985, '数据模型', 2000, 2, 'schema', 'dev/schema/index', null, 1, 0, 'C', '0', '0', null, '#', 103, 1, '2025-07-13 10:55:11', null, '2025-07-13 10:55:11', '数据模型菜单');
|
||||||
|
INSERT INTO sys_menu VALUES (1946466176918249473, '模型字段管理', 2000, 3, 'schemaField', 'dev/schemaField/index', null, 1, 0, 'C', '0', '0', null, '#', 103, 1, '2025-07-19 15:04:35', null, '2025-07-19 15:04:35', '模型字段管理菜单');
|
||||||
|
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (2000, '在线开发', 0, 20, 'dev', '', '', 1, 0, 'M', '0', '0', '', 'carbon:development', 103, 1, '2025-07-11 19:38:05', 1, '2025-07-11 19:43:03', '在线开发目录');
|
INSERT INTO sys_menu VALUES (1944213468857495554, '模型分组查询', 1944213468857495553, 1, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:list', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944213468857495553, '模型分组', 2000, 1, 'schemaGroup', 'dev/schemaGroup/index', null, 1, 0, 'C', '0', '0', null, '#', 103, 1, '2025-07-13 09:53:07', 1, '2025-07-13 09:54:45', '模型分组菜单');
|
INSERT INTO sys_menu VALUES (1944213468857495555, '模型分组新增', 1944213468857495553, 2, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:add', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944229086906281985, '数据模型', 2000, 2, 'schema', 'dev/schema/index', null, 1, 0, 'C', '0', '0', null, '#', 103, 1, '2025-07-13 10:55:11', null, '2025-07-13 10:55:11', '数据模型菜单');
|
INSERT INTO sys_menu VALUES (1944213468857495556, '模型分组修改', 1944213468857495553, 3, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:edit', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1946466176918249473, '模型字段管理', 2000, 3, 'schemaField', 'dev/schemaField/index', null, 1, 0, 'C', '0', '0', null, '#', 103, 1, '2025-07-19 15:04:35', null, '2025-07-19 15:04:35', '模型字段管理菜单');
|
INSERT INTO sys_menu VALUES (1944213468857495557, '模型分组删除', 1944213468857495553, 4, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:remove', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
|
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944213468857495554, '模型分组查询', 1944213468857495553, 1, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:list', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
INSERT INTO sys_menu VALUES (1944229086906281986, '模型数据查询', 1944229086906281985, 1, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:list', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944213468857495555, '模型分组新增', 1944213468857495553, 2, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:add', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
INSERT INTO sys_menu VALUES (1944229086906281987, '模型数据新增', 1944229086906281985, 2, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:add', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944213468857495556, '模型分组修改', 1944213468857495553, 3, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:edit', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
INSERT INTO sys_menu VALUES (1944229086906281988, '模型数据修改', 1944229086906281985, 3, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:edit', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944213468857495557, '模型分组删除', 1944213468857495553, 4, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaGroup:remove', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
INSERT INTO sys_menu VALUES (1944229086906281989, '模型数据删除', 1944229086906281985, 4, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:remove', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
|
|
||||||
|
INSERT INTO sys_menu VALUES (1946466176918249474, '模型字段管理查询', 1946466176918249473, 1, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:list', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944229086906281986, '模型数据查询', 1944229086906281985, 1, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:list', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
INSERT INTO sys_menu VALUES (1946466176918249475, '模型字段管理新增', 1946466176918249473, 2, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:add', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944229086906281987, '模型数据新增', 1944229086906281985, 2, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:add', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
INSERT INTO sys_menu VALUES (1946466176918249476, '模型字段管理修改', 1946466176918249473, 3, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:edit', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944229086906281988, '模型数据修改', 1944229086906281985, 3, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:edit', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
INSERT INTO sys_menu VALUES (1946466176918249477, '模型字段管理删除', 1946466176918249473, 4, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:remove', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1944229086906281989, '模型数据删除', 1944229086906281985, 4, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schema:remove', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1946466176918249474, '模型字段管理查询', 1946466176918249473, 1, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:list', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1946466176918249475, '模型字段管理新增', 1946466176918249473, 2, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:add', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1946466176918249476, '模型字段管理修改', 1946466176918249473, 3, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:edit', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
|
||||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (1946466176918249477, '模型字段管理删除', 1946466176918249473, 4, '#', '', null, 1, 0, 'F', '0', '0', 'dev:schemaField:remove', '#', 103, 1, '2025-06-24 19:06:58', null, null, '');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user