feat: 替换 PPIO 为 Atlas Cloud 并增强知识库功能

- 将 PPIO 服务提供商替换为 Atlas Cloud
- 更新 README 赞助商信息
- 删除 PPIOEmbeddingProvider 和相关测试
- 知识库新增重排序、混合检索、相似度阈值等字段
- 更新 SQL 初始化脚本

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
ageerle@163.com
2026-05-21 11:18:59 +08:00
parent ec092a11c3
commit c79848c654
8 changed files with 49 additions and 594 deletions

View File

@@ -72,7 +72,7 @@
- **实时通信**WebSocket 实时通信SSE 流式响应 - **实时通信**WebSocket 实时通信SSE 流式响应
- **系统监控**:完善的日志体系、性能监控、服务健康检查 - **系统监控**:完善的日志体系、性能监控、服务健康检查
## 使用web coding急速部署 ## 使用web coding部署
#### 在线体验: https://monkeycode-ai.com/?ic=019d9e9f-edc3-7a4b-8987-11b028751a1e #### 在线体验: https://monkeycode-ai.com/?ic=019d9e9f-edc3-7a4b-8987-11b028751a1e
<table> <table>
@@ -233,17 +233,21 @@ docker-compose -f docker-compose-all.yaml restart [服务名]
## 🙏 特别鸣谢 ## 🙏 特别鸣谢
感谢以下优秀的开源项目为本项目提供支持: 感谢以下优秀的开源项目为本项目提供支持:
- [Spring AI Alibaba Copilot](https://github.com/spring-ai-alibaba/copilot) - 基于spring-ai-alibaba
的智能编码助手
- [Langchain4j](https://github.com/langchain4j/langchain4j) - 强大的 Java LLM 开发框架 - [Langchain4j](https://github.com/langchain4j/langchain4j) - 强大的 Java LLM 开发框架
- [RuoYi-Vue-Plus](https://gitee.com/dromara/RuoYi-Vue-Plus) - 成熟的企业级快速开发框架 - [RuoYi-Vue-Plus](https://gitee.com/dromara/RuoYi-Vue-Plus) - 成熟的企业级快速开发框架
- [Vben Admin](https://github.com/vbenjs/vue-vben-admin) - 现代化的 Vue 后台管理模板 - [Vben Admin](https://github.com/vbenjs/vue-vben-admin) - 现代化的 Vue 后台管理模板
## 🌐 生态伙伴
- [PPIO 派欧云](https://ppinfra.com/user/register?invited_by=P8QTUY&utm_source=github_ruoyi-ai) - 提供高性价比的 GPU ## 💎 赞助商
算力和模型 API 服务 感谢以下赞助商对本项目的支持:
- [优云智算](https://www.compshare.cn/?ytag=GPU_YY-gh_ruoyi) - 万卡RTX40系GPU+海内外主流模型API服务秒级响应按量计费新客免费用。
<a href="https://www.atlascloud.ai/">
<img src="https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/atlascloud.png" alt="Atlas Cloud" width="60" height="30">
</a>
- **[Atlas Cloud](https://www.atlascloud.ai/)** - 全模态AI推理平台为开发者提供统一的AI API支持视频生成、图像生成和大语言模型。一次接入即可访问300+精选模型。
- **[编程计划优惠](https://www.atlascloud.ai/console/coding-plan)** - Atlas Cloud 针对更经济型 API 推出的全新编码计划促销活动
## 💬 社区交流 ## 💬 社区交流

View File

@@ -220,9 +220,15 @@ Thanks to the following excellent open-source projects for their support:
## 🌐 Ecosystem Partners ## 🌐 Ecosystem Partners
- [PPIO Cloud](https://ppinfra.com/user/register?invited_by=P8QTUY&utm_source=github_ruoyi-ai) - Provides cost-effective GPU computing and model API services **[Atlas Cloud](https://www.atlascloud.ai/)** - A full-modal AI inference platform that gives developers a single AI API to access video generation, image generation, and LLM APIs. Instead of managing multiple vendor integrations, you connect once and get unified access to 300+ curated models across all modalities. 👉 [Coding Plan Promotion](https://www.atlascloud.ai/console/coding-plan)
- [Youyun Intelligent Computing](https://www.compshare.cn/?ytag=GPU_YY-gh_ruoyi) - Thousands of RTX40 series GPUs + mainstream models API services, second-level response, pay-per-use, free for new customers.
## 💎 Sponsors
Thanks to the following sponsors for supporting this project:
**[Atlas Cloud](https://www.atlascloud.ai/)** - A full-modal AI inference platform that gives developers a single AI API to access video generation, image generation, and LLM APIs. Connect once and get unified access to 300+ curated models across all modalities.
> *If you would like to become a sponsor, please contact us via WeChat or Telegram.*
## 💬 Community Chat ## 💬 Community Chat

View File

@@ -1,7 +1,7 @@
/* /*
Navicat MySQL Dump SQL Navicat Premium Dump SQL
Source Server : 本地 Source Server : localhost_3306
Source Server Type : MySQL Source Server Type : MySQL
Source Server Version : 80045 (8.0.45) Source Server Version : 80045 (8.0.45)
Source Host : localhost:3306 Source Host : localhost:3306
@@ -11,13 +11,11 @@
Target Server Version : 80045 (8.0.45) Target Server Version : 80045 (8.0.45)
File Encoding : 65001 File Encoding : 65001
Date: 15/03/2026 23:56:19 Date: 21/05/2026 11:03:49
*/ */
SET NAMES utf8mb4; SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; SET FOREIGN_KEY_CHECKS = 0;
-- 忽略所有错误,继续执行
SET sql_mode = '';
-- ---------------------------- -- ----------------------------
-- Table structure for chat_message -- Table structure for chat_message
@@ -72,9 +70,9 @@ CREATE TABLE `chat_model` (
-- ---------------------------- -- ----------------------------
-- Records of chat_model -- Records of chat_model
-- ---------------------------- -- ----------------------------
INSERT INTO `chat_model` VALUES (2000585866022060033, 'chat', 'zai-org/glm-5', 'ppio', 'zai-org/glm-5', NULL, 'Y', 'https://api.ppio.com/openai', 'sk_xx', 103, 1, '2025-12-15 23:16:54', 1, '2026-03-15 19:18:48', 'DeepSeek-V3.2 是一款在高效推理、复杂推理能力与智能体场景中表现突出的领先模型。其基于 DeepSeek Sparse AttentionDSA稀疏注意力机制在显著降低计算开销的同时优化长上下文性能通过可扩展强化学习框架整体能力达到 GPT-5 同级,高算力版本 V3.2-Speciale 更在推理表现上接近 Gemini-3.0-Pro同时模型依托大型智能体任务合成管线具备更强的工具调用与多步骤决策能力并在 2025 年 IMO 与 IOI 中取得金牌级表现。作为 MaaS 平台,我们已对 DeepSeek-V3.2 完成深度适配,通过动态调度、批处理加速、低延迟推理与企业级 SLA 保障,进一步增强其在企业生产环境中的稳定性、性价比与可控性,适用于搜索、问答、智能体、代码、数据处理等多类高价值场景。', 0); INSERT INTO `chat_model` (`id`, `category`, `model_name`, `provider_code`, `model_describe`, `model_dimension`, `model_show`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `tenant_id`) VALUES (2000585866022060033, 'chat', 'zai-org/glm-5.1', 'atlas', 'zai-org/glm-5.1', NULL, 'Y', 'https://api.atlascloud.ai/v1', 'sk_xx', 103, 1, '2025-12-15 23:16:54', 1, '2026-03-15 19:18:48', '对话模型', 0);
INSERT INTO `chat_model` VALUES (2007528268536287233, 'vector', 'baai/bge-m3', 'ppio', 'bge-m3', 1024, 'N', 'https://api.ppio.com/openai', 'sk_xx', 103, 1, '2026-01-04 03:03:32', 1, '2026-03-15 19:18:51', 'BGE-M3 是一款具备多维度能力的文本嵌入模型可同时实现密集检索、多向量检索和稀疏检索三大核心功能。该模型设计上兼容超过100种语言并支持从短句到长达8192词元的长文本等多种输入形式。在跨语言检索任务中BGE-M3展现出显著优势其性能在MIRACL、MKQA等国际基准测试中位居前列。此外针对长文档检索场景该模型在MLDR、NarritiveQA等数据集上的表现同样达到行业领先水平。', 0); INSERT INTO `chat_model` (`id`, `category`, `model_name`, `provider_code`, `model_describe`, `model_dimension`, `model_show`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `tenant_id`) VALUES (2007528268536287233, 'vector', 'embedding-3', 'zhipu', 'embedding-3', 2048, 'N', 'https://open.bigmodel.cn', 'sk_xx', 103, 1, '2026-01-04 03:03:32', 1, '2026-03-15 19:18:51', '向量模型', 0);
INSERT INTO `chat_model` VALUES (2045735140488847361, 'chat', 'deepseek-chat', 'custom_api', 'deepseek-chat', NULL, NULL, 'https://api.deepseek.com', 'sk_xx', 103, 1, '2026-04-19 13:24:00', 1, '2026-04-19 13:24:00', 'deepseek对话模型', 0); INSERT INTO `chat_model` (`id`, `category`, `model_name`, `provider_code`, `model_describe`, `model_dimension`, `model_show`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `tenant_id`) VALUES (2045071617578237953, 'rerank', 'rerank', 'zhipu', 'rerank', NULL, 'N', 'https://open.bigmodel.cn', 'sk_xx', 103, 1, '2026-04-17 17:27:24', 1, '2026-04-20 15:21:48', '重排序模型', 0);
-- ---------------------------- -- ----------------------------
-- Table structure for chat_provider -- Table structure for chat_provider
@@ -107,12 +105,11 @@ CREATE TABLE `chat_provider` (
-- ---------------------------- -- ----------------------------
-- Records of chat_provider -- Records of chat_provider
-- ---------------------------- -- ----------------------------
INSERT INTO `chat_provider` VALUES (1, 'OpenAI', 'openai', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/02/25/01091be272334383a1efd9bc22b73ee6.png', 'OpenAI官方API服务商', 'https://api.openai.com', '0', 1, 103, '2025-12-14 21:48:11', '1', '1', '2026-02-25 20:46:59', 'OpenAI厂商', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (11, '深度求索', 'deepseek', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/5ba8c30f153246898a4d7dc7b846de8d.png', 'DeepSeek官方API', 'https://api.deepseek.com', '0', 0, 103, '2026-04-19 12:52:34', '1', '1', '2026-04-19 13:13:25', 'DeepSeek官方API', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (11, '深度求索', 'deepseek', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/5ba8c30f153246898a4d7dc7b846de8d.png', 'DeepSeek官方API', 'https://api.deepseek.com', '0', 0, 103, '2026-04-19 12:52:34', '1', '1', '2026-04-19 13:13:25', 'DeepSeek官方API', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (12, '智谱AI', 'zhipu', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/da071783c9284fdd9ed1ce1b57b3c75c.png', '智谱AI大模型服务', 'https://open.bigmodel.cn', '0', 4, 103, '2025-12-14 21:48:11', '1', '1', '2026-04-19 13:14:00', '智谱AI厂商', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (12, '智谱AI', 'zhipu', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/da071783c9284fdd9ed1ce1b57b3c75c.png', '智谱AI大模型服务', 'https://open.bigmodel.cn', '0', 4, 103, '2025-12-14 21:48:11', '1', '1', '2026-04-19 13:14:00', '智谱AI厂商', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (13, '小米MIMO', 'xiaomi', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/18dd39365ce244e3ae5e030da036760e.png', '小米官方API', 'https://api.xiaomimimo.com/anthropic/v1/messages', '0', 3, 103, '2026-04-19 12:48:24', '1', '1', '2026-04-19 13:14:22', '小米官方API', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (13, '小米MIMO', 'xiaomi', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/18dd39365ce244e3ae5e030da036760e.png', '小米官方API', 'https://api.xiaomimimo.com/v1', '0', 3, 103, '2026-04-19 12:48:24', '1', '1', '2026-04-19 13:14:22', '小米官方API', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (14, '阿里云百炼', 'qianwen', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/02/25/de2aa7e649de44f3ba5c6380ac6acd04.png', '阿里云百炼大模型服务', 'https://dashscope.aliyuncs.com', '0', 2, 103, '2025-12-14 21:48:11', '1', '1', '2026-02-25 20:49:13', '阿里云厂商', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (14, '阿里云百炼', 'qianwen', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/02/25/de2aa7e649de44f3ba5c6380ac6acd04.png', '阿里云百炼大模型服务', 'https://dashscope.aliyuncs.com', '0', 2, 103, '2025-12-14 21:48:11', '1', '1', '2026-02-25 20:49:13', '阿里云厂商', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (15, 'PPIO', 'ppio', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/02/25/049bb6a507174f73bba4b8d8b9e55b8a.png', 'api聚合厂商', 'https://api.ppinfra.com/openai', '0', 5, 103, '2025-12-15 23:13:42', '1', '1', '2026-02-25 20:49:01', 'api聚合厂商', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (15, 'Atlas Cloud', 'atlas', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/atlascloud.png', '全模态AI推理平台', 'https://api.atlascloud.ai/v1', '0', 5, 103, '2025-12-15 23:13:42', '1', '1', '2026-02-25 20:49:01', 'Atlas Cloud AI平台', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (16, 'MiniMax', 'minimax', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/fdc712e90e0e4d78b05862ad230884e5.png', 'MiniMax大模型服务支持M2.7、M2.5等模型', 'https://api.minimax.io/v1', '0', 6, 103, '2026-04-19 12:50:12', '1', '1', '2026-04-19 13:14:59', 'MiniMax厂商', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (16, 'MiniMax', 'minimax', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/fdc712e90e0e4d78b05862ad230884e5.png', 'MiniMax大模型服务支持M2.7、M2.5等模型', 'https://api.minimax.io/v1', '0', 6, 103, '2026-04-19 12:50:12', '1', '1', '2026-04-19 13:14:59', 'MiniMax厂商', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (17, 'ollama', 'ollama', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/02/25/afecabebc8014d80b0f06b4796a74c5d.png', 'ollama大模型', 'http://127.0.0.1:11434', '0', 7, 103, '2025-12-14 21:48:11', '1', '1', '2026-02-25 20:48:48', 'ollama厂商', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (17, 'ollama', 'ollama', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/02/25/afecabebc8014d80b0f06b4796a74c5d.png', 'ollama大模型', 'http://127.0.0.1:11434', '0', 7, 103, '2025-12-14 21:48:11', '1', '1', '2026-02-25 20:48:48', 'ollama厂商', NULL, '0', NULL, 0);
INSERT INTO `chat_provider` VALUES (18, '自定义厂商', 'custom_api', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/c1a8e122510f4e2f90deb36958af710b.png', 'OPENAI兼容格式', '自定义', '0', 8, 103, '2026-04-19 12:35:57', '1', '1', '2026-04-19 13:17:20', 'OPENAI兼容格式', NULL, '0', NULL, 0); INSERT INTO `chat_provider` VALUES (18, '自定义厂商', 'custom_api', 'https://ruoyiai-1254149996.cos.ap-guangzhou.myqcloud.com/2026/04/19/c1a8e122510f4e2f90deb36958af710b.png', 'OPENAI兼容格式', '自定义', '0', 8, 103, '2026-04-19 12:35:57', '1', '1', '2026-04-19 13:17:20', 'OPENAI兼容格式', NULL, '0', NULL, 0);
@@ -1091,6 +1088,7 @@ CREATE TABLE `knowledge_attach` (
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户Id', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户Id',
`status` tinyint NULL DEFAULT 0 COMMENT '解析状态: 0待解析, 1解析中, 2已解析, 3解析失败',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `idx_kname`(`knowledge_id` ASC, `name` ASC) USING BTREE UNIQUE INDEX `idx_kname`(`knowledge_id` ASC, `name` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2033199209203183619 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '知识库附件' ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB AUTO_INCREMENT = 2033199209203183619 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '知识库附件' ROW_FORMAT = DYNAMIC;
@@ -1115,7 +1113,9 @@ CREATE TABLE `knowledge_fragment` (
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户Id', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户Id',
PRIMARY KEY (`id`) USING BTREE `knowledge_id` bigint NULL DEFAULT NULL COMMENT '知识库ID',
PRIMARY KEY (`id`) USING BTREE,
FULLTEXT INDEX `ft_content`(`content`) WITH PARSER `ngram`
) ENGINE = InnoDB AUTO_INCREMENT = 2033199209131880451 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '知识片段' ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB AUTO_INCREMENT = 2033199209131880451 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '知识片段' ROW_FORMAT = DYNAMIC;
-- ---------------------------- -- ----------------------------
@@ -1135,6 +1135,7 @@ CREATE TABLE `knowledge_info` (
`separator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识分隔符', `separator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识分隔符',
`overlap_char` int NULL DEFAULT NULL COMMENT '重叠字符数', `overlap_char` int NULL DEFAULT NULL COMMENT '重叠字符数',
`retrieve_limit` int NULL DEFAULT NULL COMMENT '知识库中检索的条数', `retrieve_limit` int NULL DEFAULT NULL COMMENT '知识库中检索的条数',
`similarity_threshold` double NULL DEFAULT 0.5 COMMENT '相似度阈值',
`text_block_size` int NULL DEFAULT NULL COMMENT '文本块大小', `text_block_size` int NULL DEFAULT NULL COMMENT '文本块大小',
`vector_model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '向量库', `vector_model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '向量库',
`embedding_model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '向量模型', `embedding_model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '向量模型',
@@ -1145,6 +1146,13 @@ CREATE TABLE `knowledge_info` (
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户Id', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户Id',
`enable_rerank` tinyint NULL DEFAULT 0 COMMENT '是否启用重排序0否 1是',
`rerank_score_threshold` double NULL DEFAULT NULL COMMENT '重排序相关性分数阈值',
`rerank_top_n` int NULL DEFAULT NULL COMMENT '重排序后返回的文档数量',
`rerank_model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '重排序模型名称',
`enable_hybrid` tinyint(1) NULL DEFAULT 0 COMMENT '是否启用混合检索',
`hybrid_alpha` double NULL DEFAULT 0.5 COMMENT '混合检索权重比例 (0.0=纯向量, 1.0=纯关键词)',
`system_prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '系统提示词',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2033198818050781187 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '知识库' ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB AUTO_INCREMENT = 2033198818050781187 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '知识库' ROW_FORMAT = DYNAMIC;
@@ -1174,7 +1182,7 @@ CREATE TABLE `mcp_market_info` (
INDEX `idx_name`(`name` ASC) USING BTREE, INDEX `idx_name`(`name` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE, INDEX `idx_status`(`status` ASC) USING BTREE,
INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MCP市场表' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MCP市场表' ROW_FORMAT = DYNAMIC;
-- ---------------------------- -- ----------------------------
-- Records of mcp_market_info -- Records of mcp_market_info
@@ -1198,7 +1206,7 @@ CREATE TABLE `mcp_market_tool` (
INDEX `idx_market_id`(`market_id` ASC) USING BTREE, INDEX `idx_market_id`(`market_id` ASC) USING BTREE,
INDEX `idx_tool_name`(`tool_name` ASC) USING BTREE, INDEX `idx_tool_name`(`tool_name` ASC) USING BTREE,
INDEX `idx_is_loaded`(`is_loaded` ASC) USING BTREE INDEX `idx_is_loaded`(`is_loaded` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MCP市场工具关联表' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MCP市场工具关联表' ROW_FORMAT = DYNAMIC;
-- ---------------------------- -- ----------------------------
-- Records of mcp_market_tool -- Records of mcp_market_tool
@@ -1227,7 +1235,7 @@ CREATE TABLE `mcp_tool_info` (
INDEX `idx_type`(`type` ASC) USING BTREE, INDEX `idx_type`(`type` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE, INDEX `idx_status`(`status` ASC) USING BTREE,
INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MCP工具表' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MCP工具表' ROW_FORMAT = DYNAMIC;
-- ---------------------------- -- ----------------------------
-- Records of mcp_tool_info -- Records of mcp_tool_info
@@ -2085,6 +2093,7 @@ INSERT INTO `sys_dict_data` VALUES (2026642525081116674, '000000', 1, '图像',
INSERT INTO `sys_dict_data` VALUES (2026643983713247233, '000000', 1, '次数计费', '1', 'sys_model_billing', NULL, 'green', 'N', 103, 1, '2026-02-25 21:02:34', 1, '2026-02-25 21:02:56', NULL); INSERT INTO `sys_dict_data` VALUES (2026643983713247233, '000000', 1, '次数计费', '1', 'sys_model_billing', NULL, 'green', 'N', 103, 1, '2026-02-25 21:02:34', 1, '2026-02-25 21:02:56', NULL);
INSERT INTO `sys_dict_data` VALUES (2026644058522853378, '000000', 2, 'token计费', '2', 'sys_model_billing', NULL, 'primary', 'N', 103, 1, '2026-02-25 21:02:51', 1, '2026-02-25 21:02:51', NULL); INSERT INTO `sys_dict_data` VALUES (2026644058522853378, '000000', 2, 'token计费', '2', 'sys_model_billing', NULL, 'primary', 'N', 103, 1, '2026-02-25 21:02:51', 1, '2026-02-25 21:02:51', NULL);
INSERT INTO `sys_dict_data` VALUES (2027261114955931650, '000000', 2, '向量', 'vector', 'chat_model_category', NULL, 'default', 'N', 103, 1, '2026-02-27 13:54:49', 1, '2026-02-27 13:54:54', NULL); INSERT INTO `sys_dict_data` VALUES (2027261114955931650, '000000', 2, '向量', 'vector', 'chat_model_category', NULL, 'default', 'N', 103, 1, '2026-02-27 13:54:49', 1, '2026-02-27 13:54:54', NULL);
INSERT INTO `sys_dict_data` VALUES (2045070879435259905, '000000', 4, '重排序', 'rerank', 'chat_model_category', NULL, '#000000', 'N', 103, 1, '2026-04-17 17:24:28', 1, '2026-04-19 01:02:20', '重排序模型');
-- ---------------------------- -- ----------------------------
-- Table structure for sys_dict_type -- Table structure for sys_dict_type
@@ -2156,243 +2165,6 @@ CREATE TABLE `sys_logininfor` (
-- ---------------------------- -- ----------------------------
-- Records of sys_logininfor -- Records of sys_logininfor
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_logininfor` VALUES (2018437160497668098, '000000', 'admin', 'web', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 05:31:34');
INSERT INTO `sys_logininfor` VALUES (2018489328494317570, '000000', 'admin', 'web', 'pc', '58.56.198.114', '中国|山东省|泰安市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 08:58:52');
INSERT INTO `sys_logininfor` VALUES (2018490223370047490, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 09:02:26');
INSERT INTO `sys_logininfor` VALUES (2018494821124149250, '000000', 'admin', 'web', 'pc', '180.165.21.147', '中国|上海|上海市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 09:20:42');
INSERT INTO `sys_logininfor` VALUES (2018495323429801985, '000000', 'admin', 'web', 'pc', '218.1.209.117', '中国|上海|上海市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 09:22:42');
INSERT INTO `sys_logininfor` VALUES (2018496463106084866, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 09:27:13');
INSERT INTO `sys_logininfor` VALUES (2018506873276338177, '000000', 'admin', 'web', 'pc', '14.155.110.230', '中国|广东省|深圳市|电信', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-03 10:08:35');
INSERT INTO `sys_logininfor` VALUES (2018507142684872705, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-03 10:09:40');
INSERT INTO `sys_logininfor` VALUES (2018507255759114241, '000000', 'admin', 'web', 'pc', '27.156.68.14', '中国|福建省|福州市|电信', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-03 10:10:06');
INSERT INTO `sys_logininfor` VALUES (2018507799294775297, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 10:12:16');
INSERT INTO `sys_logininfor` VALUES (2018507878344822786, '000000', 'admin', 'web', 'pc', '39.78.246.253', '中国|山东省|济南市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 10:12:35');
INSERT INTO `sys_logininfor` VALUES (2018508087959359489, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 10:13:25');
INSERT INTO `sys_logininfor` VALUES (2018513467045187586, '000000', 'admin', 'web', 'pc', '111.175.56.210', '中国|湖北省|武汉市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 10:34:47');
INSERT INTO `sys_logininfor` VALUES (2018515864068952066, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 10:44:19');
INSERT INTO `sys_logininfor` VALUES (2018516837059399682, '000000', 'admin', 'web', 'pc', '115.236.45.35', '中国|浙江省|杭州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 10:48:11');
INSERT INTO `sys_logininfor` VALUES (2018517630747545602, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 10:51:20');
INSERT INTO `sys_logininfor` VALUES (2018530038144700418, '000000', 'admin', 'web', 'pc', '116.128.248.194', '中国|湖南省|长沙市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 11:40:38');
INSERT INTO `sys_logininfor` VALUES (2018531663223590914, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 11:47:06');
INSERT INTO `sys_logininfor` VALUES (2018534417249734658, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 11:58:02');
INSERT INTO `sys_logininfor` VALUES (2018537768200835074, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 12:11:21');
INSERT INTO `sys_logininfor` VALUES (2018537900388519937, '000000', 'admin', 'web', 'pc', '183.54.238.100', '中国|广东省|广州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 12:11:53');
INSERT INTO `sys_logininfor` VALUES (2018549455184334849, '000000', 'admin', 'web', 'pc', '13.212.58.4', '美国|康涅狄格|亚马逊', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-03 12:57:48');
INSERT INTO `sys_logininfor` VALUES (2018554371911061506, '000000', 'admin', 'web', 'pc', '61.182.224.157', '中国|河北省|石家庄市|联通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 13:17:20');
INSERT INTO `sys_logininfor` VALUES (2018560767549378562, '000000', 'admin', 'web', 'pc', '106.39.125.218', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 13:42:45');
INSERT INTO `sys_logininfor` VALUES (2018567861803552769, '000000', 'admin', 'web', 'pc', '58.16.14.89', '中国|贵州省|贵阳市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 14:10:56');
INSERT INTO `sys_logininfor` VALUES (2018568178360258561, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 14:12:12');
INSERT INTO `sys_logininfor` VALUES (2018571219020943362, '000000', 'admin', 'web', 'pc', '116.169.71.139', '中国|辽宁省|威瑞森', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-03 14:24:17');
INSERT INTO `sys_logininfor` VALUES (2018574610824564737, '000000', 'admin', 'web', 'pc', '113.13.108.124', '中国|广西|柳州市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 14:37:45');
INSERT INTO `sys_logininfor` VALUES (2018574668861149186, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 14:37:59');
INSERT INTO `sys_logininfor` VALUES (2018577941697531906, '000000', 'admin', 'web', 'pc', '36.110.12.226', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 14:50:59');
INSERT INTO `sys_logininfor` VALUES (2018578431793565697, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-03 14:52:56');
INSERT INTO `sys_logininfor` VALUES (2018582006717775874, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 15:07:08');
INSERT INTO `sys_logininfor` VALUES (2018582568484605953, '000000', 'admin', 'web', 'pc', '223.104.43.1', '中国|北京|北京市|移动', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 15:09:22');
INSERT INTO `sys_logininfor` VALUES (2018585018155274242, '000000', 'admin', 'web', 'pc', '116.169.127.68', '中国|辽宁省|威瑞森', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 15:19:06');
INSERT INTO `sys_logininfor` VALUES (2018586528248791041, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 15:25:07');
INSERT INTO `sys_logininfor` VALUES (2018586925091393537, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 15:26:41');
INSERT INTO `sys_logininfor` VALUES (2018587111276548097, '000000', 'admin', 'web', 'pc', '117.159.171.116', '中国|河南省|焦作市|移动', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 15:27:26');
INSERT INTO `sys_logininfor` VALUES (2018588210859479041, '000000', 'admin', 'web', 'pc', '61.169.93.182', '中国|上海|上海市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 15:31:48');
INSERT INTO `sys_logininfor` VALUES (2018588453218947074, '000000', 'admin', 'web', 'pc', '61.133.210.59', '中国|宁夏|银川市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '1', 'Password input error 1 times', '2026-02-03 15:32:45');
INSERT INTO `sys_logininfor` VALUES (2018588518431985666, '000000', 'admin', 'web', 'pc', '61.133.210.59', '中国|宁夏|银川市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 15:33:01');
INSERT INTO `sys_logininfor` VALUES (2018588841208844289, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 15:34:18');
INSERT INTO `sys_logininfor` VALUES (2018589986920730625, '000000', 'admin', 'web', 'pc', '115.236.69.226', '中国|浙江省|杭州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 15:38:51');
INSERT INTO `sys_logininfor` VALUES (2018590616590618625, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 15:41:21');
INSERT INTO `sys_logininfor` VALUES (2018593068400381953, '000000', 'admin', 'web', 'pc', '180.123.251.84', '中国|江苏省|徐州市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 15:51:06');
INSERT INTO `sys_logininfor` VALUES (2018594019760803842, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 15:54:53');
INSERT INTO `sys_logininfor` VALUES (2018595653618372609, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 16:01:22');
INSERT INTO `sys_logininfor` VALUES (2018596016505360386, '000000', 'admin', 'web', 'pc', '114.242.16.161', '中国|北京|北京市|联通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 16:02:49');
INSERT INTO `sys_logininfor` VALUES (2018596170675392513, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 16:03:25');
INSERT INTO `sys_logininfor` VALUES (2018599719354372098, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 16:17:32');
INSERT INTO `sys_logininfor` VALUES (2018599739910656001, '000000', 'admin', 'web', 'pc', '42.235.239.253', '中国|河南省|新乡市|联通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 16:17:36');
INSERT INTO `sys_logininfor` VALUES (2018600606151872513, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 16:21:03');
INSERT INTO `sys_logininfor` VALUES (2018600933580214274, '000000', 'admin', 'web', 'pc', '219.142.141.194', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 16:22:21');
INSERT INTO `sys_logininfor` VALUES (2018602589315272705, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-03 16:28:56');
INSERT INTO `sys_logininfor` VALUES (2018605159794479105, '000000', 'admin', 'web', 'pc', '222.168.89.242', '中国|吉林省|长春市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 16:39:09');
INSERT INTO `sys_logininfor` VALUES (2018609628598898690, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-03 16:56:54');
INSERT INTO `sys_logininfor` VALUES (2018609656977559553, '000000', 'admin', 'web', 'pc', '121.35.46.195', '中国|广东省|深圳市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 16:57:01');
INSERT INTO `sys_logininfor` VALUES (2018610104228777985, '000000', 'admin', 'web', 'pc', '115.236.69.226', '中国|浙江省|杭州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 16:58:47');
INSERT INTO `sys_logininfor` VALUES (2018610284827119618, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 16:59:31');
INSERT INTO `sys_logininfor` VALUES (2018611513854660610, '000000', 'admin ', 'web', 'pc', '222.90.12.243', '中国|陕西省|西安市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '1', 'Password input error 1 times', '2026-02-03 17:04:24');
INSERT INTO `sys_logininfor` VALUES (2018611519181426690, '000000', 'admin ', 'web', 'pc', '222.90.12.243', '中国|陕西省|西安市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '1', 'Password input error 2 times', '2026-02-03 17:04:25');
INSERT INTO `sys_logininfor` VALUES (2018611644431732738, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 17:04:55');
INSERT INTO `sys_logininfor` VALUES (2018611724014456833, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 17:05:14');
INSERT INTO `sys_logininfor` VALUES (2018612993819021314, '000000', 'admin', 'web', 'pc', '223.160.130.33', '中国|北京|北京市|广电', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-03 17:10:16');
INSERT INTO `sys_logininfor` VALUES (2018614987845668866, '000000', 'admin ', 'web', 'pc', '222.90.12.243', '中国|陕西省|西安市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '1', 'Password input error 1 times', '2026-02-03 17:18:12');
INSERT INTO `sys_logininfor` VALUES (2018615005365276674, '000000', 'admin', 'web', 'pc', '222.90.12.243', '中国|陕西省|西安市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 17:18:16');
INSERT INTO `sys_logininfor` VALUES (2018615245262688258, '000000', 'admin', 'web', 'pc', '61.184.94.104', '中国|湖北省|十堰市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 17:19:13');
INSERT INTO `sys_logininfor` VALUES (2018615451685359617, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 17:20:02');
INSERT INTO `sys_logininfor` VALUES (2018615588662939650, '000000', 'admin', 'web', 'pc', '183.241.255.169', '中国|北京|北京市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 17:20:35');
INSERT INTO `sys_logininfor` VALUES (2018615733957824514, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 17:21:10');
INSERT INTO `sys_logininfor` VALUES (2018618361873829889, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 17:31:36');
INSERT INTO `sys_logininfor` VALUES (2018619606214774785, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 17:36:33');
INSERT INTO `sys_logininfor` VALUES (2018621042193469441, '000000', 'admin', 'web', 'pc', '27.227.167.177', '中国|甘肃省|兰州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 17:42:15');
INSERT INTO `sys_logininfor` VALUES (2018623610328059905, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 17:52:28');
INSERT INTO `sys_logininfor` VALUES (2018623677315289089, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-03 17:52:44');
INSERT INTO `sys_logininfor` VALUES (2018623870995664897, '000000', 'admin', 'web', 'pc', '59.57.134.162', '中国|福建省|厦门市|电信', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-03 17:53:30');
INSERT INTO `sys_logininfor` VALUES (2018624044400775169, '000000', 'admin', 'web', 'pc', '39.162.49.29', '中国|河南省|郑州市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '1', 'Password input error 1 times', '2026-02-03 17:54:11');
INSERT INTO `sys_logininfor` VALUES (2018624054987198465, '000000', 'admin', 'web', 'pc', '39.162.49.29', '中国|河南省|郑州市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '1', 'Password input error 2 times', '2026-02-03 17:54:14');
INSERT INTO `sys_logininfor` VALUES (2018624077900681218, '000000', 'admin', 'web', 'pc', '39.162.49.29', '中国|河南省|郑州市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 17:54:19');
INSERT INTO `sys_logininfor` VALUES (2018625637493903362, '000000', 'admin', 'web', 'pc', '114.253.10.114', '中国|北京|北京市|联通', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-03 18:00:31');
INSERT INTO `sys_logininfor` VALUES (2018625743718846465, '000000', 'admin', 'web', 'pc', '111.198.137.189', '中国|北京|北京市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 18:00:56');
INSERT INTO `sys_logininfor` VALUES (2018625749372768258, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-03 18:00:58');
INSERT INTO `sys_logininfor` VALUES (2018625771480944641, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 18:01:03');
INSERT INTO `sys_logininfor` VALUES (2018625852410040321, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '退出成功', '2026-02-03 18:01:22');
INSERT INTO `sys_logininfor` VALUES (2018625877240320002, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-03 18:01:28');
INSERT INTO `sys_logininfor` VALUES (2018627882260238337, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 18:09:26');
INSERT INTO `sys_logininfor` VALUES (2018628150670528513, '000000', 'admin', 'web', 'pc', '114.253.10.114', '中国|北京|北京市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 18:10:30');
INSERT INTO `sys_logininfor` VALUES (2018672955786137601, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 21:08:32');
INSERT INTO `sys_logininfor` VALUES (2018689142062452738, '000000', 'admin ', 'web', 'pc', '221.205.106.23', '中国|山西省|太原市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '1', 'Password input error 1 times', '2026-02-03 22:12:52');
INSERT INTO `sys_logininfor` VALUES (2018689178624200706, '000000', 'admin', 'web', 'pc', '221.205.106.23', '中国|山西省|太原市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 22:13:00');
INSERT INTO `sys_logininfor` VALUES (2018689429430996993, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 22:14:00');
INSERT INTO `sys_logininfor` VALUES (2018693323410247681, '000000', 'admin', 'web', 'pc', '140.206.143.69', '中国|上海|上海市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 22:29:28');
INSERT INTO `sys_logininfor` VALUES (2018694798878314498, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'OSX', '0', '登录成功', '2026-02-03 22:35:20');
INSERT INTO `sys_logininfor` VALUES (2018710386166075394, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 23:37:17');
INSERT INTO `sys_logininfor` VALUES (2018715692476534785, '000000', 'admin', 'web', 'pc', '113.248.49.12', '中国|重庆|重庆市|电信', 'Firefox', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-03 23:58:22');
INSERT INTO `sys_logininfor` VALUES (2018715768049504257, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Firefox', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-03 23:58:40');
INSERT INTO `sys_logininfor` VALUES (2018745408302485505, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 01:56:26');
INSERT INTO `sys_logininfor` VALUES (2018745476409593857, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-02-04 01:56:43');
INSERT INTO `sys_logininfor` VALUES (2018852568944480258, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-04 09:02:16');
INSERT INTO `sys_logininfor` VALUES (2018852760607395842, '000000', 'admin', 'web', 'pc', '39.170.0.61', '中国|浙江省|杭州市|移动', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-04 09:03:01');
INSERT INTO `sys_logininfor` VALUES (2018855559080579073, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:14:08');
INSERT INTO `sys_logininfor` VALUES (2018856680327090177, '000000', 'admin', 'web', 'pc', '180.201.162.34', '中国|山东省|青岛市|教育网', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 09:18:36');
INSERT INTO `sys_logininfor` VALUES (2018856825580032001, '000000', 'admin', 'web', 'pc', '60.10.20.65', '中国|河北省|廊坊市|联通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 09:19:10');
INSERT INTO `sys_logininfor` VALUES (2018857125414047745, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:20:22');
INSERT INTO `sys_logininfor` VALUES (2018857183823925249, '000000', 'admin', 'web', 'pc', '114.253.10.114', '中国|北京|北京市|联通', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-04 09:20:36');
INSERT INTO `sys_logininfor` VALUES (2018857493854294017, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-04 09:21:50');
INSERT INTO `sys_logininfor` VALUES (2018860201030062082, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:32:35');
INSERT INTO `sys_logininfor` VALUES (2018860399353532418, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:33:22');
INSERT INTO `sys_logininfor` VALUES (2018860419058372609, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:33:27');
INSERT INTO `sys_logininfor` VALUES (2018862938719391745, '000000', 'admin', 'web', 'pc', '113.65.15.168', '中国|广东省|广州市|电信', 'Firefox', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 09:43:28');
INSERT INTO `sys_logininfor` VALUES (2018863017278705665, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Firefox', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:43:47');
INSERT INTO `sys_logininfor` VALUES (2018863424306548737, '000000', 'admin', 'web', 'pc', '114.253.10.114', '中国|北京|北京市|联通', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-04 09:45:24');
INSERT INTO `sys_logininfor` VALUES (2018864538947031042, '000000', 'admin', 'web', 'pc', '114.224.36.132', '中国|江苏省|无锡市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 09:49:49');
INSERT INTO `sys_logininfor` VALUES (2018864646790975490, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:50:15');
INSERT INTO `sys_logininfor` VALUES (2018864913326411777, '000000', 'admin', 'web', 'pc', '14.220.151.192', '中国|广东省|东莞市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 09:51:19');
INSERT INTO `sys_logininfor` VALUES (2018865224053035009, '000000', 'admin', 'web', 'pc', '8.220.210.62', '中国|阿里巴巴', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 09:52:33');
INSERT INTO `sys_logininfor` VALUES (2018865354428780546, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:53:04');
INSERT INTO `sys_logininfor` VALUES (2018865432400891905, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:53:22');
INSERT INTO `sys_logininfor` VALUES (2018865469902163970, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-02-04 09:53:31');
INSERT INTO `sys_logininfor` VALUES (2018865485031018498, '154726', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:53:35');
INSERT INTO `sys_logininfor` VALUES (2018865600516984833, '154726', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-02-04 09:54:03');
INSERT INTO `sys_logininfor` VALUES (2018865826023739394, '000000', 'admin', 'web', 'pc', '113.104.237.0', '中国|广东省|深圳市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 09:54:56');
INSERT INTO `sys_logininfor` VALUES (2018865939207032834, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 09:55:23');
INSERT INTO `sys_logininfor` VALUES (2018868158258089986, '000000', 'admin', 'web', 'pc', '39.170.71.231', '中国|浙江省|杭州市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 10:04:12');
INSERT INTO `sys_logininfor` VALUES (2018868610617970690, '000000', 'admin', 'web', 'pc', '219.152.39.216', '中国|重庆|重庆市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 10:06:00');
INSERT INTO `sys_logininfor` VALUES (2018870568124813313, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 10:13:47');
INSERT INTO `sys_logininfor` VALUES (2018882173784952834, '000000', 'admin', 'web', 'pc', '220.196.184.73', '中国|上海|上海市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '1', 'Password input error 1 times', '2026-02-04 10:59:54');
INSERT INTO `sys_logininfor` VALUES (2018882179346599938, '000000', 'admin', 'web', 'pc', '220.196.184.73', '中国|上海|上海市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 10:59:55');
INSERT INTO `sys_logininfor` VALUES (2018882457076633602, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 11:01:01');
INSERT INTO `sys_logininfor` VALUES (2018882886007132162, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 11:02:44');
INSERT INTO `sys_logininfor` VALUES (2018883626641526786, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Firefox', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 11:05:40');
INSERT INTO `sys_logininfor` VALUES (2018885851870793730, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 11:14:31');
INSERT INTO `sys_logininfor` VALUES (2018887170559971330, '000000', 'admin', 'web', 'pc', '114.222.24.76', '中国|江苏省|南京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 11:19:45');
INSERT INTO `sys_logininfor` VALUES (2018887913358626817, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 11:22:42');
INSERT INTO `sys_logininfor` VALUES (2018889490362404865, '000000', 'admin', 'web', 'pc', '124.165.224.106', '中国|山西省|吕梁市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 11:28:58');
INSERT INTO `sys_logininfor` VALUES (2018891240427360257, '000000', 'admin', 'web', 'pc', '163.142.243.239', '中国|广东省|佛山市|联通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 11:35:56');
INSERT INTO `sys_logininfor` VALUES (2018895246847512578, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 11:51:51');
INSERT INTO `sys_logininfor` VALUES (2018897167293485058, '000000', 'admin', 'web', 'pc', '113.57.48.151', '中国|湖北省|武汉市|联通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 11:59:29');
INSERT INTO `sys_logininfor` VALUES (2018898894247825410, '000000', 'admin', 'web', 'pc', '114.254.1.2', '中国|北京|北京市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 12:06:20');
INSERT INTO `sys_logininfor` VALUES (2018899094601338882, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 12:07:08');
INSERT INTO `sys_logininfor` VALUES (2018916480444403714, '000000', 'admin', 'web', 'pc', '219.143.206.106', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:16:13');
INSERT INTO `sys_logininfor` VALUES (2018916794622939137, '000000', 'admin', 'web', 'pc', '116.252.72.152', '中国|广西|南宁市|电信', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-04 13:17:28');
INSERT INTO `sys_logininfor` VALUES (2018917938204119041, '000000', 'admin', 'web', 'pc', '219.143.206.106', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:22:01');
INSERT INTO `sys_logininfor` VALUES (2018918018160136193, '000000', 'admin', 'web', 'pc', '218.240.181.5', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:22:20');
INSERT INTO `sys_logininfor` VALUES (2018918326378565634, '000000', 'admin', 'web', 'pc', '218.240.181.5', '中国|北京|北京市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:23:33');
INSERT INTO `sys_logininfor` VALUES (2018920804255928322, '000000', 'admin', 'web', 'pc', '219.143.206.106', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:33:24');
INSERT INTO `sys_logininfor` VALUES (2018921548166074369, '000000', 'admin', 'web', 'pc', '219.143.206.106', '中国|北京|北京市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:36:21');
INSERT INTO `sys_logininfor` VALUES (2018922995012210690, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Quark', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 13:42:06');
INSERT INTO `sys_logininfor` VALUES (2018926354117038082, '000000', 'admin', 'web', 'pc', '8.220.210.62', '中国|阿里巴巴', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:55:27');
INSERT INTO `sys_logininfor` VALUES (2018927011129593858, '000000', 'admin', 'web', 'pc', '60.190.252.115', '中国|浙江省|杭州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 13:58:04');
INSERT INTO `sys_logininfor` VALUES (2018927468619108353, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 13:59:53');
INSERT INTO `sys_logininfor` VALUES (2018927515784056834, '000000', 'admin', 'web', 'pc', '14.111.243.245', '中国|重庆|重庆市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '1', 'Password input error 1 times', '2026-02-04 14:00:04');
INSERT INTO `sys_logininfor` VALUES (2018927562521186305, '000000', 'admin', 'web', 'pc', '14.111.243.245', '中国|重庆|重庆市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 14:00:15');
INSERT INTO `sys_logininfor` VALUES (2018929485043339265, '000000', 'admin', 'web', 'pc', '124.114.150.254', '中国|陕西省|西安市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 14:07:54');
INSERT INTO `sys_logininfor` VALUES (2018931277877612545, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 14:15:01');
INSERT INTO `sys_logininfor` VALUES (2018933698284621826, '000000', 'admin', 'web', 'pc', '222.35.11.50', '中国|北京|北京市|铁通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 14:24:38');
INSERT INTO `sys_logininfor` VALUES (2018933723182010369, '000000', 'admin', 'web', 'pc', '183.162.217.80', '中国|安徽省|蚌埠市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 14:24:44');
INSERT INTO `sys_logininfor` VALUES (2018933918011625473, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 14:25:31');
INSERT INTO `sys_logininfor` VALUES (2018935595993272322, '000000', 'admin', 'web', 'pc', '122.225.239.202', '中国|浙江省|嘉兴市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 14:32:11');
INSERT INTO `sys_logininfor` VALUES (2018937821423865857, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 14:41:01');
INSERT INTO `sys_logininfor` VALUES (2018938936521527298, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 14:45:27');
INSERT INTO `sys_logininfor` VALUES (2018946088032145409, '000000', 'admin', 'web', 'pc', '223.104.202.88', '中国|陕西省|咸阳市|移动', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 15:13:52');
INSERT INTO `sys_logininfor` VALUES (2018946463766286337, '000000', 'admin', 'web', 'pc', '114.139.48.241', '中国|贵州省|遵义市|电信', 'Chrome', 'OSX', '0', 'Login successful', '2026-02-04 15:15:22');
INSERT INTO `sys_logininfor` VALUES (2018948323336130562, '000000', 'admin', 'web', 'pc', '113.207.43.98', '中国|重庆|重庆市|联通', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 15:22:45');
INSERT INTO `sys_logininfor` VALUES (2018948839856279554, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 15:24:48');
INSERT INTO `sys_logininfor` VALUES (2018950286861799426, '000000', 'admin', 'web', 'pc', '112.224.162.237', '中国|山东省|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 15:30:33');
INSERT INTO `sys_logininfor` VALUES (2018950904724721665, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 15:33:01');
INSERT INTO `sys_logininfor` VALUES (2018950963323342849, '000000', 'admin', 'web', 'pc', '182.132.201.232', '中国|四川省|眉山市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 15:33:15');
INSERT INTO `sys_logininfor` VALUES (2018950986727559170, '000000', 'admin', 'web', 'pc', '111.8.48.211', '中国|湖南省|长沙市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 15:33:20');
INSERT INTO `sys_logininfor` VALUES (2018951848111771650, '000000', 'admin', 'web', 'pc', '219.138.228.254', '中国|湖北省|鄂州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 15:36:46');
INSERT INTO `sys_logininfor` VALUES (2018952415047454722, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 15:39:01');
INSERT INTO `sys_logininfor` VALUES (2018954681871634433, '000000', 'admin', 'web', 'pc', '123.235.153.115', '中国|山东省|青岛市|联通', 'MicroMessenger', 'OSX', '0', 'Login successful', '2026-02-04 15:48:01');
INSERT INTO `sys_logininfor` VALUES (2018959635684397057, '000000', 'admin', 'web', 'pc', '58.56.198.114', '中国|山东省|泰安市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:07:42');
INSERT INTO `sys_logininfor` VALUES (2018961274495438849, '000000', 'admin', 'web', 'pc', '120.197.21.117', '中国|广东省|广州市|移动', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:14:13');
INSERT INTO `sys_logininfor` VALUES (2018961365956431873, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:14:35');
INSERT INTO `sys_logininfor` VALUES (2018961449058177025, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:14:55');
INSERT INTO `sys_logininfor` VALUES (2018961841162686465, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:16:28');
INSERT INTO `sys_logininfor` VALUES (2018961976873586689, '000000', 'admin', 'web', 'pc', '36.112.184.220', '中国|北京|北京市|电信', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:17:00');
INSERT INTO `sys_logininfor` VALUES (2018962175272554497, '000000', 'admin', 'web', 'pc', '39.144.212.209', '中国|移动', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:17:48');
INSERT INTO `sys_logininfor` VALUES (2018962369447858177, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:18:34');
INSERT INTO `sys_logininfor` VALUES (2018963149303189505, '000000', 'admin', 'web', 'pc', '112.97.202.126', '中国|广东省|东莞市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:21:40');
INSERT INTO `sys_logininfor` VALUES (2018963440199143425, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:22:49');
INSERT INTO `sys_logininfor` VALUES (2018966187199827970, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-02-04 16:33:44');
INSERT INTO `sys_logininfor` VALUES (2018966195156422657, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:33:46');
INSERT INTO `sys_logininfor` VALUES (2018967272132055041, '000000', 'admin', 'web', 'pc', '121.8.154.218', '中国|广东省|广州市|电信', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:38:03');
INSERT INTO `sys_logininfor` VALUES (2018967970655637505, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:40:49');
INSERT INTO `sys_logininfor` VALUES (2018968030697099265, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:41:04');
INSERT INTO `sys_logininfor` VALUES (2018970160656945154, '000000', 'admin', 'web', 'pc', '183.209.146.73', '中国|江苏省|南京市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:49:32');
INSERT INTO `sys_logininfor` VALUES (2018970873374052354, '000000', 'admin', 'web', 'pc', '60.1.71.196', '中国|河北省|石家庄市|联通', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:52:22');
INSERT INTO `sys_logininfor` VALUES (2018970947504181249, '000000', 'admin', 'web', 'pc', '223.88.78.216', '中国|河南省|郑州市|移动', 'Chrome', 'Windows 10 or Windows Server 2016', '0', 'Login successful', '2026-02-04 16:52:39');
INSERT INTO `sys_logininfor` VALUES (2018971098872418305, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 16:53:15');
INSERT INTO `sys_logininfor` VALUES (2018978580902580226, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 17:22:59');
INSERT INTO `sys_logininfor` VALUES (2018978998839808002, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 17:24:39');
INSERT INTO `sys_logininfor` VALUES (2018984098123616257, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 17:44:55');
INSERT INTO `sys_logininfor` VALUES (2018988627267293186, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 18:02:54');
INSERT INTO `sys_logininfor` VALUES (2018990733382520834, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 18:11:17');
INSERT INTO `sys_logininfor` VALUES (2019029939576246274, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 20:47:04');
INSERT INTO `sys_logininfor` VALUES (2019040366678904834, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 21:28:30');
INSERT INTO `sys_logininfor` VALUES (2019057692774109186, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 22:37:21');
INSERT INTO `sys_logininfor` VALUES (2019057715637260289, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-04 22:37:26');
INSERT INTO `sys_logininfor` VALUES (2019113073072279553, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'OSX', '0', '登录成功', '2026-02-05 02:17:25');
INSERT INTO `sys_logininfor` VALUES (2019203832710565889, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-05 08:18:03');
INSERT INTO `sys_logininfor` VALUES (2019210865128116226, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-05 08:46:00');
INSERT INTO `sys_logininfor` VALUES (2019213517912150018, '154726', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-05 08:56:33');
INSERT INTO `sys_logininfor` VALUES (2019217038615121921, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-05 09:10:32');
INSERT INTO `sys_logininfor` VALUES (2019219134710157314, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Linux', '0', '登录成功', '2026-02-05 09:18:52');
INSERT INTO `sys_logininfor` VALUES (2019222079201157121, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-05 09:30:34');
INSERT INTO `sys_logininfor` VALUES (2019223047400198146, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'OSX', '0', '登录成功', '2026-02-05 09:34:25');
INSERT INTO `sys_logininfor` VALUES (2019224288503140354, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-05 09:39:20');
INSERT INTO `sys_logininfor` VALUES (2019224998575153153, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-02-05 09:42:10');
INSERT INTO `sys_logininfor` VALUES (2019225059417726977, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-05 09:42:24');
INSERT INTO `sys_logininfor` VALUES (2019240817392693249, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-05 10:45:01');
INSERT INTO `sys_logininfor` VALUES (2019447979716972545, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-06 00:28:13');
INSERT INTO `sys_logininfor` VALUES (2026536636865163265, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-25 13:56:00');
INSERT INTO `sys_logininfor` VALUES (2026556949535502337, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-25 15:16:43');
INSERT INTO `sys_logininfor` VALUES (2026578433112911874, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-25 16:42:05');
INSERT INTO `sys_logininfor` VALUES (2026638437400518657, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-25 20:40:31');
INSERT INTO `sys_logininfor` VALUES (2026647463072952321, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-25 21:16:23');
INSERT INTO `sys_logininfor` VALUES (2026653919016968194, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-02-25 21:42:02');
INSERT INTO `sys_logininfor` VALUES (2026654082020204546, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-25 21:42:41');
INSERT INTO `sys_logininfor` VALUES (2026654455514587138, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-25 21:44:10');
INSERT INTO `sys_logininfor` VALUES (2027260957187186689, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-02-27 13:54:12');
INSERT INTO `sys_logininfor` VALUES (2030617171346399233, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-08 20:10:35');
INSERT INTO `sys_logininfor` VALUES (2033083137191841794, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 15:29:27');
INSERT INTO `sys_logininfor` VALUES (2033102367094214657, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 16:45:52');
INSERT INTO `sys_logininfor` VALUES (2033116897354551298, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 17:43:36');
INSERT INTO `sys_logininfor` VALUES (2033133175565836289, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 18:48:17');
INSERT INTO `sys_logininfor` VALUES (2033167392953675778, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 21:04:16');
INSERT INTO `sys_logininfor` VALUES (2033168637663719425, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 21:09:12');
INSERT INTO `sys_logininfor` VALUES (2033170263812157441, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-03-15 21:15:40');
INSERT INTO `sys_logininfor` VALUES (2033170654197002242, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 21:17:13');
INSERT INTO `sys_logininfor` VALUES (2033170805703651330, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2026-03-15 21:17:49');
INSERT INTO `sys_logininfor` VALUES (2033170821767835650, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 21:17:53');
INSERT INTO `sys_logininfor` VALUES (2033170964009267201, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 21:18:27');
INSERT INTO `sys_logininfor` VALUES (2033197762549985282, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 23:04:56');
INSERT INTO `sys_logininfor` VALUES (2033200372921217025, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '1', '密码输入错误1次', '2026-03-15 23:15:19');
INSERT INTO `sys_logininfor` VALUES (2033200386498179073, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 23:15:22');
INSERT INTO `sys_logininfor` VALUES (2033210457315696642, '000000', 'admin', 'pc', 'pc', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2026-03-15 23:55:23');
-- ---------------------------- -- ----------------------------
-- Table structure for sys_menu -- Table structure for sys_menu
@@ -3176,7 +2948,7 @@ CREATE TABLE `sys_user` (
-- ---------------------------- -- ----------------------------
-- Records of sys_user -- Records of sys_user
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_user` VALUES (1, '000000', 103, 'admin', 'admin', 'sys_user', 'ageerle@163.com', '15888888888', '1', NULL, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2026-03-15 23:55:23', 103, 1, '2026-02-05 09:22:12', -1, '2026-03-15 23:55:23', '管理员', NULL, 0.00); INSERT INTO `sys_user` VALUES (1, '000000', 103, 'admin', 'admin', 'sys_user', 'ageerle@163.com', '15888888888', '1', NULL, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2026-05-19 23:16:57', 103, 1, '2026-02-05 09:22:12', -1, '2026-05-19 23:16:57', '管理员', NULL, 0.00);
INSERT INTO `sys_user` VALUES (3, '000000', 108, 'test', '本部门及以下 密码666666', 'sys_user', '', '', '0', NULL, '$2a$10$b8yUzN0C71sbz.PhNOCgJe.Tu1yWC3RNrTyjSQ8p1W0.aaUXUJ.Ne', '0', '0', '127.0.0.1', '2026-02-05 09:22:12', 103, 1, '2026-02-05 09:22:12', 3, '2026-02-05 09:22:12', NULL, NULL, 0.00); INSERT INTO `sys_user` VALUES (3, '000000', 108, 'test', '本部门及以下 密码666666', 'sys_user', '', '', '0', NULL, '$2a$10$b8yUzN0C71sbz.PhNOCgJe.Tu1yWC3RNrTyjSQ8p1W0.aaUXUJ.Ne', '0', '0', '127.0.0.1', '2026-02-05 09:22:12', 103, 1, '2026-02-05 09:22:12', 3, '2026-02-05 09:22:12', NULL, NULL, 0.00);
INSERT INTO `sys_user` VALUES (4, '000000', 102, 'test1', '仅本人 密码666666', 'sys_user', '', '', '0', NULL, '$2a$10$b8yUzN0C71sbz.PhNOCgJe.Tu1yWC3RNrTyjSQ8p1W0.aaUXUJ.Ne', '0', '0', '127.0.0.1', '2026-02-05 09:22:12', 103, 1, '2026-02-05 09:22:12', 4, '2026-02-05 09:22:12', NULL, NULL, 0.00); INSERT INTO `sys_user` VALUES (4, '000000', 102, 'test1', '仅本人 密码666666', 'sys_user', '', '', '0', NULL, '$2a$10$b8yUzN0C71sbz.PhNOCgJe.Tu1yWC3RNrTyjSQ8p1W0.aaUXUJ.Ne', '0', '0', '127.0.0.1', '2026-02-05 09:22:12', 103, 1, '2026-02-05 09:22:12', 4, '2026-02-05 09:22:12', NULL, NULL, 0.00);

View File

@@ -15,7 +15,7 @@ public enum ChatModeType {
DEEP_SEEK("deepseek", "深度求索"), DEEP_SEEK("deepseek", "深度求索"),
QIAN_WEN("qianwen", "通义千问"), QIAN_WEN("qianwen", "通义千问"),
OPEN_AI("openai", "openai"), OPEN_AI("openai", "openai"),
PPIO("ppio", "ppio"), ATLAS("atlas", "Atlas Cloud"),
CUSTOM_API("custom_api", "自定义API"), CUSTOM_API("custom_api", "自定义API"),
MINIMAX("minimax", "MiniMax"), MINIMAX("minimax", "MiniMax"),
XIAOMI("xiaomi", "小米MiMo"); XIAOMI("xiaomi", "小米MiMo");

View File

@@ -27,7 +27,7 @@ public interface AbstractChatService {
/** /**
* 创建同步聊天模型(供 Agent/SupervisorAgent 使用) * 创建同步聊天模型(供 Agent/SupervisorAgent 使用)
* 默认实现使用 OpenAI 兼容协议,适用于 OpenAI、DeepSeek、PPIO 等兼容接口的 provider。 * 默认实现使用 OpenAI 兼容协议,适用于 OpenAI、DeepSeek、Atlas Cloud 等兼容接口的 provider。
* ZhiPu、QianWen、Ollama 等需覆盖此方法使用各自 SDK。 * ZhiPu、QianWen、Ollama 等需覆盖此方法使用各自 SDK。
* *
* @param chatModelVo 模型配置 * @param chatModelVo 模型配置

View File

@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
/** /**
* PPIO服务调用 * Atlas Cloud服务调用
* *
* @author ageerle@163.com * @author ageerle@163.com
* @date 2025/12/13 * @date 2025/12/13
@@ -23,7 +23,7 @@ import java.util.List;
@Service @Service
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
public class PPIOServiceImpl implements AbstractChatService { public class AtlaServiceImpl implements AbstractChatService {
@Override @Override
public StreamingChatModel buildStreamingChatModel(ChatModelVo chatModelVo, ChatRequest chatRequest) { public StreamingChatModel buildStreamingChatModel(ChatModelVo chatModelVo, ChatRequest chatRequest) {
@@ -38,7 +38,7 @@ public class PPIOServiceImpl implements AbstractChatService {
@Override @Override
public String getProviderName() { public String getProviderName() {
return ChatModeType.PPIO.getCode(); return ChatModeType.ATLAS.getCode();
} }
} }

View File

@@ -1,14 +0,0 @@
package org.ruoyi.service.embed.impl;
import org.springframework.stereotype.Component;
/**
* @Author: Robust_H
* @Date: 2025-09-30-下午3:59
* @Description: 硅基流动(兼容 OpenAi
*/
@Component("ppio")
public class PPIOEmbeddingProvider extends OpenAiEmbeddingProvider {
}

View File

@@ -1,313 +0,0 @@
package org.ruoyi.agent;
import dev.langchain4j.agentic.AgenticServices;
import dev.langchain4j.agentic.supervisor.SupervisorAgent;
import dev.langchain4j.agentic.supervisor.SupervisorResponseStrategy;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.StreamingChatModel;
import dev.langchain4j.model.chat.listener.ChatModelErrorContext;
import dev.langchain4j.model.chat.listener.ChatModelListener;
import dev.langchain4j.model.chat.listener.ChatModelRequestContext;
import dev.langchain4j.model.chat.listener.ChatModelResponseContext;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.openai.OpenAiStreamingChatModel;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.ruoyi.observability.OutputChannel;
import org.ruoyi.observability.StreamingOutputWrapper;
import org.ruoyi.observability.SupervisorStreamListener;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/**
* 子 Agent 流式输出集成测试
*
* 测试内容:
* 1. 观察单个 Agent 的流式输出
* 2. 观察 Supervisor 调用子 Agent 的流式输出
* 3. 验证 AgentListener 事件回调
* 4. 验证 StreamingOutputWrapper 的 token 拦截
*
* 注意:运行测试前需要配置正确的 API Key
* 可以通过环境变量或直接修改配置区域
*
* @author ageerle@163.com
* @date 2025/04/10
*/
@Disabled("需要配置 API Key 后手动启用")
public class StreamingAgentIntegrationTest {
// ==================== 配置区域 ====================
private static final String BASE_URL = "https://api.ppio.com/openai";
private static final String API_KEY = System.getenv("PPIO_API_KEY") != null
? System.getenv("PPIO_API_KEY")
: "xx"; // 默认 Key
private static final String MODEL_NAME = "deepseek/deepseek-v3.2";
private StreamingChatModel streamingModel;
private OpenAiChatModel syncModel;
// ==================== Agent 接口定义 ====================
public interface MathAgent {
@SystemMessage("你是一个数学计算助手,帮助用户解决数学问题。直接给出计算结果和简要解释。")
@UserMessage("计算:{{query}}")
@dev.langchain4j.agentic.Agent("数学计算助手")
String calculate(@V("query") String query);
}
public interface TextAgent {
@SystemMessage("你是一个文本分析助手,帮助用户分析文本内容。给出简洁的分析结果。")
@UserMessage("分析以下文本:{{text}}")
@dev.langchain4j.agentic.Agent("文本分析助手")
String analyze(@V("text") String text);
}
public interface WeatherAgent {
@SystemMessage("你是一个天气助手。根据用户提供的信息给出天气相关的回答。")
@UserMessage("回答问题:{{query}}")
@dev.langchain4j.agentic.Agent("天气助手")
String answer(@V("query") String query);
}
// ==================== 初始化 ====================
@BeforeEach
void setUp() {
// streamingModel = OpenAiStreamingChatModel.builder()
// .baseUrl(BASE_URL)
// .apiKey(API_KEY)
// .modelName(MODEL_NAME)
// .build();
streamingModel = OpenAiStreamingChatModel.builder()
.baseUrl(BASE_URL)
.apiKey(API_KEY)
.listeners(List.of(new ChatModelListener() {
@Override
public void onRequest(ChatModelRequestContext ctx) {
// 请求发送前
}
@Override
public void onResponse(ChatModelResponseContext ctx) {
// 响应完成后
}
@Override
public void onError(ChatModelErrorContext ctx) {
// 错误时
}
}))
.build();
syncModel = OpenAiChatModel.builder()
.baseUrl(BASE_URL)
.apiKey(API_KEY)
.modelName(MODEL_NAME)
.build();
}
// ==================== 测试方法 ====================
@Test
@DisplayName("测试1: 基础流式输出 - 单个 Agent")
void testBasicStreamingAgent() throws Exception {
System.out.println("\n=== 测试1: 基础流式输出 - 单个 Agent ===\n");
// 创建事件总线
String requestId = UUID.randomUUID().toString();
OutputChannel channel = OutputChannel.create(requestId);
CountDownLatch completed = new CountDownLatch(1);
// 包装模型以捕获流式输出
ChatModel wrappedModel = new StreamingOutputWrapper(streamingModel, channel);
// 构建 Agent
MathAgent mathAgent = AgenticServices.agentBuilder(MathAgent.class)
.chatModel(wrappedModel)
.build();
// 异步执行
CompletableFuture.runAsync(() -> {
try {
System.out.println(">>> 调用 MathAgent.calculate()...");
String result = mathAgent.calculate("计算 123 * 456 + 789 的值");
System.out.println("\n>>> 最终结果: " + result);
} catch (Exception e) {
System.err.println(">>> 异常: " + e.getMessage());
channel.completeWithError(e);
} finally {
channel.complete();
completed.countDown();
}
});
// drain 推送
channel.drain(text -> {
System.out.print(text);
System.out.flush();
});
completed.await(30, TimeUnit.SECONDS);
OutputChannel.remove(requestId);
}
@Test
@DisplayName("测试2: Supervisor 模式 - 单个子 Agent 流式输出")
void testSupervisorWithSingleSubAgent() throws Exception {
System.out.println("\n=== 测试2: Supervisor 模式 - 单个子 Agent ===\n");
String requestId = UUID.randomUUID().toString();
OutputChannel channel = OutputChannel.create(requestId);
CountDownLatch completed = new CountDownLatch(1);
// 包装模型
// 子 Agent
MathAgent mathAgent = AgenticServices.agentBuilder(MathAgent.class)
.streamingChatModel(streamingModel)
.build();
// Supervisor注册监听器
SupervisorAgent supervisor = AgenticServices.supervisorBuilder()
.chatModel(syncModel)
//.listener(new SupervisorStreamListener(channel))
.subAgents(mathAgent)
.responseStrategy(SupervisorResponseStrategy.LAST)
.build();
// 异步执行
CompletableFuture.runAsync(() -> {
try {
System.out.println(">>> Supervisor.invoke() 开始...");
String result = supervisor.invoke("帮我计算 999 除以 3 等于多少");
System.out.println("\n>>> Supervisor 结果: " + result);
} catch (Exception e) {
System.err.println(">>> 异常: " + e.getMessage());
e.printStackTrace();
// channel.completeWithError(e);
} finally {
// channel.complete();
completed.countDown();
}
});
// drain 推送
channel.drain(text -> {
System.out.print(text);
System.out.flush();
});
completed.await(60, TimeUnit.SECONDS);
OutputChannel.remove(requestId);
}
@Test
@DisplayName("测试3: Supervisor 模式 - 多个子 Agent 流式输出")
void testSupervisorWithMultipleSubAgents() throws Exception {
System.out.println("\n=== 测试3: Supervisor 模式 - 多个子 Agent ===\n");
String requestId = UUID.randomUUID().toString();
OutputChannel channel = OutputChannel.create(requestId);
CountDownLatch completed = new CountDownLatch(1);
// 包装模型
ChatModel wrappedModel = new StreamingOutputWrapper(streamingModel, channel);
// 子 Agent
MathAgent mathAgent = AgenticServices.agentBuilder(MathAgent.class)
.chatModel(wrappedModel)
.build();
TextAgent textAgent = AgenticServices.agentBuilder(TextAgent.class)
.chatModel(wrappedModel)
.build();
WeatherAgent weatherAgent = AgenticServices.agentBuilder(WeatherAgent.class)
.chatModel(wrappedModel)
.build();
// Supervisor
SupervisorAgent supervisor = AgenticServices.supervisorBuilder()
.chatModel(syncModel)
.listener(new SupervisorStreamListener(channel))
.subAgents(mathAgent, textAgent, weatherAgent)
.responseStrategy(SupervisorResponseStrategy.LAST)
.build();
// 异步执行 - 提一个会触发多个 Agent 的问题
CompletableFuture.runAsync(() -> {
try {
System.out.println(">>> Supervisor.invoke() 开始...");
String result = supervisor.invoke(
"请帮我做两件事1. 计算 50 * 20 的结果2. 分析 '人工智能正在改变世界' 这句话的含义"
);
System.out.println("\n>>> Supervisor 结果: " + result);
} catch (Exception e) {
System.err.println(">>> 异常: " + e.getMessage());
e.printStackTrace();
channel.completeWithError(e);
} finally {
channel.complete();
completed.countDown();
}
});
// drain 推送 - 实时观察流式输出
channel.drain(text -> {
System.out.print("观察流式输出:"+text);
System.out.flush();
});
completed.await(90, TimeUnit.SECONDS);
OutputChannel.remove(requestId);
}
@Test
@DisplayName("测试4: 直接观察 StreamingChatModel 的流式响应")
void testDirectStreamingChatModel() throws Exception {
System.out.println("\n=== 测试4: 直接观察 StreamingChatModel ===\n");
StringBuilder buffer = new StringBuilder();
CountDownLatch completed = new CountDownLatch(1);
streamingModel.chat("你好,请自我介绍", new dev.langchain4j.model.chat.response.StreamingChatResponseHandler() {
@Override
public void onPartialResponse(String partialResponse) {
buffer.append(partialResponse);
System.out.print(partialResponse);
System.out.flush();
}
@Override
public void onCompleteResponse(ChatResponse completeResponse) {
System.out.println("\n\n[完成] 总Token数: " +
(completeResponse.metadata() != null && completeResponse.metadata().tokenUsage() != null
? completeResponse.metadata().tokenUsage().totalTokenCount()
: ""));
completed.countDown();
}
@Override
public void onError(Throwable error) {
System.err.println("[错误] " + error.getMessage());
completed.countDown();
}
});
completed.await(30, TimeUnit.SECONDS);
System.out.println("完整响应内容: " + buffer.toString());
}
}