浏览代码

feat:新增dify和ragflow说明

hanyang 1 年之前
父节点
当前提交
a4dd5f63be
共有 2 个文件被更改,包括 73 次插入0 次删除
  1. 23 0
      README.md
  2. 50 0
      docs/other-platform-dify.md

+ 23 - 0
README.md

@@ -60,6 +60,29 @@ $ git commit -m 'build: 测试环境部署'
 $ git push
 ```
 
+> 另外:部署时应注意保证关联项目正常,参阅下方`关联项目`。
+
+## 关联项目
+
+此项目通过`微前端`、`iframe` 等方式`嵌入了`其他几个相关项目,涉及到的项目如下:
+
+- 小数(无界微前端嵌入) 可通过路由`/xiaoshu`访问。
+- dify(iframe 嵌入) 可通过`智能体`菜单查看,对于`dify`类型的智能体,进入`智能体详情`,可以看到嵌入的 `dify` 页面。
+- ragflow(接口调用,非页面嵌入) 此项目中,智能体管理时,调用了`ragflow`的一些接口。在`知识库管理`、`智能体管理`部分存在相关接口调用。
+- 知识库管理模块接口全部是
+
+对于环境`http://192.168.20.119:9303/`,与此相关的项目路径如下:
+
+- 小数 `http://smartai.com:8401/`
+- ragflow `http://smartai.com:8294`
+- dify `http://smartai.com:8295`
+
+> 可从配置文件`public/config.js`文件中查看相关路径
+
+`smartai2.0`项目部署前,应保证关联的这几个项目部署无误。如果`smartai2.0`项目在运行过程中出现了异常,尤其是上面提到的几个关键位置,在排错时,应该考虑与此关联的项目。
+
+由于`dify`是通过服务端渲染的方式开发,使用微前端嵌入过程中出现了一些棘手的问题,故采用`iframe`的方式嵌入,为了嵌入成功,对 dify 源码做了部分更改,更改内容可查看`/docs/other-platform-dify.md`中的记录。部署时,应和`dify`管理人员确定无误。如果在后续对`dify`做了新的调整,也应该在`/docs/other-platform-dify.md`中进行补充记录。
+
 ## 兼容与支持程度
 
 注意:由于 `Vue3` 不再支持 `IE 浏览器`环境,`ArcoVue` 也不再支持 `IE 浏览器`环境。[参考](https://arco.design/vue/docs/start#Vue-%E7%89%88%E6%9C%AC),此项目也不支持`IE 浏览器`环境。

+ 50 - 0
docs/other-platform-dify.md

@@ -172,3 +172,53 @@ function handleMessage(event) {
 
 window.addEventListener("message", handleMessage, false);
 ```
+
+## 2024-12-13 dify 添加`token`参数处理
+
+为了解决嵌入登录问题,修改部分代码。
+
+需求描述:`大模型2.0`使用`iframe`嵌入`dify`,需要进行登录,此时在嵌入时,将`token`放入`url`后面,`dify`中需要处理此参数,将`token`通过`localstorage`进行保存,从而实现登录操作。
+
+### 嵌入时链接示例
+
+`http://192.168.20.116/explore/apps?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiODA1NGU5ZmMtNzViYS00N2FlLWFlMmItNTEwOWZlMDFkYjA0IiwiZXhwIjoxNzM0MDgzODg4LCJpc3MiOiJTRUxGX0hPU1RFRCIsInN1YiI6IkNvbnNvbGUgQVBJIFBhc3Nwb3J0In0.urrZl876HSqbgbmbvklvTvcvkTb05N21UKUSVfnlHsM`
+
+### 修改文件
+
+* 文件远程地址:`http://192.168.20.116/_next/static/chunks/app/(commonLayout)/layout-f8be35226350c774.js`
+* 文件路径: `/data/disk2/llm_platform/dify/docker/web/.next/static/chunks/app/(commonLayout)/layout-f8be35226350c774.js`
+
+### 修改内容
+
+```js
+function getSearchParams(href){
+    const url = new URL(href);
+
+    const searchParams = new URLSearchParams(url.search);
+
+    // 将键值对列表转换为一个对象
+    const res = Object.fromEntries(searchParams.entries());
+
+    return res;
+}
+
+function setUrlToken(){
+    // 获取URL值
+    const href = location.href;
+
+    const params = getSearchParams(href);
+
+    if(params.token){
+        localStorage.setItem('console_token', params.token);
+        localStorage.setItem('refresh_token', '10846d07c926fe8db065246eea370067cfce547066865e6068792e78ebee3c41e841b0c0c41d0c59d3e149dbdfc746f6ea8638f4b99735fbe97b70d2aa0d78bb');
+    }else{
+        // 找不到token,提示错误
+    }
+}
+
+setUrlToken();
+```
+
+`dify`身份凭据是`console_token`,但是在`dify`代码中,会判断`refresh_token`是否存在,如果不存在,则会跳回登录页面。
+
+此部分代码手动创建一个`refresh_token`,再配合参数中的`token`,从而实现登录流程正常。