办学质量监测教学评价系统
ageerle
2025-03-20 03d2c1fbc08f6bdb6319e3eb75333e11f1be61e5
Merge remote-tracking branch 'origin/main'
已修改2个文件
已添加1个文件
51 ■■■■ 文件已修改
README.md 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/SysModelController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/util/DesensitizationUtil.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -52,6 +52,7 @@
- [鸣谢](#鸣谢)
### æºç åœ°å€
- é¡¹ç›®æ–‡æ¡£: https://doc.pandarobot.chat
- å‰ç«¯-后台管理: https://github.com/ageerle/ruoyi-admin
- å‰ç«¯-用户端: https://github.com/ageerle/ruoyi-web
- å°ç¨‹åºç«¯: https://github.com/ageerle/ruoyi-uniapp
@@ -60,13 +61,13 @@
- ç”¨æˆ·å: admin å¯†ç ï¼šadmin123
### ç‰¹è‰²åŠŸèƒ½
1. å†…ç½®SSE、websocket等网络协议,支持对接OpenAI、Azure、ChatGLM、讯飞星火等大语言模型
2. æ”¯æŒæŽ¥å…¥ä¸ªäººå¾®ä¿¡æˆ–企业微信
3. æ”¯æŒæ˜“支付、微信支付和Stripe国际信用卡支付
4. æä¾›é‚®ç®±ç™»å½•和微信公众号登录
5. æ”¯æŒçŸ¥è¯†åº“功能,支持AI翻译、AI PPT制作、语音克隆和AI翻唱
6. æä¾›å®Œæ•´çš„前端应用、后台管理以及小程序应用,全部开箱即用。基于MIT开源协议
1. å…¨å¥—开源系统:提供完整的前端应用、后台管理以及小程序应用,基于MIT协议,开箱即用。
2. æœ¬åœ°RAG方案:集成Milvus/Weaviate向量库、本地向量化模型与Ollama,实现本地化RAG
3. ä¸°å¯Œæ’件功能:支持联网、SQL查询及Text2API插件,扩展系统能力与应用场景。
4. ä¸°å¯Œçš„æ¨¡åž‹é›†æˆï¼šå†…置网络协议,可对接几十种大模型,并且也支持AI绘画功能。
5. å¼ºå¤§çš„多媒体功能:支持AI翻译、PPT制作、语音克隆和翻唱等
6. æ‰©å±•功能:支持将大模型接入个人或企业微信
7. æ”¯ä»˜åŠŸèƒ½ï¼šæ”¯æŒæ˜“æ”¯ä»˜ã€å¾®ä¿¡æ”¯ä»˜ç­‰å¤šç§æ”¯ä»˜æ–¹å¼
### é¡¹ç›®æ¼”示
@@ -141,7 +142,6 @@
│  â””─ ruoyi-common-web                 // web模块
├─ ruoyi-modules                       // æ¨¡å—组
│  â””─ ruoyi-demo                       // æ¼”示模块
│  â””─ ruoyi-generator                  // ä»£ç ç”Ÿæˆæ¨¡å—
│  â””─ ruoyi-system                     // ä¸šåŠ¡æ¨¡å—
├─ .run                 // æ‰§è¡Œè„šæœ¬æ–‡ä»¶
├─ .editorconfig        // ç¼–辑器编码格式配置
@@ -157,11 +157,6 @@
- [Vben Admin](https://github.com/vbenjs/vue-vben-admin)
- [Naive UI](https://www.naiveui.com)
- [RuoYi-Vue-Plus](https://gitee.com/dromara/RuoYi-Vue-Plus)
## è´¡çŒ®è€…
<a href="https://github.com/ageerle/ruoyi-ai/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=ageerle/ruoyi-ai" />
</a>
#### å¦‚何参与开源项目
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/SysModelController.java
@@ -25,12 +25,14 @@
import org.ruoyi.system.service.ISysModelService;
import org.ruoyi.system.service.ISysPackagePlanService;
import org.ruoyi.system.service.ISysUserService;
import org.ruoyi.system.util.DesensitizationUtil;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * ç³»ç»Ÿæ¨¡åž‹
@@ -49,7 +51,6 @@
    private final ISysPackagePlanService sysPackagePlanService;
    private final ISysUserService userService;
    /**
     * æŸ¥è¯¢ç³»ç»Ÿæ¨¡åž‹åˆ—表 - å…¨éƒ¨
@@ -82,6 +83,14 @@
            List<String> array = new ArrayList<>(Arrays.asList(sysPackagePlanVo.getPlanDetail().split(",")));
            sysModelVos.removeIf(model -> !array.contains(model.getModelName()));
        }
        sysModelVos.stream().map(vo -> {
                    String maskedApiHost = DesensitizationUtil.maskData(vo.getApiHost());
                    String maskedApiKey = DesensitizationUtil.maskData(vo.getApiKey());
                    vo.setApiHost(maskedApiHost);
                    vo.setApiKey(maskedApiKey);
                    return vo;
                })
                .collect(Collectors.toList());
        return R.ok(sysModelVos);
    }
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/util/DesensitizationUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.ruoyi.system.util;
public class DesensitizationUtil {
    public static String maskData(String data) {
        if (data == null || data.length() <= 4) {
            return data;
        }
        int start = 2;
        int end = data.length() - 2;
        StringBuilder masked = new StringBuilder();
        masked.append(data, 0, start);
        for (int i = start; i < end; i++) {
            masked.append('*');
        }
        masked.append(data.substring(end));
        return masked.toString();
    }
}