HZERO PaaS平台升级笔记
本文是H-ZERO 升级笔记,出于学习研究目的,刚开始按照开放平台->社区与合作伙伴->文档中心 的 各产品技术文档进行升级实践。
实践系统环境:windows自带的Linux虚拟机 WSL ,linux版本在微软应用商店选择 Ubuntu22.04
=============================================
2025-09-26 升级HZERO底座从1.12.1.RELEASE 到 1.12.2.RELEASE
参考:开放平台/社区与合作伙伴/文档中心/HZERO指导手册/更新日志/v1.12版本更新/v1.12.2版本更新
主要目的:使用新的轻透主题(类SAP新风格)
1、升级种子数据
下载:https://hsop-hsop.su.bcebos.com/hsop/video/3/HSOP-BAIDU/9c098138b6bd49eba7775fb60bfa737a@hzero-resource_1.12_%E6%B8%85%E9%80%8F%E4%B8%BB%E9%A2%98.zip
执行:bash database-init.sh
报错:database-init.sh: line 15: syntax error: unexpected end of file
解决:dos2unix database-init.sh,再执行
执行 1、更新数据库 3、导入数据 成功完成
2、升级后端服务
把以下目录中POM.xml文件中的版本都从1.12.1.RELEASE替换成1.12.2.RELEASE
/d02/hzero/project
/d02/hzero/project/ps-admin/
/d02/hzero/project/ps-alert/
/d02/hzero/project/ps-file/
/d02/hzero/project/ps-gateway/
/d02/hzero/project/ps-iam-saas/
/d02/hzero/project/ps-import/
/d02/hzero/project/ps-interface/
/d02/hzero/project/ps-license/
/d02/hzero/project/ps-message/
/d02/hzero/project/ps-oauth/
/d02/hzero/project/ps-platform/
/d02/hzero/project/ps-register/
/d02/hzero/project/ps-report/
/d02/hzero/project/ps-scheduler/
/d02/hzero/project/ps-swagger/
构建并启动服务:
bash start_all.sh 所有服务 全部构建成功,启动成功;
3、升级前端组件
文档中前端版本要求:
底座 hzero-front 版本为 1.12.3-beta-international.0
主题模块 @hzero-front-ui/cfg 版本为 4.1.7
组件库 choerodon-ui 版本为 1.6.7
IAM模块 hzero-front-hiam 版本为 1.12.2
检查:
当前的 “hzero-front” : “~1.12.4-alpha.11”, 版本高于文档要求。(后来发现这实际上是个坑,以为根据版本号表面看符合要求,实际不符合,后面有详细说明)
当前 \d02\hzero\front\front\node_modules\hzero-front-ued\package.json 中 dependencies: @hzero-front-ui/cfg”: “4.1.7-alpha.9” 版本符合文档要求
当前\d02\hzero\front\front\node_modules\choerodon-ui\package.json 中显示 version”: “1.6.6”, 低于文档要求
当前 hzero-front-hiam 版本是1.12.1 低于文档要求。
在front目录下的package.json中 更新如下组件:
“hzero-front-hwkf” : “~1.20.0”,
“hzero-front-hpfm” : “~1.12.2”,
“hzero-front-hres” : “~1.12.2”,
“hzero-front-hiam” : “~1.12.2”,
“hzero-front-hmsg” : “~1.12.2”,
“hzero-front-hmnt” : “~1.12.2”,
“hzero-front-hocr” : “~1.12.2”,
“hzero-front-cusz” : “~1.3.1”,
“hzero-front-hfile” : “~1.12.2”,
“hzero-front-himp” : “~1.12.2”,
“hzero-front-hims” : “~1.12.2”,
“hzero-front-hsdr” : “~1.12.2”,
“hzero-front-hsrh” : “~1.12.2”,
“hzero-front-hkms” : “~1.12.2”,
“hzero-front-hitf” : “~1.12.2”,
“hzero-front-hgat” : “~1.12.0”,
“hzero-front-hadm” : “~1.12.2”,
“hzero-front-hevt” : “~1.12.2”,
“hzero-front-hrpt” : “~1.12.2”,
“hzero-front-hprt” : “~1.12.2”,
修改保存后,运行 yarn
Done in 37.36s
然后运行 yarn run build:ms hzero-front-hwkf,hzero-front-hpfm,hzero-front-hres,hzero-front-hiam,hzero-front-hmsg,hzero-front-hmnt,hzero-front-hocr,hzero-front-cusz,hzero-front-hfile,hzero-front-himp,hzero-front-hims,hzero-front-hsdr,hzero-front-hsrh,hzero-front-hkms,hzero-front-hitf,hzero-front-hgat,hzero-front-hadm,hzero-front-hevt,hzero-front-hrpt,hzero-front-hprt
Done in 1208.15s. 成功完成。
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
然后启动服务:
cd /d02
bash service-lowcode-start-all.sh
在 开发管理->系统工具刷新值集缓存后使用。
4、验证
问题1、在主题选择界面,新的轻透主题可以选择,不过轻透主题的图标裂了,应用主题后,选择控制台就白屏了。
分析:
查nexus库:
hzero-front-1.12.3-beta-international.0.tgz Mon Sep 22 06:59:56 Z 2025 10402507
hzero-front-1.12.4-alpha.11.tgz Mon Jun 16 01:24:14 Z 2025 11503602
我们发现 ,hzero-front-1.12.3-beta-international.0是9月22日发布的,而hzero-front-1.12.4-alpha.11是6月16日发布的。所以这是一个迷惑人的地方,应该是这个原因。
解决方案:
把hzero-front 从hzero-front-1.12.4-alpha.11 更新到 hzero-front-1.12.3-beta-international.0
package.json 中更改为:
“hzero-front” : “1.12.3-beta-international.0”,
保存后执行:
yarn
Done in 30.75s
yarn run build:ms hzero-front
Done in 120.03s.
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
再次验证:问题依旧
备注:yarn之后在node_mudule目录下hzero-front目录下的package.json 中看不到对choerodon-ui的依赖关系,但在编译后的dist目录下的hzero-front目录下的package.json 中可以看到:
“choerodon-ui”: {
“version”: “1.6.6”
choerodon-ui的升级文档:https://open.hand-china.com/choerodon-ui/zh/docs/other/version-upgrade
yarn list choerodon-ui
└─ choerodon-ui@1.6.6
说明最终编译后的hzero-front使用的choerodon-ui的版本没有达到文档要求,这个问题怎么解决?
查豆包,说要执行 yarn add choerodon-ui@1.6.7 -W 进行升级
执行后报错:error Invariant Violation: expected workspace package to exist for “choerodon-ui”
查 豆包说是 原来的package.json中强制了choerdon-ui的版本:
“resolutions”: {
“choerodon-ui”: “^1.6.6-alpha.25”, // 强制锁定版本,优先级高于 devDependencies 和安装命令
// 其他锁定…
}
要改package.json,于是就 把package.json 中改成:
“choerodon-ui” : “1.6.7”, 然后再次执行:
yarn add choerodon-ui@1.6.7 -W
Done in 31.07s. 成功了。
这条命令会自动更新根目录下package.json中的devDependencies下choerodon-ui版本 “choerodon-ui”: “1.6.7”, 但不会自动更新resolutions段落的choerodon-ui版本,所以两者不一致是会报错。 这条命令成功的效果跟手动同时更改package.json中的devDependencies下choerodon-ui版本和resolutions段落的choerodon-ui版本之后再执行yarn是一样的。
在node_module/choerodon-ui/package.json 中看到版本是1.6.7
问豆包,这个更新成功后,是否有重新编译其他模块,豆包说这个事核心模块,被很多子项目依赖,需要重新编译所有子项目
但我看dist目录下个子模块的package.json, 只有hzero-front中的package.json的lib用了choerodon-ui,其他子模块都是用了hzero-front,而没有直接用choerodon-ui, 所以我判断更新了 choerodon-ui之后只需要单独编译hzero-front即可。
尝试:
执行命令:
yarn run build:ms hzero-front
Done in 112.22s.
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
重启服务,
再次验证:还是一样,问题依旧
打开dist/packages/hzero_front_hiam/package.json 看到其依赖的hzero-front还是原来版本
“hzero-front”: {
“version”: “1.12.4-alpha.18”
这说明其他子模块的前端还是要重新编译一把才行。另外文档要求@hzero-front-ui/cfg@4.1.7,但当前package.json未锁定版本
“peerDependencies”: {
“@hzero-front-ui/cfg”: “*”,
所以先锁定要求的版本
yarn add @hzero-front-ui/cfg@4.1.7 -W # -W 适用于monorepo根目录安装
Done in 22.01s.
再在resolutions中锁定版本: “resolutions”: {
// 其他已有配置…
“@hzero-front-ui/cfg”: “4.1.7” // 新增此行,锁定版本
}
执行 yarn install 生效配置,并验证版本:yarn list @hzero-front-ui/cfg
└─ @hzero-front-ui/cfg@4.1.7
Done in 0.48s.
然后再重新编译所有子模块:
yarn
yarn run build:ms-all
Done in 1343.68s.
再次打开dist/packages/hzero_front_hiam/package.json 看到其依赖的hzero-front已经是新版本:
“hzero-front”: {
“version”: “1.12.3-beta-international.0”
},
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
重启服务,
再次验证:问题依旧
联系前端组,帮忙分析后发现是父模块没有编译导致的,于是单独编译父模块:
yarn run build:app
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
重启服务,
再次验证: 成功了,可以正常使用轻透主题了。
问题解决。
总结:建议hzero 1.12.2 升级文档能改进, 并给出更加具体的给出实操步骤,可避免类似上面的摸索过程,节省时间,具体包括:
1、升级种子数据的database-init.sh 在打包前就把windos格式转成liunx格式(当前文档中是windows格式,执行会报错)。
2、明确提示:hzero-front的 版本 1.12.3-beta-international.0 比 1.12.4-alpha.11 更新,不要被版本号误导。
3、重点提醒主题模块 @hzero-front-ui/cfg 版本为 4.1.7 和 组件库 choerodon-ui 版本为 1.6.7 的要求 可以用以下命令实现(前端不熟悉的人并不知道如何实现文档的要求):
yarn add @hzero-front-ui/cfg@4.1.7 -W # -W 适用于monorepo根目录安装
yarn add choerodon-ui@1.6.7 -W #若遇冲突,需要把著工程目录下的package.json 中resolutions 段的choerodon-ui版本改成跟1.6.7一致。
4、重点提醒前端工程主目录下的package.json更改之后,升级涉及的子模块都编译之后,务必记住不要忘了编译父模块 (否则会导致轻投主题图标丢失和 进入控制台白屏 ,无法实际使用轻透主题)
#编译子模块
yarn run build:ms 子模块名1,子模块名2,……
#编译父模块
yarn run build:app
问题2: AIGC平台/模型对接配置/模型测试 出错:点测试没反应,前端检查错误是:
请求URL http://dev.hzero.com.cn/v1/open/chat/common
请求方法:POST
状态代码:405 Not Allowed
分析:
这个问题是升级HZERO 1.12.2之后出现的,之前AIGC平台单独升级测试过没有问题,是升级底座和主题导致了AIGC平台的问题。
控制台输入 env ,输出有问题:AIGC_HOST是空的,正常应该是 http://aigc.hzero.com.cn
{
“AIGC_HOST”: “”,
“API_HOST”: “http://localhost:8080”,
“WEBSOCKET_HOST”: “http://localhost:8080/hpfm/sock-js”,
“WEBSOCKET_URL”: “http://localhost:8080/hpfm/sock-js”,
“HZERO_FILE”: “http://localhost:8080/hfle”,
“AUTH_HOST”: “http://localhost:8080/oauth”,
“LOGIN_URL”: “http://localhost:8080/oauth/oauth/authorize?response_type=token&client_id=localhost”,
“LOGOUT_URL”: “http://localhost:8080/oauth/logout”,
“AUTH_SELF_URL”: “http://localhost:8080/iam/hzero/v1/users/self”,
“PORTAL_AUTH_SELF_URL”: “http://localhost:8080/iam/hzero/v1/users/portal-self”,
}
看了下生成的DIST目录下的index.html 发现里面的变量直接就是:
env[“AIGC_HOST”] = “”;
env[“API_HOST”] = “http://localhost:8080”;
env[“WEBSOCKET_HOST”] = “http://localhost:8080/hpfm/sock-js”;
env[“PLATFORM_VERSION”] = “saas”;
env[“CLIENT_ID”] = “localhost”;
env[“BASE_PATH”] = “/”;
env[“PUBLIC_URL”] = “/”;
没有需要被替换的 BUILD_变量名
看起来,工程编译目标dist目录下的index.html 中的环境变量定义是直接来自 \d02\hzero\front\front\config\config.ts的:
config.ts内容:
// 配置环境变量
define: {
‘process.env’: {
AIGC_HOST:”,
API_HOST: ‘http://localhost:8080’,
WEBSOCKET_HOST: ‘http://localhost:8080/hpfm/sock-js’,
PLATFORM_VERSION: ‘saas’,
CLIENT_ID: ‘localhost’,
},
},
所以config.ts 内容不对,导致编译后的index.html不存在 BUILD_API_HOST,BUILD_AIGC_HOST…
所以就尝试直接更改config.ts 中的环境变量,把这部分内容从config.prod.ts中拷贝过来,然后单独编译主模块,看看编译后的index.html 是否已经变化:
更改 config.ts内容:
// 配置环境变量
define: {
‘process.env’: {
PUBLIC_URL: ‘/BUILD_PUBLIC_URL/’,
BASE_PATH: ‘/BUILD_BASE_PATH/’,
API_HOST: ‘BUILD_API_HOST’,
AIGC_HOST:’BUILD_AIGC_HOST’,
PLATFORM_VERSION: ‘BUILD_PLATFORM_VERSION’,
WEBSOCKET_HOST: ‘BUILD_WEBSOCKET_HOST’,
CLIENT_ID: ‘BUILD_CLIENT_ID’,
ENV_NAME: ‘BUILD_ENV_NAME’,
BUILD_ENV_ID: ‘BUILD_BUILD_ENV_ID’,
PACKAGE_PUBLIC_URL: ‘BUILD_PACKAGE_PUBLIC_URL’,
},
},
更改后执行: yarn run build:app
Done in 8.97s.
按照前端组的说法,新版的替换范围很小了,基本只需要替换index.html中的内容,新的替换脚本在:
d02\hzero\front\front\docker\enterpoint.sh , 把这个脚本拷贝到 \d02\hzero\front\enterpoint_replace.sh , 然后根据自己的实际情况做了修改,用来替代原来的 run-front.sh
更改 \d02\hzero\front\front\apply_update_to_runtime_env.sh , 调用run-front.sh 改成 enterpoint_replace.sh
运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
重启 nginx
systemctl restart nginx
浏览器清缓存,重新登录访问:
浏览器/检查/控制台 看变量
env.AIGC_HOST :’http://aigc.hzero.com.cn’ 已经正确了。
再次点击:AIGC平台/模型对接配置/模型测试 ,已经正常了。
问题解决.
问题3:AIGC平台/企业应用库/应用主页/个人问答,测试:问:汉得AIGC平台会用到这个AIGC_HOST变量吗?
结果:知识问答检索异常,请联系管理员,模型请求产生未知异常,请稍后重试,异常信息为: [WebClientResponseException: 401 error, “Invalid token”]
分析:
查HKMS日志:docker logs hkms ,显示:
DEBUG Starting new HTTP connection (1): dev.hzero.com.cn:8088
DEBUG http://dev.hzero.com.cn:8088 “POST /v1/open/chat/kms HTTP/1.1” 200 None
(utils.py:26) PERFORMANCE (767039bb-a25e-46ac-94bd-cf94ee2f0e2d): LLM_TimeToFirstToken:: 0.982997 seconds
(execute_task.py:39) haip.error.model_request.unknown_exception – 模型请求产生未知异常,请稍后重试,异常信息为: [WebClientResponseException: 401 error, “Invalid token”]
看起来是KMS调用 HAIP服务的 /v1/open/chat/kms 出问题了
查 HAIP服务的日志,可以看到一段相关错误:
Error has been observed at the following site(s):
*__checkpoint ⇢ 401 UNAUTHORIZED from POST https://api.siliconflow.cn/v1/chat/completions [DefaultWebClient]
看起来是调用硅基流动的API引发的错误,但奇怪的是我默认配置的是火山方舟的,难道是“个人问答” 这个应用默认配置了硅基流动的对话模型? 不可能吧,拿我9月17日测试正常用的也是火山方舟的呀,根本没有配置过硅基流动的账号。
唉,不管了,我注册过硅基流动的,我有API KEY,先把那个系统默认的硅基流动账号的API给添加上去。结果还真好了。
但是“个人问答”的配置,我看不到,问了姜州,说正常应该在“企业应用库” 下面的卡片中看到“个人问答”,这个地方进去可以配置,但我的系统中没有,而且我新建应用后可以看到新增的卡片,但点击进去也是空白,没有配置界面。 姜州判断是前端问题。
看了下dist/package/hzero_front_haip/package.json ,依赖的 hzero-front版本还是之前的,并非最新的, 可能上次运行 yarn run build:ms-all 的时候,因为haip的版本正在项目根目录下package.json中没有改,所以没有依赖新的hzero-front重新编译:
“hzero-front”: {
“version”: “1.12.4-alpha.18”
执行动作 yarn run build:ms hzero-front-haip
再查看,就依赖到新版本了:
“hzero-front”: {
“version”: “1.12.3-beta-international.0”
},
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
重启服务,
再次验证:更新后新增的卡片,但点击进去也是空白的问题解决了,已经可以看到配置界面了,不过”个人问答“的卡片还是没有。
后续继续查,是否数据问题。
我新建了两个应用 “我的简易智能体” 和 “我的HZERO运营知识库” ,然后去数据库查表里面的内容,在HAIP库下面看到haip_application开头的表,然后逐个看里面内容,发现了问题:
在haip_application_admin表中,我新建的应用是有的,但系统自带的“个人问答”没有在里面,结合界面上应用的 管理员配置界面可以知道,这张表是存储应用的管理员配置的。
所以解决方法就是:在这张表上插入两条记录,把“个人问答”的管理员用户和角色给配置上。具体往表里插入的内容只要参考我新建的应用数据即可。
完成插入后刷新 ”企业应用库“ 界面,就可以看到”个人问答“这个应用了。
点击进入看其配置,问答处理模型配置的是:默认对话模型, 继续查 模型组合配置,默认对话模型账户组合中目前配置的账户确实是"硅基流动-DeepSeek-V3 .
这就把问题原因对上了。
备注: 关于系统预定义的应用“个人问答”, 在企业应用库的卡片管理处看不到的问题,后来跟姜州沟通,说其实也不用那么麻烦要去数据库插记录, 可以把全局配置那的应用权限控制关掉就能看到了 ,试了一下确实可以。
问题解决。
问题4:在知识库问答结果文档引用切片的预览问题, 那些切片的Html源码可以看到,但预览报错 ”未定位到具体片段,已帮您打开来源文件“ ;
分析:
在文档管理的地方,切片预览是正常的,姜州说是前端问题,需要找前端看一下。
跟前端沟团队通后发现是调用的第三方工具库的一个bug:https://github.com/zyl-ui/vue-file-viewer, 正则表达式处理时把文件扩展名给匹配错了,云强是这个开源工具的贡献者,他说会去修复这个Bug,然后发给新版的hzero-front-haip过来(当前版本是”hzero-front-haip”: “1.6.1-alpha.1″)。
解决方案:
云强修复了bug, 发了一个修复版hzero-front-haip@1.6.1-alpha.2.3
执行:前端升级到这个版本,package.json中把hzero-front-haip版本改到1.6.1-alpha.2.3 修改保存后:
yarn
Done in 39.99s.
yarn run build:ms hzero-front-haip
Done in 446.39s.
bash apply_update_to_runtime_env.sh
replace complete!
再起AIGC平台服务,再次测试,这次可以正常预览切片了。
问题解决。
问题5:由于内存少,milvus向量库经常因为OOM原因被杀掉
分析:
个人使用的话,数据量不会很大,按照豆包的比较,数据量在千万级以下用ES就可以,大于亿才必须用milvus. 所以可以考虑使用ES作为默认向量库替代milvus, 这样就可以去掉milvus,节省内存。
解决方案:
1、AIGC 全局配置中,把知识库检索的向量库类型 从milvus改成 ElasticSearch
2、文档管理 把每个文档重新进行向量同步
3、停掉milvus服务
4、重启动aip-app 和 aip-server服务
测试:个人问答,问题:AIGC_HOST 这个变量的作用是?
回答的内容跟使用milvus向量库时几乎相同。
问题解决。
问题6:新建一个问答类应用:“我的HZERO运营知识库”,用火山方舟的DeepSeek V3模型作为对话模型,测试问题:“AIGC_HOST 这个变量的作用是?”结果回答的时英文,而且没有正确回答。
分析:
更改“我的HZERO运营知识库”问答处理模型为“默认对话模型”(硅基流动的DeepSeekV3),跟“个人问答”一致,结果回答还是英文,而且没有回答出来,看来不是模型账户原因。
更改“个人问答”问答模型为“Jack对话-Deep Seek-V3”(火山方舟的DeepSeekV3), 测试同样的问题,没有正确回答。 再把问答模型改回“默认对话模型”,这次坏了,回答是“信息不足,无法回答” 没有引用知识库内容,直接用大模型兜底了。也就是说配置跟原来一样,却回不到原来正确回答问题的状态了。
查HKMS的日志,docker logs hkms 发现HKMS服务检索到了切片,并且跟提示词一起构建了完整的上下文。所以这一步没有问题。 再查haip-app的服务日志发现问题“ : [知识问答] — [服务调用] — [请求为空]”向量数据库缓存更新,刷新内存数据:
[知识问答] — [服务调用] — [请求为空]
所以问题出在HAIP-APP服务。
重启HAIP-APP服务,再测,问题依旧。
问另一个问题“集星獭是什么?” ,结果没有回答出来,换一种问法“汉得的集成平台名称是什么?”,结果能正确回答“汉得的集成平台名称为 H-ZERO iPaaS集成平台”集星獭” ,这说明什么?
执行:
a、在AIGC平台/文档库管理/共享文档/hzero运营文档 下面添加各平台产品介绍的PDF文件并完成向量同步。
b、在AIGC平台/知识库定义/HZERO运营知识库/编辑/知识资源/HZERO运营知识库/资源详情/选择添加文档目录《hzero运营文档》,这样就把《HZERO运营知识库》和《hzero运营文档》目录关联起来了。
c、在AIGC平台/知识库定义/HZERO运营知识库/编辑 点击上面的【测试问答】按钮
d、在测试问答界面,展开左边的配置,检索模式选择向量检索+全文检索+问题索引,对话模型选择Jack对话-Deep Seek-V3,其他默认
e、测试问题“集星獭是什么?” 回答了太多跟零衍相关的信息,不准确。看其引用的文档来自于《零衍系统管理平台推广V1.3.pdf》和《汉得信息集成平台产品介绍1.7.0.PDF》, 配置中使用的相似度最高的片段数量设置是3,这三个片段中前2个来自 《零衍系统管理平台推广_V1.3.pdf》,后1个来自《汉得信息集成平台_产品介绍1.7.0.PDF》,显然由于片段数量设置太少,导致主要的信息来源文档中的片段被忽略了。
调整 “使用的相似度最高的片段数量” 参数为10 ,再次测试问题 “集星獭是什么?”,回答基本是答到点子上了。
说明在RAG应用中,知识库中的词义相关的但对目标问题针对性不强的知识越多,所造成的干扰越多,回答的问题越可能偏离度大。应遵循“少而精”的原则。
f、测试问题“AIGC_HOST这个变量的作用是什么?” 系统会给出英文回答。在测试“请问,AIGC_HOST这个变量的作用是什么?” 系统会给出中文回答。说明问题的开头语言决定了回答的语言。
问题解决。
问题7:文档库管理/共享文档/hzero运营文档/导入文档/文件 ,这里如果选择一个文件夹下的所有文档,假设有10个文档,这些文档会进来,切片,同步向量,刷新后发现这10个文件是同一个文件名。
这应该是个Bug;
实际查看某个文件的切片,发现文件名“移动技术平台-海马汇介绍-建投案例.pdf” 点进去看切片确实工作流的内容。看起来刚才导入的10个文件,内容是对的,文件名被处理错了。
如果选择导入目录,选择整个目录,是可以正确处理的。
问题8:AIGC平台/知识库定义/编辑/资源详情/ 具体文档目录 点击展开 , 会出现白屏。
分析:检查网络后端API返回正常, 是不是前端问题?
跟产研前端基础组沟通了下,他们分析后建议升级choerodon-ui 到1.6.8-alpha.1,我目前是choerodon-ui”: “1.6.7”的:
修改 package.json
升级依赖(devDependencies 和 resolutions两个地方都要改):
“choerodon-ui”: “1.6.8-alpha.1”,
保存后,yarn
Done in 22.52s
检查 node_modules/choerodon-ui/package.json ,确认是1.6.8-alpha.1版本;
然后删掉 dist/packages/hzero_front 文件夹
然后重新编译生成 dist/packages/hzero_front 文件夹就可以了
yarn run build:ms hzero-front
Done in 106.97s.
bash apply_update_to_runtime_env.sh
replace complete!
systemctl restart nginx
再起AIGC平台服务,浏览器清空缓存,再次登录测试,还是白屏。
前端组在对后端返回的jason数据做验证之后,配合检查知识库定义的代码后,发现是 表格记录的父子id有重复,导致的。
已经确认这是一个隐蔽的bug,需要修复,已经给对应的产品组同事反馈了,会调整 知识库定义的代码,这个是aigc应用的问题,不是很紧急,这里不能用也可以在文档库定义的地方查看,不用发紧急版本,产品组计划就随着常规节奏修复发版。
产品前端组发来了AI前端的修复版本:hzero-front-haip@1.6.1-alpha.3
修改packagejson ,更改 “hzero-front-haip”: “1.6.1-alpha.3” 保存
yarn
Done in 20.27s.
yarn run build:ms hzero-front-haip
Done in 304.34s.
bash apply_update_to_runtime_env.sh
启动服务,再测试,可以正常显示,没有出现白屏。
问题解决。
问题9:在“HZERO运营知识库”的【测试问答】界面, 选择jack-对话-deepseek-r1 作为对话模型,问问题“集星獭是什么?” 时出现错误“知识问答检索超时,请稍后重试”
分析
docker logs hkms 显示知识切片+提示词 组合上下文正常,调用aip-app服务 http://dev.hzero.com.cn:8088 “POST /v1/open/chat/kms HTTP/1.1” 200 700 返回 LLM_ResponseTime:: 33.828149 seconds
查aip-app服务日志 显示错误 io.choerodon.core.exception.CommonException: haip.warn.kms.node.timeout
[hzero-aip-app] [ kms-flux-14] o.h.a.k.d.e.ExecutorWrapperWithFlux : [知识问答] — [执行错误] — [错误信息] : 知识问答检索超时,请稍后重试
查aip-app服务的yml中关于检索超时的配置:
knowledge:
# 超时配置
timeout:
# Q&A检索超时
qa: ${HZERO_KNOWLEDGE_TIMEOUT_QA:120s}
# 图谱检索超时
kg: ${HZERO_KNOWLEDGE_TIMEOUT_KG:120s}
# 文档检索超时
doc: ${HZERO_KNOWLEDGE_TIMEOUT_DOC:300s}
# 文档图谱组合检索超时
doc_kg: ${HZERO_KNOWLEDGE_TIMEOUT_DOC_KG:300s}
# 兜底检索超时
empty: ${HZERO_KNOWLEDGE_TIMEOUT_EMPTY:120s}
# 配置超时
config: ${HZERO_KNOWLEDGE_TIMEOUT_CONFIG:30s}
# 深度思考超时
deep: ${HZERO_KNOWLEDGE_TIMEOUT_DEEP:600s}
看起来,也就是 “配置超时” 设置得小了点,把这个改到120S,然后重启 aip-app服务。再次测试,问题依旧;
把其他超时配置全部改到600s,再试, 这次就正常输出了。
问题解决。
问题10:
文档《班翎流程平台介绍.pdf》 问题索引向量同步报错:
分析:
aip-server后台服务日志报错信息是:
[hzero-aip] [ EX_DOC-0] o.h.a.d.d.e.c.SyncQuestionVectorCommand : [EX] call model error, chat request:
org.hzero.aip.common.executor.exception.ExecuteException: haip.warn.doc.extractor.callModelError
Caused by: io.choerodon.core.exception.CommonException: org.apache.velocity.exception.ParseErrorException: Encountered
[hzero-aip] [ EX_DOC-0] o.h.a.c.e.i.RedisBackupRequestHandler : [EX] 同步任务执行异常,进入重试队列: 0@DOC@2
[EX] 执行错误, requestKey: 0@DOC@2, command: SYNC_QUESTION_VECTOR, error:haip.warn.doc.extractor.callModelError
[hzero-aip][ EX_DOC-3] o.h.aip.model.infra.helper.ModelHelper : 调用对话大模型异常
java.lang.RuntimeException: java.util.concurrent.TimeoutException
把aip-server后台服务日志报错信息给元宝分析,结论是:
核心问题是:您的系统在调用对话大模型(如DeepSeek)时,设置的超时时间不足以让模型完成复杂的推理任务。
直接表现:日志显示,在 org.hzero.aip.model.domain.service.ModelInvokeService.invokeSync 方法中,通过 CompletableFuture.get() 获取结果时超时,抛出了 TimeoutException
任务背景:当前任务是为文档“班翎流程平台介绍.pdf”生成问题索引,这是一个需要大模型深度理解和内容概括的CPU/GPU密集型任务。输入的指令(Prompt)非常详细,要求模型基于6W3H要素进行分析并生成大量高质量问题,这必然需要较长的处理时间。
解决方案:
1. 调整超时设置(最直接有效)
检查并延长调用大模型服务的超时时间配置。根据日志,任务运行了约2分钟,建议先将超时时间设置为5-10分钟,并根据模型的实际性能进行调整
在aip服务的application.yml中,针对大模型的超时设置,全部加个0,然后保存:
connection:
# 大模型连接超时时间
connect-timeout: ${HZERO_AIP_HTTP_CONNECT_TIMEOUT:300000}
# 大模型读取超时时间
read-timeout: ${HZERO_AIP_HTTP_READ_TIMEOUT:1000000}
# 大模型写入超时时间
write-timeout: ${HZERO_AIP_HTTP_WRITE_TIMEOUT:5000}
保存后 bash run.sh 重新构建启动aip服务。 再次尝试 ,文档《班翎流程平台介绍.pdf》生成问题索引向量同步成功。
问题解决。
问题11:文档《H-ZERO -Lite版本的部署笔记V2.docx》 问题索引向量同步报错:
界面报错信息是:提取文档调用大模型时发生错误: org.apache.velocity.exception.ParseErrorException: Encountered “:http://dev.hzero.com.cn/workplace}\n\n\u66f4\u6539\u5b8c\u914d\u7f6e\u540e\u542f\u52a8\u6210\u529f\uff0c\u9a8c\u8bc1\uff1a\n\n\n\u5728redis\u7f13\u5b58\u7684db3\u4e2d\u7f13\u5b58\u4fe1\u606f\uff1a\n\n\n\n” at haip[line 30, column 83]
Was expecting one of:
“[” …
“|” …
“}” …
“}” …
分析:
《H-ZERO -Lite版本的部署笔记V2.docx》有232页
这个错误是在aip服务的application.yml中,针对大模型的超时设置,全部加个0之后测试出来依然存在的错误。
但这个错误是提交任务后很快就反馈错误结果了,不会等很久,跟timeout无关。看起来跟数据有关,是数据中存在特殊格式。看起来是少了什么括号了。
上面那一堆乱码,转换成中文可读格式是:http://dev.hzero.com.cn/workplace}更改完配置后启动成功,验证:在redis缓存的db3中缓存信息:
针对这个文档单独提交 问题索引向量同步任务之后aip-server服务后台动作是:
2025-10-13T11:12:34.870+08:00 INFO 9056 — [hzero-aip] [ submit-task-24] o.h.a.c.executor.impl.RedisRequestQueue : [EX] enqueue request: 0@DOC@2
2025-10-13T11:12:34.985+08:00 INFO 9056 — [hzero-aip] [ SR_DOC] o.h.a.c.executor.impl.RedisRequestQueue : [EX] dequeue request: 0@DOC@2
2025-10-13T11:12:34.986+08:00 INFO 9056 — [hzero-aip] [ SR_DOC] o.h.a.c.e.i.RedisBackupRequestHandler : [EX] backup request: 0@DOC@2, time: 1760325154986
2025-10-13T11:12:35.007+08:00 INFO 9056 — [hzero-aip] [ SR_DOC] o.h.a.c.e.impl.DefaultExecuteScheduler : [EX-DOC] submit execute resource: 0@DOC@2
2025-10-13T11:12:35.013+08:00 INFO 9056 — [hzero-aip] [ EX_DOC-24] o.h.a.c.e.impl.DefaultRequestHandler : [EX] request handle resource: 0@DOC@2
把更详细的日志发元宝分析后认为是文档内容含有特殊字符, Velocity 引擎未进行转义处理导致的。
【腾讯文档】更多详细错误信息如下: 2025-10-13T11:13:30.156+08:00 ERROR 9056 — [hzero-aip] [ EX_DOC-24] org.apache.velocity.parser
https://docs.qq.com/aio/DYlFPc2hueGpJcHFp
当前用的对话模型是deepseekv3, 换个环境到trail环境,用openai的gpt对话模型试试看。
测试结果:错误是一样的。
问题12:文档《汉得数字化平台介绍1.11.10.pdf》问题索引向量同步报错:
java.util.concurrent.ExecutionException: org.hzero.aip.model.domain.exception.ReactiveFailureException: model reactive failure
《汉得数字化平台介绍1.11.10.pdf》有244页;
这个文档在trail环境用用openai的gpt对话模型是没问题的。看起来是模型的问题。
更改模型组合,把里面的deepseekV3.1去掉,只保留deepSeekV3, 再测试,后台服务有错误日志:
[hzero-aip] [ EX_DOC-25] org.hzero.core.util.JsonUtils : Unexpected end-of-input: was expecting closing quote for a string value
at [Source: REDACTED (StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION disabled); line: 94, column: 18] (through reference chain: java.util.ArrayList[91])
[hzero-aip][ EX_DOC-25] o.h.a.d.d.e.c.SyncQuestionVectorCommand : extract question response null, origin text:
看起来是有些片段调用大模型生成问题索引的时候,大模型返回为空。
不过在运行了1个小时候之后,还是成功完成了。
问题解决。
=============================================
2025-09-15 升级灵猿AI中台 从1.6.0.ALPHA.2.7 到 1.6.1.ALPHA.1
参考 开放平台/社区与合作伙伴/文档中心/汉得灵猿 AI 中台 1.6.1.ALPHA/升级指南/升级到1.6/从1.5升级到1.6/v1.6.1 版本更新
服务版本:1.6.1.ALPHA.1
发布时间:2025年08月25日
前端版本:1.6.1-alpha.1
数据版本:1.6.AIP-BETA
1、升级种子数据:
灵猿AI中台 并没有提供Git的方式获取种子数据,需要到选配平台选配后下载获得:
在 开放平台/开发者/项目中心/在线选配/服务端选配/, 父组件选择HZERO 1.12.1 ,组件选择aip-app 和 aip-server两个组件,选择后获得种子数据、前后端工程。
实际上,对升级而言,这种选配的做法并不实用。 因为对于前端组件,我们只需要知道更新哪几个服务的前端到什么版本号即可,我们会在我们自己的大前端工程中去更新这些组件的版本号即可,并不需要额外的前端工程文件。后端服务组件也是同样道理。
而且,选配下来的aip-app工程中的POM文件中的版本号也对不上,那里面是1.6.1.ALPHA,但我们的升级文档中明确是1.6.1.ALPHA.1, 选配下来的POM文件中的版本号在制品库可能不存在。
对于种子数据,选配下来的种子数据,在application.yml文件中并没有显示AI中台种子数据的版本,而是显示了一个HZERO 的版本 data: version: 1.12.RELEASE ,这个其实会 给读者带来困扰,因为升级文档中要求种子数据版本是:1.6.AIP-BETA。只有点进种子数据目录下具体的Excel文件中可以看到有些数据日期是2025-08-28 ,才能猜测这个种子数据可能符合1.6.1的要求,因为1.6.1的发布日期是2025-08-25;
建议在升级文档中要求 数据版本:1.6.AIP-BETA 的地方,像飞搭一样直接给这个种子数据的git地址,让读者可以直接下载。
灵猿AI中台 坚持用选配的方式下载种子数据,不过说后面改进选配,在选配的结果目录下放个说明文件,明确显式 说明各模块的种子数据版本,这也是个解决方案。
执行: 把刚才选配写下来的种子数据进行安装
执行 1、更新数据库 3、导入数据(AIP服务) 成功完成
说明:第2步,数据修复,不用做,因为里面全是HZERO 平台本身的数据修复,跟AIP没有关系,我的HZERO 基础平台是最新的1.12.1 这一步不用做。
2、升级后端服务
把 2个目录下的POM.xml文件中的版本都从1.6.0.ALPHA.2.7替换成1.6.1.ALPHA.1
/d02/hzero-aipaas/project/ps-aip-app
/d02/hzero-aipaas/project/ps-aip-server
在上述上个微服务目录下运行 bash run.sh 构建新版本
启动这2个服务,都成功启动。
3、升级前端组件
更改 /d02/hzero/front/front/package.json文件
cd /d02/hzero/front/front/
cp package.json package.json.bak20250916
编辑 package.json文件
“devDependencies” : {
“hzero-front-haip” : “1.6.0-alpha.2”,
更改成:
“hzero-front-haip”: “1.6.1-alpha.1”,
hzero-front 不用管了,已经是~1.12.4-alpha.11 ,比文档要求的 “~1.11.38-alpha.0” 版本高;
修改保存后,运行 yarn
Done in 27.10s.
然后运行 yarn run build:ms hzero-front-haip
Done in 321.90s. 成功完成。
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
4、升级试用 docker的几个服务:参考 开放平台/社区与合作伙伴/文档中心/汉得灵猿 AI 中台 1.6.1.ALPHA/中间件部署
下载
wget https://hsop-hsop.su.bcebos.com/hsop/video/3/HSOP-BAIDU/1578eb1c086048c081ead14967515284@hzero-aigc-docker-compose-1.6.1.zip
备份原来的:
cd /d02/hzero-aipaas
cp -rf hzero-aigc-docker-compose hzero-aigc-docker-compose.bak20250916
然后把刚才下载的压缩文件改名,解压缩
unzip hzero-aigc-docker-compose-1.6.1.zip
提示 替换时选择 A
replace hzero-aigc-docker-compose/elastic/analysis-icu-8.12.2.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
4.1 HKMS yml文件修改:
在HKMS容器的yml文件中添加extra_hosts:(这一步的原因:参考:H-ZERO -Lite版本的部署笔记V2.docx/十一、AI平台安装/四、AI平台功能验证/6、Docker安装环境问题)
services:
hkms:
container_name: hkms
image: registry.hand-china.com/hzero-public/hkms-python:1.6.1
extra_hosts:
– “oss.hzero.com.cn:172.18.14.48″ # 格式:”主机名:IP地址”
– “dev.hzero.com.cn:172.18.14.48”
在 volumes: 上面添加限制内存的配置
deploy: # 限制容器总内存(Docker Compose v2.3+)
resources:
limits:
memory: 3g # 容器最大内存(python应用直接限制内存)
4.2 ES的yml配置更改:
原来 – m=1GB的地方改成:
- ES_JAVA_OPTS=-Xms500m -Xmx500m # 设置 JVM 堆内存为 500M
deploy: # 限制容器总内存(Docker Compose v2.3+)
resources:
limits:
memory: 1g # 容器最大内存(建议为 JVM 内存的 1.5~2 倍)
4.3 hype yml配置更改:
在 ports: 上面添加限制内存的配置
deploy: # 限制容器总内存(Docker Compose v2.3+)
resources:
limits:
memory: 500m # 容器最大内存(python应用直接限制内存大小)
4.4 milvus 添加内存配置
在 milvus_standalone_embed.sh中, sudo docker run -d \ 下面添加:
--memory="600m" \
--memory-swap="1200m" \
4.5 neo4j 添加内存配置
在 volumes:上面添加:
– ES_JAVA_OPTS=-Xms500m -Xmx500m # 设置 JVM 堆内存为 500M
deploy: # 限制容器总内存(Docker Compose v2.3+)
resources:
limits:
memory: 1g # 容器最大内存(建议为 JVM 内存的 1.5~2 倍)
实际上,相对于 hzero-aigc-docker-compose-1.6.0-ALPHA.zip, hzero-aigc-docker-compose-1.6.1.zip 只是改了HKMS的镜像版本,其他镜像版本都没变;
HKMS镜像比较大,有1.7G,新版本启动会拉新的镜像,考虑硬盘空间占用,老的版本后面在本地镜像库中要删掉。
5、验证
启动AI平台 bash service-ai-start-all.sh
脚本总执行时间: 0小时12分钟7秒
问题1、平台内置向量库(milvus)的链接配置在升级后被重置了,升级没有保留原来的链接配置,导致向量库链接失败。
修复:向量库地址 从172.0.0.1 改成 dev.hzero.com.cn:19530, 其他不改,测试成功;
问题2、平台内置向量库(ElasticSearch)的链接配置在升级后被重置了,升级没有保留原来的链接配置,导致向量库链接失败。
修复:向量库地址 从172.0.0.1 改成 dev.hzero.com.cn:9200,认证类型从 FINGERPRINT 改成 密码模式,用户名/密码:都设置成elastic , 测试:链接成功
问题3、向量检索,选择平台内置milvus库,检索“飞搭”, 报错:向量库操作失败,请联系管理员!异常信息:[UNAVAILABLE: io exception]
后台服务报错信息:[hzero-aip] [ XNIO-1 task-5] o.h.a.v.m.MilvusVectorDatabaseClient : [Milvus] searchVector error: UNAVAILABLE: io exception
org.hzero.aip.vector.exception.VectorException: 向量库操作失败,请联系管理员!异常信息:[UNAVAILABLE: io exception]
at org.hzero.aip.vector.milvus.MilvusVectorDatabaseClient.handleResult(MilvusVectorDatabaseClient.java:880) ~[hzero-aip-common-1.6.1.ALPHA.1.jar!/:1.6.1.ALPHA.1]
第二天,正要让姜州帮忙查问题,重启服务,再次测试居然就正常了,问题解决。
问题4、预置的应用:个人问答,提问问题:“飞搭是什么”测试的时候报错:
知识问答检索异常,请联系管理员
HTTPConnectionPool(host='127.0.0.1', port=8088): Max retries exceeded with url: /v1/open/embeddings/common (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f6e47b15610>: Failed to establish a new connection: [Errno 111] Connection refused'))
看起来是AIP-APP服务报错,看后台日志:
2025-09-17T10:59:22.616+08:00 WARN 10974 — [hzero-aip-app] [ model-9] o.h.a.m.d.s.GradientIntervalStrategy : EMBEDDING@HAIP.AZURE_EMBED is silenced, release time is: 2025-09-17T11:00:22.613709229
2025-09-17T11:03:06.508+08:00 ERROR 10974 --- [hzero-aip-app] [ BaseExecutor-9] o.h.aip.common.utils.DataDecryptUtils : ========== decrypt error. Illegal base64 character 2a
2025-09-17T11:03:07.387+08:00 WARN 10974 --- [hzero-aip-app] [ kms-flux-20] o.h.aip.kms.domain.chain.ChainNodeForQa : [知识问答] -- [服务调用] -- [请求为空]
2025-09-17T11:03:07.960+08:00 INFO 10974 --- [hzero-aip-app] [pool-3-thread-3] org.hzero.core.util.CommonExecutor : [>>ExecutorStatus<<] ThreadPool Name: [init-message-cache], Pool Status: [shutdown=false, Terminated=false], Pool Thread Size: 3, Largest Pool Size: 128, Active Thread Count: 0, Task Count: 200, Tasks Completed: 200, Tasks in Queue: 0
2025-09-17T11:03:08.272+08:00 INFO 10974 --- [hzero-aip-app] [ kms-flux-16] o.h.a.v.impl.RedisDatabaseRepository : 向量数据库缓存更新,刷新内存数据: 2025-09-17 10:53:19.718
感觉升级种子数据把 默认的向量模型组合中的HAIP.AZURE_EMBED又自动加回来了。我上次版本 默认的向量模型组合配置中已经把 HAIP.AZURE_EMBED 禁用掉了,这次升级后又启用了,因为我没有买AZURE的账号,所以这次升级后要再次禁用掉。
再次禁用掉就好了,问题解决。
问题5、文档管理/个人文档/上传一个飞搭产品介绍PPT,切片存向量的时候报错:
调用HKMS执行文件切片时发生错误:Failed: <MilvusException: (code=2, message=Fail connecting to server on dev.hzero.com.cn:19530, illegal connection params or server unavailable)>
之前碰到过类似问题,是milvus向量库挂掉了,解决方案:重启milvus
cd /d02/hzero-aipaas/hzero-aigc-docker-compose/milvus
bash milvus_standalone_embed.sh start
然后 在界面上点 [重新同步] ,可以成功继续,勾选 ES同步后提交后台处理,过一会反馈 ES同步成功,内容向量库同步失败;
看docker ps 看milvus-standalone 向量服务是运行的,没有挂。
看后台服务日志:
java.lang.IllegalArgumentException: 处理失败:HTTPConnectionPool(host=’127.0.0.1′, port=8088): Max retries exceeded with url: /v1/open/embeddings/common (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))
2025-09-17T11:37:27.849+08:00 WARN 10613 — [hzero-aip] [BaseExecutor-30] o.h.a.d.l.SyncFailureEventListener : 同步失败,发送站内信 :
SYNC_VECTOR,
{“lastUpdateDate”:”2025-09-17T11:37:27.804+0800″,”objectVersionNumber”:1,”versionId”:7,”documentId”:7,”versionNum”:1,”versionName”:”汉得_aPaaS平台介绍-2025V1.pptx”,”documentUrl”:”http://oss.hzero.com.cn:9000/hz-haip/haip01/0/MINIO/ff179862b45242e5897548302cd8c2a3@汉得_aPaaS平台介绍-2025V1.pptx”,”fileSize”:156337047,”defaultFlag”:1,”tenantId”:0,”docType”:”pptx”,”sourceType”:”DOC”,”deleteFlag”:0,”sourceKey”:”c67bf23357be43a6aebb0edfbad76c3b@http://oss.hzero.com.cn:9000/hz-haip/haip01/0/MINIO/ff179862b45242e5897548302cd8c2a3@汉得_aPaaS平台介绍-2025V1.pptx”,”syncVectorStatus”:”FAILURE”,”syncImageVectorStatus”:”NO”,”syncQaStatus”:”NO”,”syncGraphStatus”:”NO”,”syncQaEsStatus”:”NO”,”syncDocEsStatus”:”WAITING”,”syncLabelStatus”:”NO”,”syncSummaryStatus”:”NO”,”syncChapterStatus”:”NO”,”syncSummaryIndexStatus”:”NO”,”syncDate”:”2025-09-17T11:37:27.804+0800″,”syncMsg”:”处理失败:”,”syncInfo”:”{\”syncVectorStatus\”:\”FAILURE\”,\”syncVectorDate\”:\”2025-09-17T11:37:27.804+0800\”,\”syncVectorMsg\”:\”处理失败:\”,\”syncImageVectorStatus\”:\”NO\”,\”syncGraphStatus\”:\”NO\”,\”syncQuestionStatus\”:\”NO\”,\”syncDocEsStatus\”:\”WAITING\”,\”syncDocEsDate\”:\”2025-09-17T11:37:17.079+0800\”,\”syncQuestionEsStatus\”:\”NO\”,\”syncLabelStatus\”:\”NO\”,\”syncSummaryStatus\”:\”NO\”,\”syncChapterStatus\”:\”NO\”,\”syncSummaryIndexStatus\”:\”NO\”,\”totalLength\”:22674}”,”traceType”:”FILE”,”head”:{“lastUpdateDate”:”2025-09-17T11:37:17.000+0800″,”objectVersionNumber”:1,”documentId”:7,”documentUuid”:”c67bf23357be43a6aebb0edfbad76c3b”,”documentName”:”汉得_aPaaS平台介绍-2025V1.pptx”,”publicFlag”:0,”tenantId”:0,”deleteFlag”:0},”createdByName”:”超级管理员”,”updatedByName”:”超级管理员”,”documentUuid”:”c67bf23357be43a6aebb0edfbad76c3b”,”documentName”:”汉得_aPaaS平台介绍-2025V1.pptx”,”syncing”:false}
2025-09-17T11:37:27.853+08:00 INFO 10613 — [hzero-aip] [ EX_DOC-3] o.h.aip.vector.DatabaseClientManager : [Vector] 创建向量库客户端: {“databaseUuid”:”DEFAULT_ES”,”databaseType”:”FulltextElastic”,”databaseCode”:”DEFAULT”,”databaseName”:”\u5E73\u53F0\u5185\u7F6E\u5411\u91CF\u5E93(ElasticSearch)”,”databaseUrl”:”http:\/\/dev.hzero.com.cn:9200″,”username”:”elastic”,”extConfig”:null,”tenantId”:0}
2025-09-17T11:37:28.084+08:00 INFO 10613 — [hzero-aip] [ EX_DOC-3] i.m.client.AbstractMilvusGrpcClient : HasCollectionParam(collectionName=T0_KMS_DOCUMENT, databaseName=null)
2025-09-17T11:37:28.091+08:00 INFO 10613 — [hzero-aip] [ EX_DOC-3] i.m.client.AbstractMilvusGrpcClient : QueryParam{collectionName=’T0_KMS_DOCUMENT’, partitionNames='[]’, outFields=[doc_id, time, text, doc_source], expr=’doc_source == “c67bf23357be43a6aebb0edfbad76c3b@http://oss.hzero.com.cn:9000/hz-haip/haip01/0/MINIO/ff179862b45242e5897548302cd8c2a3@汉得_aPaaS平台介绍-2025V1.pptx”‘, consistencyLevel=’null’, offset=0, limit=10000, ignoreGrowing=’false’}
看hkms日志: docker logs hkms , 主要错误:
Milvus连接失败 dev.hzero.com.cn:19530 Fail connecting to server… connection params or server unavailable
嵌入服务连接拒绝 127.0.0.1:8088 Connection refused [Errno 111]
看下milvus服务 是否挂掉了:
docker ps | grep milvus
啥也没有,果然挂掉了,什么原因挂掉的? OOM?
grep -i “oom” /var/log/syslog
Sep 16 23:10:06 desktop-jacksen kernel: [14237.094252] Memory cgroup out of memory: Killed process 35278 (milvus) total-vm:9918108kB, anon-rss:550404kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:2924kB oom_score_adj:0
果然是milvus被kill 了。
free
%Cpu(s): 0.9 us, 0.4 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 28068.3 total, 228.5 free, 26403.8 used, 1436.1 buff/cache
MiB Swap: 7168.0 total, 2383.0 free, 4785.0 used. 1257.4 avail Mem
28G 内存还是配置太少了;加到30G,更改后 ,重启服务
notepad $env:USERPROFILE.wslconfig
[wsl2]
最大内存限制(可填 GB 或 MB,如 8GB、4096MB)
memory=30GB
linux 虚拟机先停掉AI 平台服务,再关闭WSL服务
wsl –shutdown
再打开 ubuntu-22.04-hzero , 起AI 平台服务,再次测试,依然报错:
资源同步失败
资源名称:汉得_aPaaS平台介绍-2025V1.pptx
同步类型:内容同步(向量库)
失败原因:处理失败:HTTPConnectionPool(host=’127.0.0.1′, port=8088): Max retries exceeded with url: /v1/open/embeddings/common (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))
看hkms日志: docker logs hkms , 主要错误:
requests.exceptions.ConnectionError: HTTPConnectionPool(host=’127.0.0.1′, port=8088): Max retries exceeded with url: /v1/open/embeddings/common (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))
从HKMS日志中可以看到 , Milvus 向量库的连接完全正常,且查询逻辑执行成功,拿到了预期的 31 条数据,再看milvus服务,没有挂掉。说明这个错误跟milvus向量数据库没有关系。
分析: 因为这是容器内的日志,hkms docker容器访问的127.0.0.1 ,为什么 hkms会用这个固定地址呢? 原来是docker-compse.yml中的配置:
# MongoDB地址
MONGO_CONN: mongodb://:@127.0.0.1:27017/hgpt?authSource=admin&authMechanism=SCRAM-SHA-1
# APP URL
HAIP_HOST: http://127.0.0.1:8088
# 网关地址
FILE_SERVICE_HOST: http://127.0.0.1:8080
这些配置都要改的,改成跟升级前一致:
# MongoDB地址
MONGO_CONN: mongodb://hzer:hzero@localhost:27017/hgpt?authSource=admin&authMechanism=SCRAM-SHA-1
# APP URL
HAIP_HOST: http://dev.hzero.com.cn:8088
# 网关地址
FILE_SERVICE_HOST: http://gateway.hzero.com.cn:8080
更新后 重启hkms容器
cd hkms
docker compose down
docker compose up -d
再次测试,选择上次内容向量同步失败的文档, 做同步处理(异常同步) , 这下成功了, 问题解决。
问题6:菜单路径 AIGC中台/企业应用库/ 点击“知识库定义”,或者 “文档库管理” 或者 “Agent编排” 都显示白屏,需要回车刷新后才能正常显示。
分析: 有人认为是缓存问题,就是升级后前端相互调用的部分文件版本因为缓存导致不一致,可以清空缓存或者用无痕模式看看。 我刷新了缓存,也用了无痕模式,包括浏览器从Edge换成chrome, 结果都一样,还是有问题。
使用检查功能,然后再点击“知识库定义”看标头/网络 状态代码= 200 OK (从磁盘缓存) ,看响应里面是有index.html的内容的。
使用检查功能,然后再点击“文档库管理”看标头/网络 有两个请求URL, 一个是http://gateway.hzero.com.cn:8080/iam/v1/menu-access 状态代码= 204 No Content,看响应里面是空的。 还有个
http://dev.hzero.com.cn/haip/doc/null 状态代码= 200 OK (从磁盘缓存) ,看响应里面有index.html的内容。 回车刷新后正常,回车刷新后第一个请求URL是:http://dev.hzero.com.cn/haip/doc/document
把问题和相关现象给豆包,豆包认为是第一个调用 http://gateway.hzero.com.cn:8080/iam/v1/menu-access 没有得到正确的返回值,导致第二个调用出现null.
查最新的版本可知,hzero-aip最新的小版本已经到 1.6.1.ALPHA.1.3 了,这个比我们升级后的版本更新。
https://nexus.saas.hand-china.com/service/rest/repository/browse/Hzero-Release/org/hzero/hzero-aip/
其前端最新版本是 hzero-front-haip-1.6.1-alpha.1 , 这个跟我们升级后的版本是一致的,没有更新的了。
https://nexus.saas.hand-china.com/service/rest/repository/browse/hzero-ui/hzero-front-haip/
解决方案尝试:把后端版本升级到1.6.1.ALPHA.1.3
测试结果:问题依旧。。。
这个问题后来升级新版轻透主题的过程中,在单独编译前端工程主模块后就解决了。
=============================================
2025-09-11 升级飞搭 从 2.9.1-1.12.BETA.8 到 2.10.0.RELEASE
参考 : 开放平台/社区与合作伙伴/文档中心/汉得aPaaS平台-飞搭 2.10.0.RELEASE/本地化安装部署&升级/《飞搭升级》
1、升级种子数据:
下载2.10的种子数据:git clone -b 2.10-release git@code.choerodon.com.cn:hzero-hlod/hzero-lowcode-resource.git
下载后在application.yml 的数据源配置中把//localhost:3306后面的“/”去掉。(下载的时候后,后来把这个问题报给产品组,让他们改了,后续应该不会又问题了)
按文档执行 1、更新数据库 2、数据修复、3、导入数据
成功完成。
2、升级后端服务:
2.1 把 四个目录下的POM.xml文件中的版本都从2.9.1-1.12.BETA.8替换成2.10.0.RELEASE(注意:2.10.0.RELEASE是适配HZERO 1.11的版本;2.10.0-1.12.RELEASE才是适配HZEERO 1.12的版本,两者依赖的license服务版本不一样,服务启动命令行中使用的license agent版本也不一样,具体下面会讲到)
/d02/hzero-apaas/project
/d02/hzero-apaas/project/ps-lowcode
/d02/hzero-apaas/project/ps-modeler
/d02/hzero-apaas/project/ps-lowcodedata
在上述上个微服务目录下运行 bash run.sh 构建新版本
ps-lowcode 服务构建后启动失败:
2025-09-11 20:31:37.521 ERROR 2800 — [ main] o.s.boot.SpringApplication : Application run failed
java.lang.NoClassDefFoundError: org/springframework/core/type/classreading/ClassFormatException
mvn dependency:tree
[INFO] org.hzero:ps-lowcode:jar:2.10.0.RELEASE
[INFO] +- org.hzero:hzero-lowcode:jar:2.10.0.RELEASE:compile
[INFO] | +- org.hzero.boot:hzero-apaas-common:jar:2.10.0.RELEASE:compile
[INFO] | | +- javax.servlet:javax.servlet-api:jar:4.0.1:compile
[INFO] | | +- com.github.luben:zstd-jni:jar:1.5.2-1:compile
[INFO] | +- org.hzero.starter:hzero-starter-export:jar:1.11.4.RELEASE:compile
[INFO] | | +- org.hzero.starter:hzero-starter-redis:jar:1.11.4.RELEASE:compile
[INFO] | | | +- org.springframework.boot:spring-boot-starter-data-redis:jar:2.7.18:compile
[INFO] | +- org.hzero.license:hzero-starter-license:jar:1.1.0.RELEASE:compile
[INFO] | | +- org.hzero.license:hzero-license-core:jar:1.1.0.RELEASE:compile
[INFO] | | +- org.hzero.license:hzero-license-tool-core:jar:1.1.0.RELEASE:compile
mvn dependency:tree 后发现 2.10.0.RELEASE 默认支持的是1.11的H0 ,但我们的H0 是1.12的
在飞搭文档: 《飞搭HZERO1.12&JDK17 适配》 中提到适配HZERO 1.12版的飞搭配2.10的具体版本号是:2.10.0-1.12.RELEASE
接下来要改POM中的版本,待续。。。。
启动lowcode服务还是失败
Caused by: org.springframework.core.type.classreading.ClassFormatException: ASM ClassReader failed to parse class file – probably due to a new Java class file version that is not supported yet. Consider compiling with a lower ‘-target’ or upgrade your framework version. Affected class: URL [jar:nested:/d02/hzero-apaas/project/ps-lowcode/target/ps-lowcode.jar/!BOOT-INF/lib/hzero-lowcode-2.10.0-1.12.RELEASE.jar!/org/hzero/lowcode/common/api/controller/v1/CommonController.class]
mvn dependency:tree 依赖是 H0的1.12了,没问题
[INFO] — maven-dependency-plugin:3.8.1:tree (default-cli) @ ps-lowcode —
[INFO] org.hzero:ps-lowcode:jar:2.10.0-1.12.RELEASE
[INFO] +- org.hzero:hzero-lowcode:jar:2.10.0-1.12.RELEASE:compile
[INFO] | +- org.hzero.boot:hzero-apaas-common:jar:2.10.0-1.12.RELEASE:compile
[INFO] | +- org.hzero.starter:hzero-starter-export:jar:1.12.1.RELEASE:compile
[INFO] | | +- org.hzero.starter:hzero-starter-redis:jar:1.12.1.RELEASE:compile
[INFO] | | | +- org.springframework.boot:spring-boot-starter-data-redis:jar:3.4.1:compile
[INFO] | +- org.hzero.license:hzero-starter-license:jar:1.1.2.RELEASE:compile
[INFO] | | +- org.hzero.license:hzero-license-core:jar:1.1.2.RELEASE:compile
我们注意到这次依赖的license是1.1.2.RELEASE, 而之前的服务启动命令里面用的licenseAgent是license-agent110.jar(57K),可能是要换新版的licenseAgent,于是把licenseAgent版本换到license-agent112a.jar(61K), 再次启动bash run.sh, 这次启动成功了。
接下来把ps-lowcode,ps-modeler,ps-lowcodedata 三个服务目录下的run.sh 和 run_nobuild.sh 中的 licenseAgent 全部从license-agent110.jar(57K) 改成 license-agent112a.jar(61K)
再次启动这三个服务,都成功启动。
2.2 升级其他服务中依赖飞搭组件的版本
/d02/hzero/project/ps-iam-saas ,更新依赖hzero-apaas-common 到 2.10.0-1.12.RELEASE
/d02/hzero/project/ps-interface ,更新依赖hzero-boot-modeler-client,hzero-boot-modeler-event-client 到 2.10.0-1.12.RELEASE
/d02/hzero/project/ps-platform ,更新依赖hzero-apaas-common 到 2.10.0-1.12.RELEASE
3、升级前端组件
更改 /d02/hzero/front/front/package.json文件
“devDependencies” : {
"hzero-front-hlod" : "~2.9.1-beta.7",
"hzero-front-apaas": "~2.9.1-beta.5",
更改成:
“hzero-front-apaas”: “~2.10.0”,
“hzero-front-hlod”: “~2.10.0”,
“hzero-front-hmde”: “~2.10.0”,
“hzero-apaas-common”: “~2.10.0”,
hzero-front 不用管了,已经是~1.12.4-alpha.11 ,比文档要求的 “hzero-front”: “~1.11.32” 版本高;
修改保存后,运行 yarn
然后运行 yarn run build:ms hzero-front-hlod,hzero-front-apaas,hzero-front-hmde,hzero-apaas-common
Done in 969.29s. 成功完成。
然后运行 bash apply_update_to_runtime_env.sh 拷贝打包文件到目标目录并执行字符串替换
yarn add @feida/core@release @feida/plugin-vue-render@release @feida/shared-utils@release –registry=http://nexus.saas.hand-china.com/repository/hzero-npm-group/
yarn add @feida/vue-cli-plugin-creator@release -D –registry=http://nexus.saas.hand-china.com/repository/hzero-npm-group/
简单来说,这两条命令的作用是从指定的私有 npm 仓库中安装几个 @feida 系列的包,其中前三个是项目运行时需要的依赖,最后一个是开发时需要的依赖。使用特定的 registry 通常是为了获取内部开发的包或有访问权限控制的包。
执行时报错:
error Running this command will add the dependency to the workspace root rather than the workspace itself, which might not be what you want – if you really meant it, make it explicit by running this command again with the -W flag (or –ignore-workspace-root-check).
这个问题要再确认下,是否加 -W 标记
4、数据修复
看到开放平台飞搭文档《飞搭升级》中还要求数据修复动作
数据修复:
curl –location –globoff –request POST ‘http://gateway.hzero.com.cn:8080/hmde/v1/upgrade’ –header ‘Authorization: Bearer 615e9ab0-91d5-4e97-97d7-270b399bc806’
后台服务日志显示成功更新:
2025-09-13T18:09:05.617+08:00 INFO 35638 — [hzero-modeler] [ job-0] o.h.m.c.a.s.i.FixPublicDomainServiceImpl : [FIX] Update 0 script to public domain.
2025-09-13T18:09:05.623+08:00 INFO 35638 — [hzero-modeler] [ job-0] o.h.m.c.a.s.i.FixPublicDomainServiceImpl : [FIX] Update 0 flow to public domain.
2025-09-13T18:09:05.628+08:00 INFO 35638 — [hzero-modeler] [ job-0] o.h.b.a.c.j.d.s.impl.JobLoggerImpl : Step completed
2025-09-13T18:09:05.629+08:00 INFO 35638 — [hzero-modeler] [ job-0] o.h.b.a.c.j.d.s.impl.JobLoggerImpl : Start executing steps:修复导入/导出模板字段多语言数据
2025-09-13T18:09:05.908+08:00 INFO 35638 — [hzero-modeler] [ job-0] o.h.b.a.c.j.d.s.impl.JobLoggerImpl : Step completed
2025-09-13T18:09:05.909+08:00 INFO 35638 — [hzero-modeler] [ job-0] o.h.b.a.c.j.d.s.impl.JobLoggerImpl : Start executing steps:修复业务对象字段默认值类型不符合枚举
curl –location –globoff –request POST ‘http://gateway.hzero.com.cn:8080/hlod/v1/upgrade’ –header ‘Authorization: Bearer 702a1b9c-4334-4f1e-b885-8f1c63e9561d’
后台服务日志显示有一处报错:
2025-09-13T18:11:05.140+08:00 INFO 35873 — [hzero-lowcode] [ job-0] o.h.b.a.c.j.d.s.impl.JobLoggerImpl : Step completed
2025-09-13T18:11:05.141+08:00 INFO 35873 — [hzero-lowcode] [ job-0] o.h.b.a.c.j.d.s.impl.JobLoggerImpl : Start executing steps:修复列表行号属性样式
2025-09-13T18:11:05.359+08:00 ERROR 35873 — [hzero-lowcode] [ job-0] o.h.b.a.c.j.d.s.impl.JobLoggerImpl : Execution failed
org.springframework.dao.DataIntegrityViolationException:
Error updating database. Cause: java.sql.SQLException: Field ‘structure_id’ doesn’t have a default value
The error may exist in org/hzero/lowcode/view/infra/mapper/LowcodeStructureMapper.java (best guess)
The error may involve org.hzero.lowcode.view.infra.mapper.LowcodeStructureMapper.insertSelective-Inline
The error occurred while setting parameters
SQL: INSERT INTO hlod_structure_pub
后面解决了问题,可以再次运行,修复程序通常可以重复运行而不会产生其他问题。
5、验证
看了下原有定制开发的领域的功能,基本没问题。少量问题如下:
问题1、原来2.9版本存在的问题:业务对象LOV打开报错“程序出现错误,请联系管理员” 但不影响保存使用的问题依然存在;
问题2、新建业务对象保存的时候报错:发布失败
Execution failed 蓝图数据保存错误,请联系管理员(No instances available for hzero-lowcodedata)
后台服务日志如下:
2025-09-17T14:30:11.264+08:00 WARN 26303 — [hzero-lowcodedata] [ool-3-thread-12] org.hzero.core.util.CommonExecutor : [>>ExecutorStatus<<] ThreadPool Name: [response-pool], Pool Status: [shutdown=false, Terminated=false], Pool Thread Size: 0, Largest Pool Size: 0, Active Thread Count: 0, Task Count: 0, Tasks Completed: 0, Tasks in Queue: 0
2025-09-17T14:30:11.264+08:00 WARN 26303 — [hzero-lowcodedata] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization – cancelling refresh attempt: java.lang.OutOfMemoryError: Java heap space
Exception in thread “DiscoveryClient-%d” java.lang.OutOfMemoryError: Java heap space
Exception in thread “job-timeout-monitor” Exception in thread “redisson-timer-6-1” java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
看起来是lowcodedata服务的内存设置太少了,看内存使用情况:
jhsdb jmap –heap –pid 26303
Heap Usage:
G1 Heap:
regions = 200
capacity = 209715200 (200.0MB)
used = 207425368 (197.81624603271484MB)
free = 2289832 (2.1837539672851562MB)
98.90812301635742% used
看起来确实不够用,把服务启动命令里面的内存从200M调整到300M,重启服务; 可以正常发布业务对象。
问题解决。
问题3、导出 低代码领域的配置数据出错。(低代码版本:2.10.0-1.12.RELEASE hzero-iam版本:1.12.2.RELEASE)
平台管理员角色>低代码平台>资源管理>数据迁移>数据导出>配置数据 ,选择导出低代码POC演示租户下面 整个领域
导出进程到50%时报错:
ERROR
2025-10-09 17:32:29 服务 hzero-iam 执行数据导入失败,原因:Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not “opens java.lang” to unnamed module @7a419da4, exception: Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not “opens java.lang” to unnamed module @7a419da4
ERROR
2025-10-09 17:32:30 Execution failed 服务 hzero-modeler 远程请求 服务 hzero-iam 失败,原因: 服务 hzero-iam 执行数据导入失败,原因:Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not “opens java.lang” to unnamed module @7a419da4
ERROR
2025-10-09 17:32:30 服务 hzero-modeler 远程请求 服务 hzero-iam 失败,原因: 服务 hzero-iam 执行数据导入失败,原因:Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not “opens java.lang” to unnamed module @7a419da4
针对这个问题,低代码产品组给的建议是iam 服务启动时要加一堆参数:
–add-opens java.base/java.lang=ALL-UNNAMED
–add-opens java.base/java.lang.reflect=ALL-UNNAMED
–add-opens java.base/java.net=ALL-UNNAMED
–add-opens java.base/java.nio=ALL-UNNAMED
–add-opens java.base/java.util=ALL-UNNAMED
–add-opens java.base/java.util.concurrent=ALL-UNNAMED
–add-opens java.base/jdk.internal.loader=ALL-UNNAMED
执行:按建议在服务启动命令中增加这些参数,再重启Iam服务,再次执行导出
结果:hzero-iam 服务报错的问题没有了。
但hzero-platform又报了类似错误,于是针对hzero-platform也做了类似处理,然后重启hzero-platform服务,再次执行导出
结果:hzero-platform服务报错的问题没有了。不过又出了新的问题:
ERROR
2025-10-09 19:13:50 服务 hzero-workflow 执行模块 moduel-workflow 导出失败,原因:{2}, exception: Cannot invoke “java.util.Map.get(Object)” because “contextMap” is null
ERROR
2025-10-09 19:13:50 服务 hzero-workflow 执行数据导出失败,原因:[class java.lang.NullPointerException] Cannot invoke “java.util.Map.get(Object)” because “contextMap” is null
ERROR
2025-10-09 19:13:50 服务 hzero-workflow 执行数据导入失败,原因:Cannot invoke “java.util.Map.get(Object)” because “contextMap” is null, exception: Cannot invoke “java.util.Map.get(Object)” because “contextMap” is null
ERROR
2025-10-09 19:13:51 Execution failed 服务 hzero-modeler 远程请求 服务 hzero-workflow 失败,原因: 远程请求结果丢失, 请检查远程服务 hzero-workflow 的迁移依赖配置是否为最新配置
ERROR
2025-10-09 19:13:51 服务 hzero-modeler 远程请求 服务 hzero-workflow 失败,原因: 远程请求结果丢失, 请检查远程服务 hzero-workflow 的迁移依赖配置是否为最新配置
查开放平台文档 >社区与合作伙伴>文档中心>汉得aPaaS平台-飞搭>常见问题Q&A>数据迁移问题>4. 导入/导出时出现接口不存在提示>
hzero-workflow服务调整
在飞搭配置数据跨环境迁移时,涉及到工作流数据迁移,工作流服务需要添加如下依赖:
复制
org.hzero.boot hzero-apaas-common {apaas-version}
然后重新构建,启动服务hzero-workflow,再次执行导出,这次100%成功完成。
问题解决。
问题4、导出 低代码领域的业务数据出错。(低代码版本:2.10.0-1.12.RELEASE hzero-iam版本:1.12.2.RELEASE)
平台管理员角色>低代码平台>资源管理>数据迁移>数据导出>业务数据 ,选择导出低代码POC演示租户下面的19个业务对象的业务数据。
导出进程到16.67%时报错:
INFO
2025-10-09 19:51:07 Start executing steps:业务数据导出-数据导出
ERROR
2025-10-09 19:51:11 Execution failed For input string: “=an6ymMuMg6DyS-bzleLxbw===”
ERROR
2025-10-09 19:51:11 For input string: “=an6ymMuMg6DyS-bzleLxbw===”
INFO
2025-10-09 19:51:11 业务数据导出失败
问题5、导入 低代码领域《POC演示-知识产权管理》 配置数据出错
目标:把WSL虚拟机上的 《POC演示-知识产权管理》这个领域迁移到trail环境的 客户运营试用租户 下
已知:
来源领域:POC演示-知识产权管理
来源领域租户编码:lowcode_poc_tenant
来源领域对应的数据微服务编码:hzero-lowcodedata
来源领域对应的数据微服务的数据库schema:hzero_lowcodedata
目标租户编码:HPOMTRIAL
目标数据微服务编码:hzero-lowcode-data
目标数据微服务的数据库schema:hzero_lowcode_data
编辑已经导出的压缩文件解压后的data.jason文件:(yong vscode 或者cursor 之类的编辑器打开,右键format):
更改 “serviceCode”: “hzero-modeler”/dataList章节下的
“serviceCode\”:\”hzero-lowcodedata\” -> “serviceCode\”:\”hzero-lowcode-data\”
\”databaseName\”:\”hzero_lowcodedata\” -> \”databaseName\”:\”hzero_lowcode_data\”
在 trail环境/客户运营试用租户/低代码平台/数据迁移/ 维护租户映射 当前租户 HPOMTRIAL 映射到 来源租户 lowcode_poc_tenant
上传导出文件DATA_20251009194450.zip,勾选自动导入,但不勾选自动发布(发布了不让删除,万一导入过程中有问题,想删除就麻烦了)
点击 【确认导入】,提示错误:当前服务的迁移配置为空, 请重新检查导出配置,不让导入。
但是如果直接上传没有修改过的压缩文件,是让导入的。那就是修改后重新压缩的格式,导入程序不认。
考虑到雷前之前直接在压缩文件中更改后导入程序是认的,研究压缩程序的差异,雷前用的是360压缩,我这把用系统默认压缩,默认压缩打开的文件是只读的,没法覆盖回去。
360压缩是可以的,先让雷前帮忙处理一下。
上传修改过的压缩文件,在 2.10版中的导入详情界面发现有目标领域映射和目标服务映射,但不可编辑。
询问低代码产品组庆生,回复是:这个是个配置问题,新的已经兼容了,但是还没有发版本,可以先在模型服务加一个配置:hzero.apaas.data-transport.include-services: hzero-modeler, hzero-lowcode, hzero-iam, hzero-platform, hzero-workflow,hzero-lowcodedata
在来源系统的模型服务的application.yml文件中 hzero.apaas 下面加配置:data-transport.include-services: hzero-modeler, hzero-lowcode, hzero-iam, hzero-platform, hzero-workflow,hzero-lowcodedata ,保存
执行 bash run.sh
进入数据迁移界面,发现hzero-iam服务显示为不可用,但实际上在eureka注册中心监控界面可以看到hzero-iam服务状态正常。问低代码开发组,反馈可能是hzero-iam服务的application.yml配置中没有允许数据迁移,看开放平台文档,需要添加:
hzero:
apaas:
data-transport:
enable: true
按要求编辑添加,然后执行 bash run.sh
再次进入数据迁移界面,已经没有hzero-iam服务不可用的错误了,执行导出,可以正常导出。
然后在trail环境执行导入,去掉自动勾选,界面可停留在导入数据源映射界面,但依然没法更改,跟产品组负责数据迁移的同事沟通,说是要升级到最新版本(trail环境得找太祥)
不过我已经在json源文件中更改了,也不用在这里重新映射了,所以不影响。
继续执行导入,报错:
导入失败, ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘58492f1ab87299eb9239e423aa648d36’ for key ‘hmde_table_u2’ ### The error may exist in org/hzero/modeler/physics/infra/mapper/TableMapper.java (best guess) ### The error may involve org.hzero.modeler.physics.infra.mapper.TableMapper.insertSelective-Inline ### The error occurred while setting parameters ### SQL: INSERT INTO hmde_table (creation_date, created_by, last_update_date, last_updated_by, object_version_number, id, code, type, table_category, datasource_id, name, description, tenant_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘58492f1ab87299eb9239e423aa648d36’ for key ‘hmde_table_u2’ ; Duplicate entry ‘58492f1ab87299eb9239e423aa648d36’ for key ‘hmde_table_u2’
跟产品组负责数据迁移的同事沟通,说是来源系统的导出数据有问题, 可以在来源系统 低代码平台/物理模型/查看,应该有服务存在数据源未同步成功 的可能
查询发现hzero-platform服务存在此问题,default下面是, 说是需要点旁边单个小点菜单,选择 同步,但点击“同步”后报错:警告程序出现错误,请联系管理员
产品组负责数据迁移的同事说 ,hzero-platform 的application.yml文件中要添加配置,支持物理反扫,于是在application.yml中增加配置:
hzero.modeler:
tableScanEnabled:true
然后重启服务,再次刷新,再次点同步,依然报错,这次的错误是在hzero-platform 的服务日志中:
报错信息是:org.springframework.web.servlet.resource.NoResourceFoundException: No static resource v1/modeler/metadata/database/tables.
产品组负责数据迁移的同事说可能,hzero-platform的POM依赖配置不够,
添加依赖:
org.hzero.boot
hzero-boot-modeler-driver
2.10.0-1.12.RELEASE
org.hzero.boot
hzero-boot-modeler-client
2.10.0-1.12.RELEASE
保存后,运行 bash run.sh 重新构建jar包并启动服务,结果启动失败,报错信息:
java.lang.IllegalStateException: Error processing condition on org.hzero.boot.api.customize.CustomizeAutoConfiguration.customizeRepository
Caused by: java.lang.ClassNotFoundException: org.hzero.script.client.ScriptExecutorClient
猜测可能跟启动命令参数有关,考虑到workflow服务也是依赖了这两个组件可以正常启动,查看workflow的启动命令,比较下来两者的差异主要是platform服务的启动命令中少了license agent的引用。
把license agent选项在启动命令中加上,在重启服务,依然失败,报错信息跟原来一样,看起来跟license agent没有关系;
跟产品组沟通,反馈是飞搭用的 ScriptExecutorClient 跟H0用的ScriptExecutorClient有冲突。
所以在POM配置中还是把这两个依赖先去掉,否则服务起不来。
临时解决方案是:
直接在数据库更改hzero-platform的datasource , 这个问题在trail环境存在,另一个制造项目业存在,目前都是通过数据库层面datafix的方法解决的。
更改:hzero_modeler.hmde_datasource
update hzero_modeler.hmde_datasource set datasource_type=’MySQL’ where service_code in (‘hzero-platform’,’hzero-workflow’,’hzero-modeler’)
update hzero_modeler.hmde_datasource set schema_name =NULL , database_name=’hzero_platform’ where service_code= ‘hzero-platform’
然后在数据迁移处重新导出 领域
用wps压缩打开data.json进行编辑,关闭时会提示 “data.json已经更新,是否要同步更新到压缩包?“ 选择确认就好了。(备注:系统默认的zip压缩没有这种功能,那是只读的,不能更新到压缩包,如果你解压更改再压缩,格式就不能被识别了)
进入trail环境,平台层(即:hzero平台租户),再次进入数据迁移界面,执行执行导入数据,结果解析到90%的时候就卡住了,长时间过不去,于是就终止进程。
重新上传导入
这次没有上次那个错误了,但又除了一个新的错误,进度卡在导入 hzero-modeler 流程这一步:
导入失败, ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘SYS_USER-SYS_USER_S_RULE1-0’ for key ‘hmde_bo_validate_rule_u1’ ### The error may exist in org/hzero/modeler/business/infra/mapper/BusinessObjectValidateRuleMapper.java (best guess) ### The error may involve org.hzero.modeler.business.infra.mapper.BusinessObjectValidateRuleMapper.insertSelective-Inline ### The error occurred while setting parameters ### SQL: INSERT INTO hmde_bo_validate_rule (creation_date, created_by, last_update_date, last_updated_by, object_version_number, validate_rule_id, tenant_id, business_object_code, rule_name, rule_code, rule_type, enabled_flag, rule_source_type, error_info_type, error_info, operational_flag, trigger_type, version) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘SYS_USER-SYS_USER_S_RULE1-0’ for key ‘hmde_bo_validate_rule_u1’ ; Duplicate entry ‘SYS_USER-SYS_USER_S_RULE1-0’ for key ‘hmde_bo_validate_rule_u1’
跟产品组负责数据迁移的同事沟通,进入来源系统环境/低代码平台/业务对象/预置领域/用户/业务规则,发现里面有两条数据,其中一条是预置的,还有一条是自定义的。这不正常,正常应该只有一条预置的。
进入trail环境 看是只有一条,但类型也是自定义的,不是预置的。
解决方案:datafix ,把重复的那条自定义的删除掉。
delete from hzero_modeler.hmde_bo_validate_rule where validate_rule_id =19
然后在来源环境,租户层,租户管理员身份 再次执行导出
在目标环境,平台层,再次执行导入。
这次终于成功完成导入了。
验证导入的功能:
进入trail环境 的 客户运营试用租户,领域管理,看不到我们导入的领域。
进入trail环境的 平台租户 ,进入领域管理,也看不到我们导入的领域。
在trail环境 平台层管理员身份 进入 低代码平台/SQL执行器,检查领域是否被正确导入:
选择hzero_modeler数据库,执行
select * from hmde_domain where domain_code =’P_IPM’;
可以看到有数据,并且对应的tenantid=806
选择hzero_platform数据库,执行
select * from hpfm_tenant
可以看到tenantid=806的租户确实是我们的目标租户。
进入trail环境,平台层管理员角色,低代码平台/配置权限管理/分配权限
分配目标:按照分配目标所属租户筛选 ,选择 客户运营试用租户,选择租户管理员角色
授权领域:搜 知识产权,选择 POC演示-知识产权管理
保存后,进入 客户运营试用租户 ,进入低代码平台/低代码工作台 ,可以看到 导入的 POC演示-知识产权管理 这个领域了。
进入 这个领域,选择页面 :公司法体维护查询,进入设计器 点”预览” 报错:
操作失败
<公司法体>为虚拟组件,不支持数据查询,建议您前往设计器修改事件流节点
解决方法:把所有的业务对象批量发布一下,进入领域/业务对象, 右上角 [批量发布业务对象] ,每页显示50条,全部勾选20个业务对象,从左边移到右边,然后点【导入】,然后点右上角【业务对象发布情况】可以看到发布进度,等着,大约几分钟完成发布。
然后再次进入页面预览,这次就正常了。测试增删改。也正常。
菜单需要手工建立,先把一二级菜单目录建立好,然后在领域管理/页面 TAB页 做功能发布,选择对应的菜单目录,完成发布即可。
问题解决。
重要提示:导入工作需要切换到平台层,因为有些值集等数据都是平台层的,租户层权限不够。(感觉这个设计后面需要优化,假设一个SaaS的公司,A租户要导入一个应用不太可能取得平台层权限)
问题6:脚本事件的返回问题
问题现象:定义了一个脚本事件C_search_import , 用于调用启信宝API 获取公司的专利、软著等信息。
用AI写的,经过调试可以正常运行并获得正确结果。也可以被按钮调用,能正确获取信息并写入数据库。
但在测试例外情况时,比如特意把APPKEY参数名称写错,按照程序逻辑会抛出例外,但实际在前端执行日志中没看到任何错误,全部是成功。
分析:问题原因是前端执行日志主要用于查看性能分析,跟一般的执行环境不一样,要让前端执行日志看到错误就需要函数return返回具体错误,这需要定义脚本的输出参数(可以在脚本编辑界面点击“配置出入参”,在配置出参的地方,点“JSON维护”可以输入json格式的对象或者对象数组定义,然后解析下。
在配置完出参之后,在process() 一级例外处理处按照出参的json格式 return
测试发现脚本执行结果没有任何输出,跟开发环境上运行有输出的脚本对比,发现其他脚本函数都没有async关键字,而我这个是有的。
去掉async再试,提示脚本中有await ,去掉await再试就OK了,脚本调试的执行结果中就有输出了。也就是说当前飞搭的脚本执行器不支持获取async异步函数的retun内容,所以无法返回脚本执行结果。 要想获得脚本执行结果输出,就只能把函数去掉async,改成同步的。
但这么做引起的另一个问题是:如果去掉async,就不能在当前函数中用await 调用另一个异步函数了,但我最终要调用的启信宝API肯定是个异步函数,如果我不用await语句,我上层函数就无法捕获被调用函数抛出的例外(比如APPKEY错误)。程序逻辑就错误掉了。
而飞搭的脚本执行器不支持获取async异步函数的retun内容也是合理的,要想让脚本执行器返回脚本执行结果就要把函数改成同步的,所以还是要改AI写的代码.
AI改的代码方法就是如果不用await 那么就用.then/.catch 方式调用异步函数,但这种方法效果是一样的,同样不会等到异步函数处理完成再继续执行下面代码,同样导致return的数据是错误的(比如没有出例外的情况再最后return成功,出例外应该在例外处理的地方return 错误,但问题没有等待捕获例外就继续执行了,导致实际有例外错误也返回成功。
这个问题需要飞搭迭代功能支持脚本事件主函数支持async方式调用?
继续让AI想办法,它给出的方法是:
步骤 1:配置脚本出参(JSON 结构)
步骤 2:改写process函数(同步函数 + .then()/.catch()链)
关键逻辑说明
强制等待异步结果:通过.then()/.catch()将结果处理逻辑放入异步回调,确保只有 API 调用完成后才会执行return result,避免 “提前返回”。
统一出参格式:无论成功 / 失败,都通过配置的result对象返回,前端可通过success字段判断状态,通过error.message查看具体错误(解决 “前端看不到错误” 的问题)。
适配平台执行器:虽然process是同步函数,但Promise的回调会进入微任务队列,若飞搭执行器在结束前会等待微任务完成(多数平台会这样处理),则最终会捕获到.then()/.catch()中返回的result。
为什么这能解决问题?
规避async限制:process函数是同步的,符合平台对 “无async关键字” 的要求。
正确捕获异步错误:通过.catch()捕获 API 的所有错误(包括 APPKEY 错误),并写入出参的error字段,确保错误能被前端日志获取。
保证返回时机:.then()/.catch()会等待 API 调用完成后再执行return,避免 “不等结果就返回成功” 的逻辑错误。
关于平台迭代的建议
你提到 “飞搭是否需要迭代支持async主函数”,这确实是更根本的解决方案。
按照这个方法测试,确实可以解决问题。
总结:AI不知道我们的规范要求,所以它刚开始写的process函数就是async的,但这不符合飞搭返回出参的要求。
另外就是AI不能预见各种例外,所以我们测试后发现的各种例外还是要AI继续调整或者自己直接修改。
但AI确实可以帮我写好主要的大部分代码,我们只需要调整改进就好了。
后续要把飞搭写脚本的要求规则整理成AI能理解的文档,以后再写的时候作为上下文给到AI。
关于作者:
| 昵称:Jack.shang 档案信息:jack.shang 程序员->项目经理->技术总监->项目总监->部门总监->事业部总经理->子公司总经理->集团产品运营支持 联系方式:你可以通过syfvb@hotmail.com联系作者 点击查看Jack.shang发表过的所有文章... 本文永久链接: http://blog.retailsolution.cn/archives/4790 |
对本文的评价:
