From 039e8ac69cd41ddf6f934e2213a6ff7e58ce4bfc Mon Sep 17 00:00:00 2001 From: ikiler Date: Tue, 19 Dec 2023 22:08:23 +0800 Subject: [PATCH 1/8] fix log error --- .../java/org/dinky/aop/exception/UnKnownExceptionHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dinky-admin/src/main/java/org/dinky/aop/exception/UnKnownExceptionHandler.java b/dinky-admin/src/main/java/org/dinky/aop/exception/UnKnownExceptionHandler.java index f1913b8ee6..37038aa9a5 100644 --- a/dinky-admin/src/main/java/org/dinky/aop/exception/UnKnownExceptionHandler.java +++ b/dinky-admin/src/main/java/org/dinky/aop/exception/UnKnownExceptionHandler.java @@ -34,6 +34,7 @@ public class UnKnownExceptionHandler { @ExceptionHandler public Result unknownException(Exception e) { + log.error(e.getMessage(), e); return Result.exception(e.getMessage(), e); } } From 49f7ab95cf44ea89d9caf3956152e156dca20a0a Mon Sep 17 00:00:00 2001 From: ikiler Date: Thu, 21 Dec 2023 22:39:04 +0800 Subject: [PATCH 2/8] Complete HTTP alert --- .../controller/AlertInstanceController.java | 4 +- .../org/dinky/alert/AlertBaseConstant.java | 4 +- .../java/org/dinky/alert/http/HttpAlert.java | 9 +- .../org/dinky/alert/http/HttpConstants.java | 2 - .../java/org/dinky/alert/http/HttpSender.java | 78 +-- .../dinky/alert/http/params/HttpParams.java | 11 +- dinky-assembly/src/main/assembly/package.xml | 9 + .../resources/i18n/messages_zh_CN.properties | 484 +++++++++--------- dinky-core/pom.xml | 5 + .../src/components/Flink/FlinkDag/index.tsx | 6 +- .../DataStudio/HeaderContainer/function.tsx | 1 - .../DataStudio/HeaderContainer/index.tsx | 17 +- .../JobList/components/Overview/index.tsx | 6 +- .../InstanceForm/Http/index.tsx | 128 +++-- .../RegCenter/Alert/AlertInstance/service.ts | 7 +- .../ConfigurationForm/FlinkK8s/index.tsx | 2 +- dinky-web/src/types/RegCenter/data.d.ts | 1 + pom.xml | 5 + 18 files changed, 402 insertions(+), 377 deletions(-) diff --git a/dinky-admin/src/main/java/org/dinky/controller/AlertInstanceController.java b/dinky-admin/src/main/java/org/dinky/controller/AlertInstanceController.java index b6748e976c..b4334dee9b 100644 --- a/dinky-admin/src/main/java/org/dinky/controller/AlertInstanceController.java +++ b/dinky-admin/src/main/java/org/dinky/controller/AlertInstanceController.java @@ -191,10 +191,10 @@ public Result> listEnabledAll() { paramType = "body", required = true, dataTypeClass = AlertInstanceDTO.class) - public Result sendAlertMsgTest(@RequestBody AlertInstanceDTO alertInstanceDTO) { + public Result sendAlertMsgTest(@RequestBody AlertInstanceDTO alertInstanceDTO) { AlertResult alertResult = alertInstanceService.testAlert(alertInstanceDTO); if (alertResult.getSuccess()) { - return Result.succeed(Status.SEND_TEST_SUCCESS); + return Result.succeed(alertResult.getMessage(), Status.SEND_TEST_SUCCESS); } else { return Result.failed(Status.SEND_TEST_FAILED); } diff --git a/dinky-alert/dinky-alert-base/src/main/java/org/dinky/alert/AlertBaseConstant.java b/dinky-alert/dinky-alert-base/src/main/java/org/dinky/alert/AlertBaseConstant.java index 48dbce880b..7d3eb0a15a 100644 --- a/dinky-alert/dinky-alert-base/src/main/java/org/dinky/alert/AlertBaseConstant.java +++ b/dinky-alert/dinky-alert-base/src/main/java/org/dinky/alert/AlertBaseConstant.java @@ -39,8 +39,8 @@ public class AlertBaseConstant { public static final String AT_USERS = "atUsers"; public static final String PASSWORD = "password"; - public static final String ALERT_TEMPLATE_TITLE = "Job Alert Test Title"; - public static final String ALERT_TEMPLATE_MSG = "\n- **Job Name:** Test Job\n" + public static final String ALERT_TEMPLATE_TITLE = "Dinky Job Alert Test Title"; + public static final String ALERT_TEMPLATE_MSG = "\n- **Job Name:** Dinky Test Job\n" + "- **Job Status:** FAILED\n" + "- **Alert Time:** 2023-01-01 12:00:00\n" + "- **Start Time:** 2023-01-01 12:00:00\n" diff --git a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java index e21b7bb71e..3f0458faa9 100644 --- a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java +++ b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java @@ -22,18 +22,12 @@ import org.dinky.alert.AbstractAlert; import org.dinky.alert.AlertResult; -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * DingTalkAlert * * @since 2022/2/23 19:28 */ public class HttpAlert extends AbstractAlert { - private static final Logger log = LoggerFactory.getLogger(HttpAlert.class); @Override public String getType() { @@ -43,7 +37,6 @@ public String getType() { @Override public AlertResult send(String title, String content) { HttpSender sender = new HttpSender(getConfig().getParam()); - Map templateParams = sender.buildTemplateParams(title, content); - return sender.send(templateParams); + return sender.send(title, content); } } diff --git a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java index 7de70348e4..d7b42c9ed6 100644 --- a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java +++ b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java @@ -22,8 +22,6 @@ /** DingTalkConstants */ public class HttpConstants { public static final String TYPE = "Http"; - public static final String ALERT_TEMPLATE_TITLE = "title"; - public static final String ALERT_TEMPLATE_CONTENT = "content"; public static final String REQUEST_TYPE_POST = "POST"; public static final String REQUEST_TYPE_GET = "GET"; diff --git a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java index c8520a8b23..e2f2321a73 100644 --- a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java +++ b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java @@ -26,20 +26,15 @@ import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; +import org.apache.http.util.TextUtils; import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -47,6 +42,7 @@ import org.slf4j.LoggerFactory; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.text.StrFormatter; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -57,7 +53,6 @@ public class HttpSender { private static final Logger logger = LoggerFactory.getLogger(HttpSender.class); private final HttpParams httpParams; - private HttpRequestBase httpRequest; HttpSender(Map config) { @@ -65,35 +60,15 @@ public class HttpSender { Asserts.checkNotNull(httpParams, "httpParams is null"); } - /** - * build template params - * - * @param title - * @param content - * @return - */ - public Map buildTemplateParams(String title, String content) { - Map params = new HashMap<>(); - params.put(HttpConstants.ALERT_TEMPLATE_TITLE, title); - params.put(HttpConstants.ALERT_TEMPLATE_CONTENT, content); - return params; - } - /** * send msg of main * * @param content: send msg content * @return AlertResult */ - public AlertResult send(Map templateParams) { + public AlertResult send(String title, String content) { AlertResult alertResult = new AlertResult(); - try { - createHttpRequest(templateParams); - } catch (MalformedURLException | URISyntaxException e) { - throw new RuntimeException(e); - } - if (httpParams.getMethod() == null) { alertResult.setSuccess(false); alertResult.setMessage("Request types are not supported"); @@ -101,11 +76,12 @@ public AlertResult send(Map templateParams) { } try { + createHttpRequest(title, content); String resp = this.getResponseString(httpRequest); alertResult.setSuccess(true); alertResult.setMessage(resp); } catch (Exception e) { - logger.error("send http alert msg exception : {}", e.getMessage()); + logger.error("send http alert msg failed", e); alertResult.setSuccess(false); alertResult.setMessage("send http request alert fail."); } @@ -113,32 +89,22 @@ public AlertResult send(Map templateParams) { return alertResult; } - private void createHttpRequest(Map templateParams) - throws MalformedURLException, URISyntaxException { + private void createHttpRequest(String title, String content) { if (HttpConstants.REQUEST_TYPE_POST.equals(httpParams.getMethod())) { httpRequest = new HttpPost(httpParams.getUrl()); buildRequestHeader(); - buildMsgToRequestBody(templateParams); + buildMsgToRequestBody(title, content); } else if (HttpConstants.REQUEST_TYPE_GET.equals(httpParams.getMethod())) { - buildMsgToUrl(templateParams); - URL unencodeUrl = new URL(httpParams.getUrl()); - URI uri = new URI( - unencodeUrl.getProtocol(), - unencodeUrl.getHost(), - unencodeUrl.getPath(), - unencodeUrl.getQuery(), - null); - - httpRequest = new HttpGet(uri); - buildRequestHeader(); + // TODO Get implementation } } public String getResponseString(HttpRequestBase httpRequest) throws IOException { - CloseableHttpClient httpClient = HttpClientBuilder.create().build(); - CloseableHttpResponse response = httpClient.execute(httpRequest); - HttpEntity entity = response.getEntity(); - return EntityUtils.toString(entity, HttpConstants.DEFAULT_CHARSET); + try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) { + CloseableHttpResponse response = httpClient.execute(httpRequest); + HttpEntity entity = response.getEntity(); + return EntityUtils.toString(entity, HttpConstants.DEFAULT_CHARSET); + } } /** @@ -170,19 +136,19 @@ private void buildRequestHeader() { /** * set body params */ - private void buildMsgToRequestBody(Map templateParams) { + private void buildMsgToRequestBody(String title, String content) { try { - JSONObject jsonObject = JSONUtil.createObj(); - templateParams.forEach(jsonObject::set); - if (CollUtil.isNotEmpty(httpParams.getBody())) { - httpParams.getBody().forEach(configItem -> { - jsonObject.set(configItem.getKey(), configItem.getValue()); - }); + JSONObject body = JSONUtil.parseObj(httpParams.getBody()); + if (TextUtils.isEmpty(httpParams.getTitleFiled())) { + content = StrFormatter.format("{}\n{}", title, content); + } else { + body.putByPath(httpParams.getTitleFiled(), title); } - StringEntity entity = new StringEntity(JSONUtil.toJsonStr(jsonObject), HttpConstants.DEFAULT_CHARSET); + body.putByPath(httpParams.getContentFiled(), content); + StringEntity entity = new StringEntity(JSONUtil.toJsonStr(body), HttpConstants.DEFAULT_CHARSET); ((HttpPost) httpRequest).setEntity(entity); } catch (Exception e) { - logger.error("send http alert msg exception : {}", e.getMessage()); + logger.error("send http alert msg exception", e); } } } diff --git a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/params/HttpParams.java b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/params/HttpParams.java index 1fb97d9ed5..1211edf150 100644 --- a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/params/HttpParams.java +++ b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/params/HttpParams.java @@ -21,7 +21,6 @@ import org.dinky.data.ext.ConfigItem; -import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonCreator; @@ -35,8 +34,10 @@ @AllArgsConstructor(onConstructor = @__(@JsonCreator)) public class HttpParams { - private String url = ""; - private String method = ""; - private List headers = new ArrayList<>(); - private List body = new ArrayList<>(); + private String url; + private String method; + private String contentFiled; + private String titleFiled; + private List headers; + private String body; } diff --git a/dinky-assembly/src/main/assembly/package.xml b/dinky-assembly/src/main/assembly/package.xml index f0ece562f2..477e2beba3 100644 --- a/dinky-assembly/src/main/assembly/package.xml +++ b/dinky-assembly/src/main/assembly/package.xml @@ -219,6 +219,15 @@ dinky-alert-email-${project.version}.jar + + ${project.parent.basedir}/dinky-alert/dinky-alert-http/target + + lib + + dinky-alert-http-${project.version}.jar + + + ${project.parent.basedir}/dinky-alert/dinky-alert-feishu/target diff --git a/dinky-common/src/main/resources/i18n/messages_zh_CN.properties b/dinky-common/src/main/resources/i18n/messages_zh_CN.properties index ff7459310f..a6927a14bd 100644 --- a/dinky-common/src/main/resources/i18n/messages_zh_CN.properties +++ b/dinky-common/src/main/resources/i18n/messages_zh_CN.properties @@ -1,267 +1,267 @@ -test.connection.success=测试连接成功 -assign.menu.failed=分配菜单失败 -ldap.user.autoload.forbaid=未开启自动映射LDAP用户,请联系管理员导入 -cluster.instance.recycle.success=回收成功 -execute.failed=执行失败 -ldap.user.duplicat=ldap匹配到多个用户数据 -git.branch.not.found=获取不到分支信息 -copy.success=复制成功 -user.superadmin.cannot.disable=超级管理员用户不能停用 -user.superadmin.cannot.delete=超级管理员用户不能删除 -ds.work.flow.not.save=请先保存工作流 -schedule.status.unknown=未知状态: {0} -user.binding.role.delete.all=用户绑定角色删除所有 -modify.failed=修改失败 -git.build.success=预更新状态成功,开始执行构建流程 -menu.has.child=存在子菜单 不允许删除 -tenant.already.exists=租户已存在 -save.failed=保存失败 -assign.menu.success=分配菜单成功 -user.disabled.by.admin=当前用户已被管理员停用 -select.menu=请选择菜单 -role.not.exist=角色不存在 -delete.success=删除成功 -clear.success=清除成功 -move.success=移动成功 -ldap.login.forbid=当前用户登录模式不是LDAP,请联系管理员修改,或不使用LDAP登录 -request.params.not.valid.error=请求参数[{0}]无效 -change.password.failed=修改密码失败 -menu.name.exist=菜单已存在 -ds.task.type.not.support=海豚调度类型为 [{}] 不支持,非DINKY类型 -datasource.connect.normal=数据源连接正常 -restart.success=重启成功 -test.msg.job.log.url=点击查看该任务的异常日志 -user.assign.role.success=用户分配角色成功 -global.params.check.error.value=字段: {0}, 不合法的值: {1} -change.password.success=修改密码成功 -user.not.exist=用户不存在 -refresh.success=刷新成功 -ds.get.node.list.error=节点获取失败 -ldap.default.tenant.nofound=LDAP默认租户不存在 -copy.failed=复制失败 -folder.not.empty=该目录下存在子目录/作业,无法删除 -be.replaced=token 已被顶下线 -datasource.connect.success=数据源连接测试成功 -sign.out.success=退出成功 -added.success=新增成功 -tenant.binding.user=删除租户失败,该租户已绑定用户 -send.test.failed=测试信息发送失败 -delete.failed=删除失败 -role.binding.user=该角色已绑定用户,无法删除 -not.token=未能读取到有效 Token -execute.success=执行成功 -debug.success=调试成功 -debug.failed=调试失败 -publish.success=发布成功 -publish.failed=发布失败 -offline.success=下线成功 -offline.failed=下线失败 -version.rollback.success=版本回滚成功 -version.rollback.failed=版本回滚失败 -token.freezed=token 已被冻结 -menu.has.assign=菜单已分配,不允许删除 -datasource.status.refresh.success=数据源状态刷新成功 -user.not.login=用户未登录 -tenant.assign.user.failed=分配用户失败 -stop.success=已成功停止 -move.failed=移动失败 -get.tenant.failed=获取租户信息失败 -send.test.success=测试信息发送成功 -login.success=登录成功 -login.password.not.null=登录密码不能为空 -unknown.error=未知异常: {0} -stop.failed=停止失败 -role.name.exist=角色已存在 -ldap.filter.incorrect=用户过滤规则不能为空,请填写相关配置 -tenant.assign.user.success=分配用户成功 -ds.add.work.flow.definition.success=添加工作流定义成功 -expired.token=Token 已过期 -refresh.failed=刷新失败 -operate.success=操作成功 -git.project.not.found=获取不到项目信息 -cluster.instance.heartbeat.success=集群实例心跳成功 -ldap.no.user.found=LDAP连接成功,但未匹配到任何用户 -login.failure=用户登录失败 -request.params.error=请求参数错误 -user.not.binding.tenant=用户未绑定租户 -user.assign.role.failed=用户分配角色失败 -rename.failed=重命名失败 -test.msg.job.name=测试任务 -tenant.binding.user.delete.all=该租户绑定的用户已被全部删除 -menu.not.exist=菜单不存在 -test.msg.job.name.title=任务 -ds.task.not.exist=任务不存在 -global.params.check.error=字段: {0}, {1} -test.msg.title=实时告警监控 -user.name.passwd.error=用户名或密码不正确 -no.prefix=未按照指定前缀提交 token -query.success=查询成功 -ds.work.flow.definition.not.exist=工作流定义不存在,你可以添加工作流定义 -ds.work.flow.definition.process.update=工作流定义 [{}] 进行更新,TaskCode: [{}],参数 1: [{}],参数 2: [{}] -tenant.name.exist=租户已存在 -failed=获取失败 -added.failed=新增失败 -task.not.exist=任务不存在 -task.is.online=任务已上线,禁止修改 -cluster.instance.deploy=部署完成 -clear.failed=清除失败 -rename.success=重命名成功 -job.release.disabled.update=作业已发布,禁止修改 -success=获取成功 -tenant.not.exist=租户不存在 -user.already.exists=用户名已存在 -git.building=此任务正在构建 -ds.work.flow.definition.task.name.exist=工作流定义 [{}] 已存在任务定义 [{}] , 将执行更新操作 -role.already.exists=角色已存在 -internal.server.error.args=服务端异常: {0} -kick.out=token 已被踢下线 -restart.failed=重启失败 -invalid.token=无效的 Token -datasource.not.exist=数据源不存在 -datasource.clear.cache.success=清除库表缓存成功 -tenant.admin.already.exists=已存在租户管理员, 租户超管只能有一个 -ds.work.flow.definition.online=工作流定义 [{}] 已经上线 -test.msg.job.url=跳转至该任务 -savepoint.is.null=保存点为空 -git.sort.success=排序成功 -ds.add.task.definition.success=添加任务定义成功 -alert.group.exist=告警组已存在 -git.sort.failed=排序失败 -query.failed=查询失败 -save.success=保存成功 -cluster.instance.kill=已杀死该进程/集群 -cluster.not.exist=集群不存在 -operate.failed=操作失败 -test.connection.failed=测试连接失败 -switching.tenant.success=选择租户成功 -tenant.name.not.exist=租户不存在 -job.instance.not.exist=作业实例不存在 -modify.success=修改成功 -user.old.password.incorrect=用户旧密码不正确 -ldap.user.incorrect=LDAP用户名(DN)不正确 -role.binding.row.permission=该角色已绑定行权限,无法删除 +test.connection.success=\u6D4B\u8BD5\u8FDE\u63A5\u6210\u529F +assign.menu.failed=\u5206\u914D\u83DC\u5355\u5931\u8D25 +ldap.user.autoload.forbaid=\u672A\u5F00\u542F\u81EA\u52A8\u6620\u5C04LDAP\u7528\u6237\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u5BFC\u5165 +cluster.instance.recycle.success=\u56DE\u6536\u6210\u529F +execute.failed=\u6267\u884C\u5931\u8D25 +ldap.user.duplicat=ldap\u5339\u914D\u5230\u591A\u4E2A\u7528\u6237\u6570\u636E +git.branch.not.found=\u83B7\u53D6\u4E0D\u5230\u5206\u652F\u4FE1\u606F +copy.success=\u590D\u5236\u6210\u529F +user.superadmin.cannot.disable=\u8D85\u7EA7\u7BA1\u7406\u5458\u7528\u6237\u4E0D\u80FD\u505C\u7528 +user.superadmin.cannot.delete=\u8D85\u7EA7\u7BA1\u7406\u5458\u7528\u6237\u4E0D\u80FD\u5220\u9664 +ds.work.flow.not.save=\u8BF7\u5148\u4FDD\u5B58\u5DE5\u4F5C\u6D41 +schedule.status.unknown=\u672A\u77E5\u72B6\u6001: {0} +user.binding.role.delete.all=\u7528\u6237\u7ED1\u5B9A\u89D2\u8272\u5220\u9664\u6240\u6709 +modify.failed=\u4FEE\u6539\u5931\u8D25 +git.build.success=\u9884\u66F4\u65B0\u72B6\u6001\u6210\u529F,\u5F00\u59CB\u6267\u884C\u6784\u5EFA\u6D41\u7A0B +menu.has.child=\u5B58\u5728\u5B50\u83DC\u5355 \u4E0D\u5141\u8BB8\u5220\u9664 +tenant.already.exists=\u79DF\u6237\u5DF2\u5B58\u5728 +save.failed=\u4FDD\u5B58\u5931\u8D25 +assign.menu.success=\u5206\u914D\u83DC\u5355\u6210\u529F +user.disabled.by.admin=\u5F53\u524D\u7528\u6237\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u7528 +select.menu=\u8BF7\u9009\u62E9\u83DC\u5355 +role.not.exist=\u89D2\u8272\u4E0D\u5B58\u5728 +delete.success=\u5220\u9664\u6210\u529F +clear.success=\u6E05\u9664\u6210\u529F +move.success=\u79FB\u52A8\u6210\u529F +ldap.login.forbid=\u5F53\u524D\u7528\u6237\u767B\u5F55\u6A21\u5F0F\u4E0D\u662FLDAP\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u4FEE\u6539,\u6216\u4E0D\u4F7F\u7528LDAP\u767B\u5F55 +request.params.not.valid.error=\u8BF7\u6C42\u53C2\u6570[{0}]\u65E0\u6548 +change.password.failed=\u4FEE\u6539\u5BC6\u7801\u5931\u8D25 +menu.name.exist=\u83DC\u5355\u5DF2\u5B58\u5728 +ds.task.type.not.support=\u6D77\u8C5A\u8C03\u5EA6\u7C7B\u578B\u4E3A [{}] \u4E0D\u652F\u6301,\u975EDINKY\u7C7B\u578B +datasource.connect.normal=\u6570\u636E\u6E90\u8FDE\u63A5\u6B63\u5E38 +restart.success=\u91CD\u542F\u6210\u529F +test.msg.job.log.url=\u70B9\u51FB\u67E5\u770B\u8BE5\u4EFB\u52A1\u7684\u5F02\u5E38\u65E5\u5FD7 +user.assign.role.success=\u7528\u6237\u5206\u914D\u89D2\u8272\u6210\u529F +global.params.check.error.value=\u5B57\u6BB5: {0}, \u4E0D\u5408\u6CD5\u7684\u503C: {1} +change.password.success=\u4FEE\u6539\u5BC6\u7801\u6210\u529F +user.not.exist=\u7528\u6237\u4E0D\u5B58\u5728 +refresh.success=\u5237\u65B0\u6210\u529F +ds.get.node.list.error=\u8282\u70B9\u83B7\u53D6\u5931\u8D25 +ldap.default.tenant.nofound=LDAP\u9ED8\u8BA4\u79DF\u6237\u4E0D\u5B58\u5728 +copy.failed=\u590D\u5236\u5931\u8D25 +folder.not.empty=\u8BE5\u76EE\u5F55\u4E0B\u5B58\u5728\u5B50\u76EE\u5F55/\u4F5C\u4E1A\uFF0C\u65E0\u6CD5\u5220\u9664 +be.replaced=token \u5DF2\u88AB\u9876\u4E0B\u7EBF +datasource.connect.success=\u6570\u636E\u6E90\u8FDE\u63A5\u6D4B\u8BD5\u6210\u529F +sign.out.success=\u9000\u51FA\u6210\u529F +added.success=\u65B0\u589E\u6210\u529F +tenant.binding.user=\u5220\u9664\u79DF\u6237\u5931\u8D25\uFF0C\u8BE5\u79DF\u6237\u5DF2\u7ED1\u5B9A\u7528\u6237 +send.test.failed=\u6D4B\u8BD5\u4FE1\u606F\u53D1\u9001\u5931\u8D25 +delete.failed=\u5220\u9664\u5931\u8D25 +role.binding.user=\u8BE5\u89D2\u8272\u5DF2\u7ED1\u5B9A\u7528\u6237\uFF0C\u65E0\u6CD5\u5220\u9664 +not.token=\u672A\u80FD\u8BFB\u53D6\u5230\u6709\u6548 Token +execute.success=\u6267\u884C\u6210\u529F +debug.success=\u8C03\u8BD5\u6210\u529F +debug.failed=\u8C03\u8BD5\u5931\u8D25 +publish.success=\u53D1\u5E03\u6210\u529F +publish.failed=\u53D1\u5E03\u5931\u8D25 +offline.success=\u4E0B\u7EBF\u6210\u529F +offline.failed=\u4E0B\u7EBF\u5931\u8D25 +version.rollback.success=\u7248\u672C\u56DE\u6EDA\u6210\u529F +version.rollback.failed=\u7248\u672C\u56DE\u6EDA\u5931\u8D25 +token.freezed=token \u5DF2\u88AB\u51BB\u7ED3 +menu.has.assign=\u83DC\u5355\u5DF2\u5206\u914D,\u4E0D\u5141\u8BB8\u5220\u9664 +datasource.status.refresh.success=\u6570\u636E\u6E90\u72B6\u6001\u5237\u65B0\u6210\u529F +user.not.login=\u7528\u6237\u672A\u767B\u5F55 +tenant.assign.user.failed=\u5206\u914D\u7528\u6237\u5931\u8D25 +stop.success=\u5DF2\u6210\u529F\u505C\u6B62 +move.failed=\u79FB\u52A8\u5931\u8D25 +get.tenant.failed=\u83B7\u53D6\u79DF\u6237\u4FE1\u606F\u5931\u8D25 +send.test.success=\u6D4B\u8BD5\u8FDE\u63A5\u6210\u529F +login.success=\u767B\u5F55\u6210\u529F +login.password.not.null=\u767B\u5F55\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A +unknown.error=\u672A\u77E5\u5F02\u5E38: {0} +stop.failed=\u505C\u6B62\u5931\u8D25 +role.name.exist=\u89D2\u8272\u5DF2\u5B58\u5728 +ldap.filter.incorrect=\u7528\u6237\u8FC7\u6EE4\u89C4\u5219\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u586B\u5199\u76F8\u5173\u914D\u7F6E +tenant.assign.user.success=\u5206\u914D\u7528\u6237\u6210\u529F +ds.add.work.flow.definition.success=\u6DFB\u52A0\u5DE5\u4F5C\u6D41\u5B9A\u4E49\u6210\u529F +expired.token=Token \u5DF2\u8FC7\u671F +refresh.failed=\u5237\u65B0\u5931\u8D25 +operate.success=\u64CD\u4F5C\u6210\u529F +git.project.not.found=\u83B7\u53D6\u4E0D\u5230\u9879\u76EE\u4FE1\u606F +cluster.instance.heartbeat.success=\u96C6\u7FA4\u5B9E\u4F8B\u5FC3\u8DF3\u6210\u529F +ldap.no.user.found=LDAP\u8FDE\u63A5\u6210\u529F\uFF0C\u4F46\u672A\u5339\u914D\u5230\u4EFB\u4F55\u7528\u6237 +login.failure=\u7528\u6237\u767B\u5F55\u5931\u8D25 +request.params.error=\u8BF7\u6C42\u53C2\u6570\u9519\u8BEF +user.not.binding.tenant=\u7528\u6237\u672A\u7ED1\u5B9A\u79DF\u6237 +user.assign.role.failed=\u7528\u6237\u5206\u914D\u89D2\u8272\u5931\u8D25 +rename.failed=\u91CD\u547D\u540D\u5931\u8D25 +test.msg.job.name=\u6D4B\u8BD5\u4EFB\u52A1 +tenant.binding.user.delete.all=\u8BE5\u79DF\u6237\u7ED1\u5B9A\u7684\u7528\u6237\u5DF2\u88AB\u5168\u90E8\u5220\u9664 +menu.not.exist=\u83DC\u5355\u4E0D\u5B58\u5728 +test.msg.job.name.title=\u4EFB\u52A1 +ds.task.not.exist=\u4EFB\u52A1\u4E0D\u5B58\u5728 +global.params.check.error=\u5B57\u6BB5: {0}, {1} +test.msg.title=\u5B9E\u65F6\u544A\u8B66\u76D1\u63A7 +user.name.passwd.error=\u7528\u6237\u540D\u6216\u5BC6\u7801\u4E0D\u6B63\u786E +no.prefix=\u672A\u6309\u7167\u6307\u5B9A\u524D\u7F00\u63D0\u4EA4 token +query.success=\u67E5\u8BE2\u6210\u529F +ds.work.flow.definition.not.exist=\u5DE5\u4F5C\u6D41\u5B9A\u4E49\u4E0D\u5B58\u5728,\u4F60\u53EF\u4EE5\u6DFB\u52A0\u5DE5\u4F5C\u6D41\u5B9A\u4E49 +ds.work.flow.definition.process.update=\u5DE5\u4F5C\u6D41\u5B9A\u4E49 [{}] \u8FDB\u884C\u66F4\u65B0,TaskCode: [{}],\u53C2\u6570 1: [{}],\u53C2\u6570 2: [{}] +tenant.name.exist=\u79DF\u6237\u5DF2\u5B58\u5728 +failed=\u83B7\u53D6\u5931\u8D25 +added.failed=\u65B0\u589E\u5931\u8D25 +task.not.exist=\u4EFB\u52A1\u4E0D\u5B58\u5728 +task.is.online=\u4EFB\u52A1\u5DF2\u4E0A\u7EBF\uFF0C\u7981\u6B62\u4FEE\u6539 +cluster.instance.deploy=\u90E8\u7F72\u5B8C\u6210 +clear.failed=\u6E05\u9664\u5931\u8D25 +rename.success=\u91CD\u547D\u540D\u6210\u529F +job.release.disabled.update=\u4F5C\u4E1A\u5DF2\u53D1\u5E03\uFF0C\u7981\u6B62\u4FEE\u6539 +success=\u83B7\u53D6\u6210\u529F +tenant.not.exist=\u79DF\u6237\u4E0D\u5B58\u5728 +user.already.exists=\u7528\u6237\u540D\u5DF2\u5B58\u5728 +git.building=\u6B64\u4EFB\u52A1\u6B63\u5728\u6784\u5EFA +ds.work.flow.definition.task.name.exist=\u5DE5\u4F5C\u6D41\u5B9A\u4E49 [{}] \u5DF2\u5B58\u5728\u4EFB\u52A1\u5B9A\u4E49 [{}] , \u5C06\u6267\u884C\u66F4\u65B0\u64CD\u4F5C +role.already.exists=\u89D2\u8272\u5DF2\u5B58\u5728 +internal.server.error.args=\u670D\u52A1\u7AEF\u5F02\u5E38: {0} +kick.out=token \u5DF2\u88AB\u8E22\u4E0B\u7EBF +restart.failed=\u91CD\u542F\u5931\u8D25 +invalid.token=\u65E0\u6548\u7684 Token +datasource.not.exist=\u6570\u636E\u6E90\u4E0D\u5B58\u5728 +datasource.clear.cache.success=\u6E05\u9664\u5E93\u8868\u7F13\u5B58\u6210\u529F +tenant.admin.already.exists=\u5DF2\u5B58\u5728\u79DF\u6237\u7BA1\u7406\u5458, \u79DF\u6237\u8D85\u7BA1\u53EA\u80FD\u6709\u4E00\u4E2A +ds.work.flow.definition.online=\u5DE5\u4F5C\u6D41\u5B9A\u4E49 [{}] \u5DF2\u7ECF\u4E0A\u7EBF +test.msg.job.url=\u8DF3\u8F6C\u81F3\u8BE5\u4EFB\u52A1 +savepoint.is.null=\u4FDD\u5B58\u70B9\u4E3A\u7A7A +git.sort.success=\u6392\u5E8F\u6210\u529F +ds.add.task.definition.success=\u6DFB\u52A0\u4EFB\u52A1\u5B9A\u4E49\u6210\u529F +alert.group.exist=\u544A\u8B66\u7EC4\u5DF2\u5B58\u5728 +git.sort.failed=\u6392\u5E8F\u5931\u8D25 +query.failed=\u67E5\u8BE2\u5931\u8D25 +save.success=\u4FDD\u5B58\u6210\u529F +cluster.instance.kill=\u5DF2\u6740\u6B7B\u8BE5\u8FDB\u7A0B/\u96C6\u7FA4 +cluster.not.exist=\u96C6\u7FA4\u4E0D\u5B58\u5728 +operate.failed=\u64CD\u4F5C\u5931\u8D25 +test.connection.failed=\u6D4B\u8BD5\u8FDE\u63A5\u5931\u8D25 +switching.tenant.success=\u9009\u62E9\u79DF\u6237\u6210\u529F +tenant.name.not.exist=\u79DF\u6237\u4E0D\u5B58\u5728 +job.instance.not.exist=\u4F5C\u4E1A\u5B9E\u4F8B\u4E0D\u5B58\u5728 +modify.success=\u4FEE\u6539\u6210\u529F +user.old.password.incorrect=\u7528\u6237\u65E7\u5BC6\u7801\u4E0D\u6B63\u786E +ldap.user.incorrect=LDAP\u7528\u6237\u540D\uFF08DN\uFF09\u4E0D\u6B63\u786E +role.binding.row.permission=\u8BE5\u89D2\u8272\u5DF2\u7ED1\u5B9A\u884C\u6743\u9650\uFF0C\u65E0\u6CD5\u5220\u9664 # dinky-admin -unknown.i18n=未知 i18n 信息,请检查. . . +unknown.i18n=\u672A\u77E5 i18n \u4FE1\u606F,\u8BF7\u68C0\u67E5. . . -file.upload.failed=文件上传失败, 原因: {0} +file.upload.failed=\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25, \u539F\u56E0: {0} -daemon.task.config.not.exist=线程任务配置不能为空 -daemon.task.not.support=不支持线程任务类型: +daemon.task.config.not.exist=\u7EBF\u7A0B\u4EFB\u52A1\u914D\u7F6E\u4E0D\u80FD\u4E3A\u7A7A +daemon.task.not.support=\u4E0D\u652F\u6301\u7EBF\u7A0B\u4EFB\u52A1\u7C7B\u578B\uFF1A # dinky-alert -alert.rule.jobFail=作业失败 -alert.rule.getJobInfoFail=获取作业信息失败 -alert.rule.jobRestart=作业重启 -alert.rule.checkpointFail=checkpoint失败 -alert.rule.jobRunException=作业运行异常 -alert.rule.checkpointTimeout=checkpoint超时 +alert.rule.jobFail=\u4F5C\u4E1A\u5931\u8D25 +alert.rule.getJobInfoFail=\u83B7\u53D6\u4F5C\u4E1A\u4FE1\u606F\u5931\u8D25 +alert.rule.jobRestart=\u4F5C\u4E1A\u91CD\u542F +alert.rule.checkpointFail=checkpoint\u5931\u8D25 +alert.rule.jobRunException=\u4F5C\u4E1A\u8FD0\u884C\u5F02\u5E38 +alert.rule.checkpointTimeout=checkpoint\u8D85\u65F6 # system config -sys.flink.settings.useRestAPI=使用 Rest API -sys.flink.settings.useRestAPI.note=在运维 Flink 任务时是否使用 RestAPI -sys.flink.settings.sqlSeparator=SQL 分隔符 -sys.flink.settings.sqlSeparator.note=请注意: 默认分隔符为 ';' ,如果您的 SQL 中包含 ';' ,请修改此项配置为其他字符,例如: ';\\n', 请忽略单引号!!!! -sys.flink.settings.jobIdWait=Job 提交等待时间 -sys.flink.settings.jobIdWait.note=提交 Application 或 PerJob 任务时获取 Job ID 的最大等待时间(秒) -sys.maven.settings.settingsFilePath=Maven 配置文件路径 -sys.maven.settings.settingsFilePath.note=Maven 配置文件路径, eg: /opt/maven-3.9.2/conf/settings.xml ,请注意: 默认情况下会获取所在主机的 MAVEN_HOME 环境变量,则此处无需填写,如果没有配置请填写绝对路径 -sys.maven.settings.repository=Maven 仓库地址 -sys.maven.settings.repository.note=Maven 仓库地址 -sys.maven.settings.repositoryUser=Maven 仓库用户名 -sys.maven.settings.repositoryUser.note=Maven 私服认证用户名,如果需要配置 Maven 私服仓库认证信息,请填写此项 -sys.maven.settings.repositoryPassword=Maven 仓库密码 -sys.maven.settings.repositoryPassword.note=Maven 私服认证密码,如果需要配置 Maven 私服仓库认证信息,请填写此项 -sys.env.settings.pythonHome=Python 环境变量 -sys.env.settings.pythonHome.note=Python 环境变量,用于提交 Python 任务以及构建 Python Udf -sys.env.settings.dinkyAddr=Dinky 地址 -sys.env.settings.dinkyAddr.note=该地址必须与Dinky Application后台url中配置的地址相同 -sys.env.settings.maxRetainDays=作业历史最大保留天数 -sys.env.settings.maxRetainDays.note=提交的作业历史与自动注册的集群记录最大保留天数,过期会被自动删除 -sys.env.settings.maxRetainCount=作业历史最大保留数量 -sys.env.settings.maxRetainCount.note=提交的作业历史与自动注册的集群记录最大保留数量,如果不足该数量,则不会被删除,即使已经过了做大保留天数 +sys.flink.settings.useRestAPI=\u4F7F\u7528 Rest API +sys.flink.settings.useRestAPI.note=\u5728\u8FD0\u7EF4 Flink \u4EFB\u52A1\u65F6\u662F\u5426\u4F7F\u7528 RestAPI +sys.flink.settings.sqlSeparator=SQL \u5206\u9694\u7B26 +sys.flink.settings.sqlSeparator.note=\u8BF7\u6CE8\u610F: \u9ED8\u8BA4\u5206\u9694\u7B26\u4E3A ';' ,\u5982\u679C\u60A8\u7684 SQL \u4E2D\u5305\u542B ';' ,\u8BF7\u4FEE\u6539\u6B64\u9879\u914D\u7F6E\u4E3A\u5176\u4ED6\u5B57\u7B26,\u4F8B\u5982: ';\\n', \u8BF7\u5FFD\u7565\u5355\u5F15\u53F7!!!! +sys.flink.settings.jobIdWait=Job \u63D0\u4EA4\u7B49\u5F85\u65F6\u95F4 +sys.flink.settings.jobIdWait.note=\u63D0\u4EA4 Application \u6216 PerJob \u4EFB\u52A1\u65F6\u83B7\u53D6 Job ID \u7684\u6700\u5927\u7B49\u5F85\u65F6\u95F4\uFF08\u79D2\uFF09 +sys.maven.settings.settingsFilePath=Maven \u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84 +sys.maven.settings.settingsFilePath.note=Maven \u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84, eg: /opt/maven-3.9.2/conf/settings.xml ,\u8BF7\u6CE8\u610F: \u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u83B7\u53D6\u6240\u5728\u4E3B\u673A\u7684 MAVEN_HOME \u73AF\u5883\u53D8\u91CF,\u5219\u6B64\u5904\u65E0\u9700\u586B\u5199,\u5982\u679C\u6CA1\u6709\u914D\u7F6E\u8BF7\u586B\u5199\u7EDD\u5BF9\u8DEF\u5F84 +sys.maven.settings.repository=Maven \u4ED3\u5E93\u5730\u5740 +sys.maven.settings.repository.note=Maven \u4ED3\u5E93\u5730\u5740 +sys.maven.settings.repositoryUser=Maven \u4ED3\u5E93\u7528\u6237\u540D +sys.maven.settings.repositoryUser.note=Maven \u79C1\u670D\u8BA4\u8BC1\u7528\u6237\u540D,\u5982\u679C\u9700\u8981\u914D\u7F6E Maven \u79C1\u670D\u4ED3\u5E93\u8BA4\u8BC1\u4FE1\u606F,\u8BF7\u586B\u5199\u6B64\u9879 +sys.maven.settings.repositoryPassword=Maven \u4ED3\u5E93\u5BC6\u7801 +sys.maven.settings.repositoryPassword.note=Maven \u79C1\u670D\u8BA4\u8BC1\u5BC6\u7801,\u5982\u679C\u9700\u8981\u914D\u7F6E Maven \u79C1\u670D\u4ED3\u5E93\u8BA4\u8BC1\u4FE1\u606F,\u8BF7\u586B\u5199\u6B64\u9879 +sys.env.settings.pythonHome=Python \u73AF\u5883\u53D8\u91CF +sys.env.settings.pythonHome.note=Python \u73AF\u5883\u53D8\u91CF,\u7528\u4E8E\u63D0\u4EA4 Python \u4EFB\u52A1\u4EE5\u53CA\u6784\u5EFA Python Udf +sys.env.settings.dinkyAddr=Dinky \u5730\u5740 +sys.env.settings.dinkyAddr.note=\u8BE5\u5730\u5740\u5FC5\u987B\u4E0EDinky Application\u540E\u53F0url\u4E2D\u914D\u7F6E\u7684\u5730\u5740\u76F8\u540C +sys.env.settings.maxRetainDays=\u4F5C\u4E1A\u5386\u53F2\u6700\u5927\u4FDD\u7559\u5929\u6570 +sys.env.settings.maxRetainDays.note=\u63D0\u4EA4\u7684\u4F5C\u4E1A\u5386\u53F2\u4E0E\u81EA\u52A8\u6CE8\u518C\u7684\u96C6\u7FA4\u8BB0\u5F55\u6700\u5927\u4FDD\u7559\u5929\u6570\uFF0C\u8FC7\u671F\u4F1A\u88AB\u81EA\u52A8\u5220\u9664 +sys.env.settings.maxRetainCount=\u4F5C\u4E1A\u5386\u53F2\u6700\u5927\u4FDD\u7559\u6570\u91CF +sys.env.settings.maxRetainCount.note=\u63D0\u4EA4\u7684\u4F5C\u4E1A\u5386\u53F2\u4E0E\u81EA\u52A8\u6CE8\u518C\u7684\u96C6\u7FA4\u8BB0\u5F55\u6700\u5927\u4FDD\u7559\u6570\u91CF\uFF0C\u5982\u679C\u4E0D\u8DB3\u8BE5\u6570\u91CF\uFF0C\u5219\u4E0D\u4F1A\u88AB\u5220\u9664\uFF0C\u5373\u4F7F\u5DF2\u7ECF\u8FC7\u4E86\u505A\u5927\u4FDD\u7559\u5929\u6570 -sys.dolphinscheduler.settings.enable=是否启用 DolphinScheduler -sys.dolphinscheduler.settings.enable.note=是否启用 DolphinScheduler ,启用后才能使用 DolphinScheduler 的相关功能,请先填写下列配置项,完成后再开启此项配置, 另:请确保 DolphinScheduler 的相关配置正确 -sys.dolphinscheduler.settings.url=DolphinScheduler 地址 -sys.dolphinscheduler.settings.url.note=地址必须和DolphinScheduler后台配置的地址一致,eg: http://127.0.0.1:12345/dolphinscheduler +sys.dolphinscheduler.settings.enable=\u662F\u5426\u542F\u7528 DolphinScheduler +sys.dolphinscheduler.settings.enable.note=\u662F\u5426\u542F\u7528 DolphinScheduler ,\u542F\u7528\u540E\u624D\u80FD\u4F7F\u7528 DolphinScheduler \u7684\u76F8\u5173\u529F\u80FD,\u8BF7\u5148\u586B\u5199\u4E0B\u5217\u914D\u7F6E\u9879,\u5B8C\u6210\u540E\u518D\u5F00\u542F\u6B64\u9879\u914D\u7F6E, \u53E6:\u8BF7\u786E\u4FDD DolphinScheduler \u7684\u76F8\u5173\u914D\u7F6E\u6B63\u786E +sys.dolphinscheduler.settings.url=DolphinScheduler \u5730\u5740 +sys.dolphinscheduler.settings.url.note=\u5730\u5740\u5FC5\u987B\u548CDolphinScheduler\u540E\u53F0\u914D\u7F6E\u7684\u5730\u5740\u4E00\u81F4\uFF0Ceg: http://127.0.0.1:12345/dolphinscheduler sys.dolphinscheduler.settings.token=DolphinScheduler Token -sys.dolphinscheduler.settings.token.note=DolphinScheduler的Token,请在DolphinScheduler的安全中心->令牌管理中创建一个token,并填入该配置中 -sys.dolphinscheduler.settings.projectName=DolphinScheduler 项目名 -sys.dolphinscheduler.settings.projectName.note=DolphinScheduler 中指定的项目名称,不区分大小写 -sys.ldap.settings.url=Ldap 服务地址 -sys.ldap.settings.url.note=Ldap 认证服务地址,例如:ldap://192.168.111.1:389 -sys.ldap.settings.userDn=登录用户名(DN) -sys.ldap.settings.userDn.note=用于连接 Ldap 服务的用户名,或者管理员DN -sys.ldap.settings.userPassword=登录密码 -sys.ldap.settings.userPassword.note=用于连接ldap服务的密码 -sys.ldap.settings.timeLimit=连接超时 -sys.ldap.settings.timeLimit.note=连接 Ldap 服务的最大时间,超过则断开 -sys.ldap.settings.baseDn=用户基础 DN -sys.ldap.settings.baseDn.note=Dinky 会在此基础 DN 下进行用户搜索,例如:ou=users,dc=dinky,dc=com -sys.ldap.settings.filter=用户过滤规则 -sys.ldap.settings.filter.note=使用 Ldap 的 filter 语法进行用户过滤 -sys.ldap.settings.autoload=登录时自动映射用户 -sys.ldap.settings.autoload.note=开启后,当用户使用 LDAP 登录时,如果没有相应的 Dinky 用户映射,则会自动拉取 LDAP 信息创建一个 Dinky 用户与之映射,如果关闭此功能,对于未导入的 LDAP 用户将无法登录 -sys.ldap.settings.defaultTeant=LDAP 导入默认租户编码 -sys.ldap.settings.defaultTeant.note=开启自动导入用户后,新用户登录需要一个默认的租户编码,否则无法登录,例如: DefaultTenant -sys.ldap.settings.castUsername=LDAP 用户名字段 -sys.ldap.settings.castUsername.note=需要填写一个 LDAP 中用户的属性字段来与 Dinky 用户对应,必须填写,一般可选为 cn 或者 uid表示用户唯一标识 -sys.ldap.settings.castNickname=LDAP 昵称字段 -sys.ldap.settings.castNickname.note=需要填写一个 LDAP 中用户的属性字段来与 Dinky 昵称对应,必须填写,一般可选为 sn 或者其他标识,不要求唯一 -sys.ldap.settings.enable=是否启用 Ldap -sys.ldap.settings.enable.note=开启 LDAP 登录功能 -sys.metrics.settings.sys.enable=Dinky JVM Monitor 开关 -sys.metrics.settings.sys.enable.note=此开关会关系到Dinky JVM Monitor,决定监控页面中的Dinky Server显示,以及JVM Metrics采集 -sys.metrics.settings.sys.gatherTiming=Dinky JVM Metrics 采集时间粒度 -sys.metrics.settings.sys.gatherTiming.note=Dinky JVM Metrics 采集时间粒度,定时任务间隔触发 -sys.metrics.settings.flink.gatherTiming=Flink Metrics 采集时间粒度 -sys.metrics.settings.flink.gatherTiming.note=Flink Metrics 采集时间粒度,定时任务间隔触发 -sys.metrics.settings.flink.gatherTimeout=Flink Metrics 采集时间粒度,定时任务间隔触发 -sys.metrics.settings.flink.gatherTimeout.note=Flink Metrics 采集超时时长,定时任务间隔触发(此配置项应小于Flink Metrics 采集时间粒度) -sys.resource.settings.base.enable=是否启用Resource -sys.resource.settings.base.enable.note=启用资源管理功能,如果切换存储模式时,需关闭此开关,相关配置完成后,再开启 -sys.resource.settings.base.upload.base.path=上传目录的根路径 -sys.resource.settings.base.upload.base.path.note=资源存储在HDFS/OSS (S3)路径上,资源文件将存储到此基本路径,自行配置,请确保该目录存在于相关存储系统上并具有读写权限。 -sys.resource.settings.base.model=存储模式 -sys.resource.settings.base.model.note=支持HDFS、S3(Minio、阿里云OSS、腾讯云COS等..),切换选项后即可生效,同时并迁移资源文件 +sys.dolphinscheduler.settings.token.note=DolphinScheduler\u7684Token\uFF0C\u8BF7\u5728DolphinScheduler\u7684\u5B89\u5168\u4E2D\u5FC3->\u4EE4\u724C\u7BA1\u7406\u4E2D\u521B\u5EFA\u4E00\u4E2Atoken\uFF0C\u5E76\u586B\u5165\u8BE5\u914D\u7F6E\u4E2D +sys.dolphinscheduler.settings.projectName=DolphinScheduler \u9879\u76EE\u540D +sys.dolphinscheduler.settings.projectName.note=DolphinScheduler \u4E2D\u6307\u5B9A\u7684\u9879\u76EE\u540D\u79F0\uFF0C\u4E0D\u533A\u5206\u5927\u5C0F\u5199 +sys.ldap.settings.url=Ldap \u670D\u52A1\u5730\u5740 +sys.ldap.settings.url.note=Ldap \u8BA4\u8BC1\u670D\u52A1\u5730\u5740\uFF0C\u4F8B\u5982\uFF1Aldap://192.168.111.1:389 +sys.ldap.settings.userDn=\u767B\u5F55\u7528\u6237\u540D\uFF08DN\uFF09 +sys.ldap.settings.userDn.note=\u7528\u4E8E\u8FDE\u63A5 Ldap \u670D\u52A1\u7684\u7528\u6237\u540D\uFF0C\u6216\u8005\u7BA1\u7406\u5458DN +sys.ldap.settings.userPassword=\u767B\u5F55\u5BC6\u7801 +sys.ldap.settings.userPassword.note=\u7528\u4E8E\u8FDE\u63A5ldap\u670D\u52A1\u7684\u5BC6\u7801 +sys.ldap.settings.timeLimit=\u8FDE\u63A5\u8D85\u65F6 +sys.ldap.settings.timeLimit.note=\u8FDE\u63A5 Ldap \u670D\u52A1\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u8D85\u8FC7\u5219\u65AD\u5F00 +sys.ldap.settings.baseDn=\u7528\u6237\u57FA\u7840 DN +sys.ldap.settings.baseDn.note=Dinky \u4F1A\u5728\u6B64\u57FA\u7840 DN \u4E0B\u8FDB\u884C\u7528\u6237\u641C\u7D22,\u4F8B\u5982\uFF1Aou=users,dc=dinky,dc=com +sys.ldap.settings.filter=\u7528\u6237\u8FC7\u6EE4\u89C4\u5219 +sys.ldap.settings.filter.note=\u4F7F\u7528 Ldap \u7684 filter \u8BED\u6CD5\u8FDB\u884C\u7528\u6237\u8FC7\u6EE4 +sys.ldap.settings.autoload=\u767B\u5F55\u65F6\u81EA\u52A8\u6620\u5C04\u7528\u6237 +sys.ldap.settings.autoload.note=\u5F00\u542F\u540E\uFF0C\u5F53\u7528\u6237\u4F7F\u7528 LDAP \u767B\u5F55\u65F6\uFF0C\u5982\u679C\u6CA1\u6709\u76F8\u5E94\u7684 Dinky \u7528\u6237\u6620\u5C04\uFF0C\u5219\u4F1A\u81EA\u52A8\u62C9\u53D6 LDAP \u4FE1\u606F\u521B\u5EFA\u4E00\u4E2A Dinky \u7528\u6237\u4E0E\u4E4B\u6620\u5C04\uFF0C\u5982\u679C\u5173\u95ED\u6B64\u529F\u80FD\uFF0C\u5BF9\u4E8E\u672A\u5BFC\u5165\u7684 LDAP \u7528\u6237\u5C06\u65E0\u6CD5\u767B\u5F55 +sys.ldap.settings.defaultTeant=LDAP \u5BFC\u5165\u9ED8\u8BA4\u79DF\u6237\u7F16\u7801 +sys.ldap.settings.defaultTeant.note=\u5F00\u542F\u81EA\u52A8\u5BFC\u5165\u7528\u6237\u540E\uFF0C\u65B0\u7528\u6237\u767B\u5F55\u9700\u8981\u4E00\u4E2A\u9ED8\u8BA4\u7684\u79DF\u6237\u7F16\u7801\uFF0C\u5426\u5219\u65E0\u6CD5\u767B\u5F55,\u4F8B\u5982: DefaultTenant +sys.ldap.settings.castUsername=LDAP \u7528\u6237\u540D\u5B57\u6BB5 +sys.ldap.settings.castUsername.note=\u9700\u8981\u586B\u5199\u4E00\u4E2A LDAP \u4E2D\u7528\u6237\u7684\u5C5E\u6027\u5B57\u6BB5\u6765\u4E0E Dinky \u7528\u6237\u5BF9\u5E94\uFF0C\u5FC5\u987B\u586B\u5199\uFF0C\u4E00\u822C\u53EF\u9009\u4E3A cn \u6216\u8005 uid\u8868\u793A\u7528\u6237\u552F\u4E00\u6807\u8BC6 +sys.ldap.settings.castNickname=LDAP \u6635\u79F0\u5B57\u6BB5 +sys.ldap.settings.castNickname.note=\u9700\u8981\u586B\u5199\u4E00\u4E2A LDAP \u4E2D\u7528\u6237\u7684\u5C5E\u6027\u5B57\u6BB5\u6765\u4E0E Dinky \u6635\u79F0\u5BF9\u5E94\uFF0C\u5FC5\u987B\u586B\u5199\uFF0C\u4E00\u822C\u53EF\u9009\u4E3A sn \u6216\u8005\u5176\u4ED6\u6807\u8BC6\uFF0C\u4E0D\u8981\u6C42\u552F\u4E00 +sys.ldap.settings.enable=\u662F\u5426\u542F\u7528 Ldap +sys.ldap.settings.enable.note=\u5F00\u542F LDAP \u767B\u5F55\u529F\u80FD +sys.metrics.settings.sys.enable=Dinky JVM Monitor \u5F00\u5173 +sys.metrics.settings.sys.enable.note=\u6B64\u5F00\u5173\u4F1A\u5173\u7CFB\u5230Dinky JVM Monitor\uFF0C\u51B3\u5B9A\u76D1\u63A7\u9875\u9762\u4E2D\u7684Dinky Server\u663E\u793A\uFF0C\u4EE5\u53CAJVM Metrics\u91C7\u96C6 +sys.metrics.settings.sys.gatherTiming=Dinky JVM Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6 +sys.metrics.settings.sys.gatherTiming.note=Dinky JVM Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1 +sys.metrics.settings.flink.gatherTiming=Flink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6 +sys.metrics.settings.flink.gatherTiming.note=Flink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1 +sys.metrics.settings.flink.gatherTimeout=Flink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1 +sys.metrics.settings.flink.gatherTimeout.note=Flink Metrics \u91C7\u96C6\u8D85\u65F6\u65F6\u957F\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1\uFF08\u6B64\u914D\u7F6E\u9879\u5E94\u5C0F\u4E8EFlink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF09 +sys.resource.settings.base.enable=\u662F\u5426\u542F\u7528Resource +sys.resource.settings.base.enable.note=\u542F\u7528\u8D44\u6E90\u7BA1\u7406\u529F\u80FD\uFF0C\u5982\u679C\u5207\u6362\u5B58\u50A8\u6A21\u5F0F\u65F6\uFF0C\u9700\u5173\u95ED\u6B64\u5F00\u5173\uFF0C\u76F8\u5173\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u518D\u5F00\u542F +sys.resource.settings.base.upload.base.path=\u4E0A\u4F20\u76EE\u5F55\u7684\u6839\u8DEF\u5F84 +sys.resource.settings.base.upload.base.path.note=\u8D44\u6E90\u5B58\u50A8\u5728HDFS/OSS (S3)\u8DEF\u5F84\u4E0A\uFF0C\u8D44\u6E90\u6587\u4EF6\u5C06\u5B58\u50A8\u5230\u6B64\u57FA\u672C\u8DEF\u5F84\uFF0C\u81EA\u884C\u914D\u7F6E\uFF0C\u8BF7\u786E\u4FDD\u8BE5\u76EE\u5F55\u5B58\u5728\u4E8E\u76F8\u5173\u5B58\u50A8\u7CFB\u7EDF\u4E0A\u5E76\u5177\u6709\u8BFB\u5199\u6743\u9650\u3002 +sys.resource.settings.base.model=\u5B58\u50A8\u6A21\u5F0F +sys.resource.settings.base.model.note=\u652F\u6301HDFS\u3001S3(Minio\u3001\u963F\u91CC\u4E91OSS\u3001\u817E\u8BAF\u4E91COS\u7B49..)\uFF0C\u5207\u6362\u9009\u9879\u540E\u5373\u53EF\u751F\u6548\uFF0C\u540C\u65F6\u5E76\u8FC1\u79FB\u8D44\u6E90\u6587\u4EF6 -sys.resource.settings.oss.endpoint=对象存储服务的 URL(Endpoint) -sys.resource.settings.oss.endpoint.note=例如:https://oss-cn-hangzhou.aliyuncs.com +sys.resource.settings.oss.endpoint=\u5BF9\u8C61\u5B58\u50A8\u670D\u52A1\u7684 URL\uFF08Endpoint\uFF09 +sys.resource.settings.oss.endpoint.note=\u4F8B\u5982\uFF1Ahttps://oss-cn-hangzhou.aliyuncs.com sys.resource.settings.oss.accessKey=Access key -sys.resource.settings.oss.accessKey.note=Access key就像用户ID,可以唯一标识你的账户 +sys.resource.settings.oss.accessKey.note=Access key\u5C31\u50CF\u7528\u6237ID\uFF0C\u53EF\u4EE5\u552F\u4E00\u6807\u8BC6\u4F60\u7684\u8D26\u6237 sys.resource.settings.oss.secretKey=Secret key -sys.resource.settings.oss.secretKey.note=Secret key是你账户的密码 -sys.resource.settings.oss.bucketName=存储桶名称 -sys.resource.settings.oss.bucketName.note=默认的存储桶名称 -sys.resource.settings.oss.region=区域 -sys.resource.settings.oss.region.note=区域,例如:oss-cn-hangzhou +sys.resource.settings.oss.secretKey.note=Secret key\u662F\u4F60\u8D26\u6237\u7684\u5BC6\u7801 +sys.resource.settings.oss.bucketName=\u5B58\u50A8\u6876\u540D\u79F0 +sys.resource.settings.oss.bucketName.note=\u9ED8\u8BA4\u7684\u5B58\u50A8\u6876\u540D\u79F0 +sys.resource.settings.oss.region=\u533A\u57DF +sys.resource.settings.oss.region.note=\u533A\u57DF,\u4F8B\u5982\uFF1Aoss-cn-hangzhou sys.resource.settings.oss.path.style.access=Path Style -sys.resource.settings.oss.path.style.access.note=是否开启 path style, 不同的提供方(如阿里云oss,腾讯云cos)支持情况不同,请阅读提供方文档说明进行填写 +sys.resource.settings.oss.path.style.access.note=\u662F\u5426\u5F00\u542F path style, \u4E0D\u540C\u7684\u63D0\u4F9B\u65B9\uFF08\u5982\u963F\u91CC\u4E91oss\uFF0C\u817E\u8BAF\u4E91cos\uFF09\u652F\u6301\u60C5\u51B5\u4E0D\u540C\uFF0C\u8BF7\u9605\u8BFB\u63D0\u4F9B\u65B9\u6587\u6863\u8BF4\u660E\u8FDB\u884C\u586B\u5199 -sys.resource.settings.hdfs.root.user=HDFS 操作用户名 -sys.resource.settings.hdfs.root.user.note=HDFS 操作用户名 +sys.resource.settings.hdfs.root.user=HDFS \u64CD\u4F5C\u7528\u6237\u540D +sys.resource.settings.hdfs.root.user.note=HDFS \u64CD\u4F5C\u7528\u6237\u540D sys.resource.settings.hdfs.fs.defaultFS=HDFS defaultFS -sys.resource.settings.hdfs.fs.defaultFS.note=fs.defaultFS 配置项,例如: 远程 HDFS:hdfs://localhost:9000,本地:file:/// +sys.resource.settings.hdfs.fs.defaultFS.note=fs.defaultFS \u914D\u7F6E\u9879\uFF0C\u4F8B\u5982: \u8FDC\u7A0B HDFS\uFF1Ahdfs://localhost:9000\uFF0C\u672C\u5730\uFF1Afile:/// #Dinky Gateway -gateway.kubernetes.test.failed=测试 Flink 配置失败: +gateway.kubernetes.test.failed=\u6D4B\u8BD5 Flink \u914D\u7F6E\u5931\u8D25\uFF1A # Task -task.status.is.not.done=当前作业状态未停止,请停止后操作 -task.sql.explain.failed=sql解析失败,请检查 -task.update.failed=Task更新失败 +task.status.is.not.done=\u5F53\u524D\u4F5C\u4E1A\u72B6\u6001\u672A\u505C\u6B62\uFF0C\u8BF7\u505C\u6B62\u540E\u64CD\u4F5C +task.sql.explain.failed=sql\u89E3\u6790\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5 +task.update.failed=Task\u66F4\u65B0\u5931\u8D25 # process -process.submit.submitTask=提交作业 -process.submit.checkSql=检查作业 -process.submit.execute=执行作业 -process.submit.buildConfig=构建配置信息 -process.submit.execute.commSql=执行普通sql -process.submit.execute.flinkSql=执行flinkSql -process.register.exits=当前任务正在执行,请勿重复提交,如有问题请前往配置中心查看 +process.submit.submitTask=\u63D0\u4EA4\u4F5C\u4E1A +process.submit.checkSql=\u68C0\u67E5\u4F5C\u4E1A +process.submit.execute=\u6267\u884C\u4F5C\u4E1A +process.submit.buildConfig=\u6784\u5EFA\u914D\u7F6E\u4FE1\u606F +process.submit.execute.commSql=\u6267\u884C\u666E\u901Asql +process.submit.execute.flinkSql=\u6267\u884CflinkSql +process.register.exits=\u5F53\u524D\u4EFB\u52A1\u6B63\u5728\u6267\u884C\uFF0C\u8BF7\u52FF\u91CD\u590D\u63D0\u4EA4\uFF0C\u5982\u6709\u95EE\u9898\u8BF7\u524D\u5F80\u914D\u7F6E\u4E2D\u5FC3\u67E5\u770B # resource -resource.root.dir.not.allow.delete=根目录不允许删除 -resource.dir.or.file.not.exist=资源目录或文件不存在 \ No newline at end of file +resource.root.dir.not.allow.delete=\u6839\u76EE\u5F55\u4E0D\u5141\u8BB8\u5220\u9664 +resource.dir.or.file.not.exist=\u8D44\u6E90\u76EE\u5F55\u6216\u6587\u4EF6\u4E0D\u5B58\u5728 \ No newline at end of file diff --git a/dinky-core/pom.xml b/dinky-core/pom.xml index b16dd95be2..bf438da5b3 100644 --- a/dinky-core/pom.xml +++ b/dinky-core/pom.xml @@ -79,6 +79,11 @@ dinky-alert-email ${scope.runtime} + + org.dinky + dinky-alert-http + ${scope.runtime} + org.dinky dinky-metadata-mysql diff --git a/dinky-web/src/components/Flink/FlinkDag/index.tsx b/dinky-web/src/components/Flink/FlinkDag/index.tsx index eace0edeb4..ac4dd0d85a 100644 --- a/dinky-web/src/components/Flink/FlinkDag/index.tsx +++ b/dinky-web/src/components/Flink/FlinkDag/index.tsx @@ -276,7 +276,11 @@ const FlinkDag = (props: DagProps) => { { key: '1', label: 'Detail', - children:
{(currentSelect?.getData().description)?.replaceAll("
","\n")}
+ children: ( +
+ {currentSelect?.getData().description?.replaceAll('
', '\n')} +
+ ) }, { key: '2', diff --git a/dinky-web/src/pages/DataStudio/HeaderContainer/function.tsx b/dinky-web/src/pages/DataStudio/HeaderContainer/function.tsx index bdfb84f0dc..c3f36e485e 100644 --- a/dinky-web/src/pages/DataStudio/HeaderContainer/function.tsx +++ b/dinky-web/src/pages/DataStudio/HeaderContainer/function.tsx @@ -20,7 +20,6 @@ import { TabsPageType, TaskDataType } from '@/pages/DataStudio/model'; import { JOB_LIFE_CYCLE, JOB_STATUS } from '@/pages/DevOps/constants'; import { DIALECT } from '@/services/constants'; -import { EnvironmentOutlined } from '@ant-design/icons'; /** * @description: 生成面包屑 diff --git a/dinky-web/src/pages/DataStudio/HeaderContainer/index.tsx b/dinky-web/src/pages/DataStudio/HeaderContainer/index.tsx index a9d768cf6f..a85bd8813a 100644 --- a/dinky-web/src/pages/DataStudio/HeaderContainer/index.tsx +++ b/dinky-web/src/pages/DataStudio/HeaderContainer/index.tsx @@ -49,8 +49,10 @@ import { import { JOB_LIFE_CYCLE, JOB_STATUS } from '@/pages/DevOps/constants'; import { SysConfigStateType } from '@/pages/SettingCenter/GlobalSetting/model'; import { SettingConfigKeyEnum } from '@/pages/SettingCenter/GlobalSetting/SettingOverView/constants'; +import { queryList } from '@/services/api'; import { handleOption, handlePutDataJson, queryDataByParams } from '@/services/BusinessCrud'; import { DIALECT } from '@/services/constants'; +import { API_CONSTANTS } from '@/services/endpoints'; import { DolphinTaskDefinition, DolphinTaskMinInfo } from '@/types/Studio/data.d'; import { l } from '@/utils/intl'; import { SuccessMessageAsync } from '@/utils/messages'; @@ -71,8 +73,6 @@ import { connect } from '@umijs/max'; import { Breadcrumb, Descriptions, Modal, Space } from 'antd'; import { ButtonProps } from 'antd/es/button/button'; import React, { memo, useEffect, useState } from 'react'; -import {queryList} from "@/services/api"; -import {API_CONSTANTS} from "@/services/endpoints"; const headerStyle: React.CSSProperties = { display: 'inline-flex', @@ -364,10 +364,10 @@ const HeaderContainer = (props: connect) => { props: { onClick: async () => { const result = await queryList(API_CONSTANTS.GET_JOB_LIST, { - filter: {taskId: [currentData?.id]}, - currentPage: 1, + filter: { taskId: [currentData?.id] }, + currentPage: 1 }); - window.open(`/#/devops/job-detail?id=${result.data[0].id}`) + window.open(`/#/devops/job-detail?id=${result.data[0].id}`); }, target: '_blank' } @@ -446,7 +446,12 @@ const HeaderContainer = (props: connect) => { return ( {/*{item.title}} items={buildBreadcrumbItems(activeBreadcrumbTitle)} />*/} - + + ); }; diff --git a/dinky-web/src/pages/DevOps/JobList/components/Overview/index.tsx b/dinky-web/src/pages/DevOps/JobList/components/Overview/index.tsx index 08e2fa116d..1c6994e0c3 100644 --- a/dinky-web/src/pages/DevOps/JobList/components/Overview/index.tsx +++ b/dinky-web/src/pages/DevOps/JobList/components/Overview/index.tsx @@ -28,6 +28,7 @@ import { SteamIcons, UnknownIcons } from '@/components/Icons/DevopsIcons'; +import useHookRequest from '@/hooks/useHookRequest'; import { DevopContext } from '@/pages/DevOps'; import { JOB_STATUS } from '@/pages/DevOps/constants'; import StatisticsCard from '@/pages/DevOps/JobList/components/Overview/StatisticsCard'; @@ -37,12 +38,11 @@ import { StatusCountOverView } from '@/types/Home/data'; import { l } from '@/utils/intl'; import { ProCard } from '@ant-design/pro-components'; import { Button, Col, Row, Space } from 'antd'; -import { useContext, useEffect, useState } from 'react'; -import useHookRequest from "@/hooks/useHookRequest"; +import { useContext } from 'react'; const JobOverview = (props: any) => { const { statusFilter, setStatusFilter } = useContext(DevopContext); - const {data} = useHookRequest(getData,{defaultParams:[API_CONSTANTS.GET_STATUS_COUNT]}) + const { data } = useHookRequest(getData, { defaultParams: [API_CONSTANTS.GET_STATUS_COUNT] }); const statusCount = data as StatusCountOverView; return ( diff --git a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx index 9fdb2e2519..dbb5532327 100644 --- a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx +++ b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx @@ -17,17 +17,19 @@ * */ +import CodeEdit from '@/components/CustomEditor/CodeEdit'; import { RequestMethod } from '@/pages/RegCenter/Alert/AlertInstance/constans'; import { Alert } from '@/types/RegCenter/data.d'; import { l } from '@/utils/intl'; import { ProForm, ProFormGroup, + ProFormItem, ProFormList, ProFormSelect, ProFormText } from '@ant-design/pro-components'; -import { Space } from 'antd'; +import { Col, Divider, Row, Space } from 'antd'; import { FormInstance } from 'antd/es/form/hooks/useForm'; import { Values } from 'async-validator'; import React from 'react'; @@ -36,11 +38,15 @@ type HttpProps = { values: Partial; form: FormInstance; }; +const CodeEditProps = { + height: '30vh', + lineNumbers: 'on', + language: 'json' +}; const Http: React.FC = (props) => { const { values, form } = props; const params = values.params as Alert.AlertInstanceParamsHttp; - return ( <> @@ -61,51 +67,81 @@ const Http: React.FC = (props) => { /> - {/*这有 bug,待解决*/} - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - {/*这有 bug,待解决*/} - - - - - - - - + {/**/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/**/} ); }; diff --git a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/service.ts b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/service.ts index f2bae1a38b..d8c3fa2c06 100644 --- a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/service.ts +++ b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/service.ts @@ -37,9 +37,12 @@ export async function createOrModifyAlertInstance(alertInstance: Alert.AlertInst export async function sendTest(alertInstance: Alert.AlertInstance) { await LoadingMessageAsync(l('app.request.test.alert.msg')); try { - const { code, msg } = await postAll(API_CONSTANTS.ALERT_INSTANCE_SEND_TEST, alertInstance); + const { data, code, msg } = await postAll( + API_CONSTANTS.ALERT_INSTANCE_SEND_TEST, + alertInstance + ); if (code === RESPONSE_CODE.SUCCESS) { - SuccessMessage(msg); + SuccessMessage(`${msg}-->${data}`); return true; } else { WarningMessage(msg); diff --git a/dinky-web/src/pages/RegCenter/Cluster/Configuration/components/ConfigurationModal/ConfigurationForm/FlinkK8s/index.tsx b/dinky-web/src/pages/RegCenter/Cluster/Configuration/components/ConfigurationModal/ConfigurationForm/FlinkK8s/index.tsx index 946287fd4f..6fdfd23308 100644 --- a/dinky-web/src/pages/RegCenter/Cluster/Configuration/components/ConfigurationModal/ConfigurationForm/FlinkK8s/index.tsx +++ b/dinky-web/src/pages/RegCenter/Cluster/Configuration/components/ConfigurationModal/ConfigurationForm/FlinkK8s/index.tsx @@ -92,7 +92,7 @@ const FlinkK8s = (props: { type: string; value: any; form: FormInstance reader.readAsText(file); reader.onload = () => { form.setFieldValue(name, reader.result as string); - onChange(reader.result as string + "\n"); + onChange((reader.result as string) + '\n'); }; }, showUploadList: false diff --git a/dinky-web/src/types/RegCenter/data.d.ts b/dinky-web/src/types/RegCenter/data.d.ts index 05a9074adc..74e426e917 100644 --- a/dinky-web/src/types/RegCenter/data.d.ts +++ b/dinky-web/src/types/RegCenter/data.d.ts @@ -65,6 +65,7 @@ declare namespace Alert { url: string; method: string; headers: ConfigItem[]; + body: any; }; export type AlertInstanceParamsEmail = { diff --git a/pom.xml b/pom.xml index 891b064adc..badb91c6d7 100644 --- a/pom.xml +++ b/pom.xml @@ -560,6 +560,11 @@ dinky-alert-email ${project.version}
+ + org.dinky + dinky-alert-http + ${project.version} + org.dinky dinky-daemon From 92457e9842846aab701db95eb1e851201ec68a57 Mon Sep 17 00:00:00 2001 From: ikiler Date: Thu, 21 Dec 2023 22:44:27 +0800 Subject: [PATCH 3/8] Complete HTTP alert --- .../InstanceForm/Http/index.tsx | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx index dbb5532327..899e72251b 100644 --- a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx +++ b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx @@ -121,27 +121,6 @@ const Http: React.FC = (props) => { - {/**/} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/**/} ); }; From b4e487faa2297d9f44424bfb9aa68886665673f1 Mon Sep 17 00:00:00 2001 From: ikiler Date: Thu, 21 Dec 2023 22:47:55 +0800 Subject: [PATCH 4/8] fix comment --- .../src/main/java/org/dinky/alert/http/HttpAlert.java | 3 +-- .../src/main/java/org/dinky/alert/http/HttpConstants.java | 2 +- .../src/main/java/org/dinky/alert/http/HttpSender.java | 2 +- dinky-alert/dinky-alert-http/src/main/resources/Http.ftl | 2 -- 4 files changed, 3 insertions(+), 6 deletions(-) delete mode 100644 dinky-alert/dinky-alert-http/src/main/resources/Http.ftl diff --git a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java index 3f0458faa9..13ddfda6da 100644 --- a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java +++ b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpAlert.java @@ -23,9 +23,8 @@ import org.dinky.alert.AlertResult; /** - * DingTalkAlert + * Http Alert * - * @since 2022/2/23 19:28 */ public class HttpAlert extends AbstractAlert { diff --git a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java index d7b42c9ed6..dae01826a3 100644 --- a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java +++ b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpConstants.java @@ -19,7 +19,7 @@ package org.dinky.alert.http; -/** DingTalkConstants */ +/** Http Constants */ public class HttpConstants { public static final String TYPE = "Http"; diff --git a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java index e2f2321a73..43c601d0d6 100644 --- a/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java +++ b/dinky-alert/dinky-alert-http/src/main/java/org/dinky/alert/http/HttpSender.java @@ -47,7 +47,7 @@ import cn.hutool.json.JSONUtil; /** - * DingTalkSender + * Http Sender */ public class HttpSender { private static final Logger logger = LoggerFactory.getLogger(HttpSender.class); diff --git a/dinky-alert/dinky-alert-http/src/main/resources/Http.ftl b/dinky-alert/dinky-alert-http/src/main/resources/Http.ftl deleted file mode 100644 index 4c8b3c2405..0000000000 --- a/dinky-alert/dinky-alert-http/src/main/resources/Http.ftl +++ /dev/null @@ -1,2 +0,0 @@ -${title} -${content} \ No newline at end of file From 25fb457114dfc74bac413505f80da533a5476650 Mon Sep 17 00:00:00 2001 From: ikiler Date: Thu, 21 Dec 2023 22:53:36 +0800 Subject: [PATCH 5/8] fix i81n --- dinky-web/src/locales/en-US/pages.ts | 6 ++++++ dinky-web/src/locales/zh-CN/pages.ts | 6 ++++++ .../AlertTypeChoose/InstanceForm/Http/index.tsx | 13 ++++--------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/dinky-web/src/locales/en-US/pages.ts b/dinky-web/src/locales/en-US/pages.ts index 48d34d4cec..321da0563d 100644 --- a/dinky-web/src/locales/en-US/pages.ts +++ b/dinky-web/src/locales/en-US/pages.ts @@ -663,6 +663,12 @@ export default { 'rc.ai.http.methodPleaseHolder': 'Please select the request method', 'rc.ai.http.headers': 'Request headers', 'rc.ai.http.body': 'Request body', + 'rc.ai.http.contentFiled': 'Content fields', + 'rc.ai.http.contentFiled.help': + "In HTTP requests, the fields in the request body are replaced with 'Alarm Message', and if there are multiple layers of nested fields, use a JSON path expression, such as text.markdown.content", + 'rc.ai.http.titleFiled': 'Title field', + 'rc.ai.http.titleFiled.help': + "In HTTP requests, the field in the request body is replaced with 'header content', if there are multiple layers of nested fields, please use a JSON path expression, such as markdown.title, if not, the title is concatenated in the content field by default", 'rc.alert.template.create': 'Create Template', 'rc.alert.template.modify': 'Modify Template', 'rc.alert.template.new': 'Create an alert template', diff --git a/dinky-web/src/locales/zh-CN/pages.ts b/dinky-web/src/locales/zh-CN/pages.ts index 48673015ac..cc44554786 100644 --- a/dinky-web/src/locales/zh-CN/pages.ts +++ b/dinky-web/src/locales/zh-CN/pages.ts @@ -641,6 +641,12 @@ export default { 'rc.ai.http.methodPleaseHolder': '请选择请求方法', 'rc.ai.http.headers': '请求头', 'rc.ai.http.body': '请求体', + 'rc.ai.http.contentFiled': '内容字段', + 'rc.ai.http.contentFiled.help': + '在http请求中,请求体(body)内被替换为`告警消息`的字段,如果涉及多层嵌套字段,请使用json path表达式,例如 text.markdown.content', + 'rc.ai.http.titleFiled': '标题字段', + 'rc.ai.http.titleFiled.help': + '在http请求中,请求体(body)内被替换为`标题内容`的字段,如果涉及多层嵌套字段,请使用json path表达式,例如 markdown.title,如果不填写,则标题默认拼接在内容字段中', 'rc.alert.template.create': '创建模板', 'rc.alert.template.modify': '修改模板', 'rc.alert.template.new': '新建告警模板', diff --git a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx index 899e72251b..db27221f94 100644 --- a/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx +++ b/dinky-web/src/pages/RegCenter/Alert/AlertInstance/components/AlertTypeChoose/InstanceForm/Http/index.tsx @@ -93,19 +93,15 @@ const Http: React.FC = (props) => { @@ -120,7 +116,6 @@ const Http: React.FC = (props) => { - ); }; From 0844db5787a70b288320e0801883e001a8128463 Mon Sep 17 00:00:00 2001 From: ikiler Date: Thu, 21 Dec 2023 23:09:26 +0800 Subject: [PATCH 6/8] fix http test --- .../org/dinky/alert/http/HttpSenderTest.java | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java b/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java index 062cc7e901..6888712a0f 100755 --- a/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java +++ b/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java @@ -48,19 +48,13 @@ public void initConfig() { ConfigItem configItem = new ConfigItem("Content-Type", "application/json"); httpParams.setHeaders(Arrays.asList(configItem)); - ConfigItem msgType = new ConfigItem("msgtype", "markdown"); - ConfigItem title = new ConfigItem("title", AlertBaseConstant.ALERT_TEMPLATE_TITLE); - ConfigItem content = new ConfigItem("content", AlertBaseConstant.ALERT_TEMPLATE_MSG); - ConfigItem markdown = new ConfigItem("markdown", JSONUtil.toJsonStr(new HashMap() { - { - put("title", AlertBaseConstant.ALERT_TEMPLATE_TITLE); - put("text", AlertBaseConstant.ALERT_TEMPLATE_MSG); - } - })); - - Arrays.asList(msgType, content, title, markdown).forEach(item -> { - httpParams.getBody().add(item); - }); + httpParams.setBody(" {\n" + + " \"msgtype\": \"markdown\",\n" + + " \"markdown\": {\n" + + " \"title\": \"http 测试\",\n" + + " \"text\": \"\"\n" + + " }\n" + + "}"); httpConfig = JsonUtils.toMap(JSONUtil.toJsonStr(httpParams), String.class, Object.class); } From 847ff242c7866dba5df20ee1aa9c89ecb00c6159 Mon Sep 17 00:00:00 2001 From: ikiler Date: Thu, 21 Dec 2023 23:50:35 +0800 Subject: [PATCH 7/8] formate code --- .../org/dinky/alert/http/HttpSenderTest.java | 13 +- .../resources/i18n/messages_zh_CN.properties | 484 +++++++++--------- 2 files changed, 248 insertions(+), 249 deletions(-) diff --git a/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java b/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java index 6888712a0f..b3f146fd34 100755 --- a/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java +++ b/dinky-alert/dinky-alert-http/src/test/java/org/dinky/alert/http/HttpSenderTest.java @@ -48,13 +48,12 @@ public void initConfig() { ConfigItem configItem = new ConfigItem("Content-Type", "application/json"); httpParams.setHeaders(Arrays.asList(configItem)); - httpParams.setBody(" {\n" + - " \"msgtype\": \"markdown\",\n" + - " \"markdown\": {\n" + - " \"title\": \"http 测试\",\n" + - " \"text\": \"\"\n" + - " }\n" + - "}"); + httpParams.setBody(" {\n" + " \"msgtype\": \"markdown\",\n" + + " \"markdown\": {\n" + + " \"title\": \"http 测试\",\n" + + " \"text\": \"\"\n" + + " }\n" + + "}"); httpConfig = JsonUtils.toMap(JSONUtil.toJsonStr(httpParams), String.class, Object.class); } diff --git a/dinky-common/src/main/resources/i18n/messages_zh_CN.properties b/dinky-common/src/main/resources/i18n/messages_zh_CN.properties index a6927a14bd..ff7459310f 100644 --- a/dinky-common/src/main/resources/i18n/messages_zh_CN.properties +++ b/dinky-common/src/main/resources/i18n/messages_zh_CN.properties @@ -1,267 +1,267 @@ -test.connection.success=\u6D4B\u8BD5\u8FDE\u63A5\u6210\u529F -assign.menu.failed=\u5206\u914D\u83DC\u5355\u5931\u8D25 -ldap.user.autoload.forbaid=\u672A\u5F00\u542F\u81EA\u52A8\u6620\u5C04LDAP\u7528\u6237\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u5BFC\u5165 -cluster.instance.recycle.success=\u56DE\u6536\u6210\u529F -execute.failed=\u6267\u884C\u5931\u8D25 -ldap.user.duplicat=ldap\u5339\u914D\u5230\u591A\u4E2A\u7528\u6237\u6570\u636E -git.branch.not.found=\u83B7\u53D6\u4E0D\u5230\u5206\u652F\u4FE1\u606F -copy.success=\u590D\u5236\u6210\u529F -user.superadmin.cannot.disable=\u8D85\u7EA7\u7BA1\u7406\u5458\u7528\u6237\u4E0D\u80FD\u505C\u7528 -user.superadmin.cannot.delete=\u8D85\u7EA7\u7BA1\u7406\u5458\u7528\u6237\u4E0D\u80FD\u5220\u9664 -ds.work.flow.not.save=\u8BF7\u5148\u4FDD\u5B58\u5DE5\u4F5C\u6D41 -schedule.status.unknown=\u672A\u77E5\u72B6\u6001: {0} -user.binding.role.delete.all=\u7528\u6237\u7ED1\u5B9A\u89D2\u8272\u5220\u9664\u6240\u6709 -modify.failed=\u4FEE\u6539\u5931\u8D25 -git.build.success=\u9884\u66F4\u65B0\u72B6\u6001\u6210\u529F,\u5F00\u59CB\u6267\u884C\u6784\u5EFA\u6D41\u7A0B -menu.has.child=\u5B58\u5728\u5B50\u83DC\u5355 \u4E0D\u5141\u8BB8\u5220\u9664 -tenant.already.exists=\u79DF\u6237\u5DF2\u5B58\u5728 -save.failed=\u4FDD\u5B58\u5931\u8D25 -assign.menu.success=\u5206\u914D\u83DC\u5355\u6210\u529F -user.disabled.by.admin=\u5F53\u524D\u7528\u6237\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u7528 -select.menu=\u8BF7\u9009\u62E9\u83DC\u5355 -role.not.exist=\u89D2\u8272\u4E0D\u5B58\u5728 -delete.success=\u5220\u9664\u6210\u529F -clear.success=\u6E05\u9664\u6210\u529F -move.success=\u79FB\u52A8\u6210\u529F -ldap.login.forbid=\u5F53\u524D\u7528\u6237\u767B\u5F55\u6A21\u5F0F\u4E0D\u662FLDAP\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u4FEE\u6539,\u6216\u4E0D\u4F7F\u7528LDAP\u767B\u5F55 -request.params.not.valid.error=\u8BF7\u6C42\u53C2\u6570[{0}]\u65E0\u6548 -change.password.failed=\u4FEE\u6539\u5BC6\u7801\u5931\u8D25 -menu.name.exist=\u83DC\u5355\u5DF2\u5B58\u5728 -ds.task.type.not.support=\u6D77\u8C5A\u8C03\u5EA6\u7C7B\u578B\u4E3A [{}] \u4E0D\u652F\u6301,\u975EDINKY\u7C7B\u578B -datasource.connect.normal=\u6570\u636E\u6E90\u8FDE\u63A5\u6B63\u5E38 -restart.success=\u91CD\u542F\u6210\u529F -test.msg.job.log.url=\u70B9\u51FB\u67E5\u770B\u8BE5\u4EFB\u52A1\u7684\u5F02\u5E38\u65E5\u5FD7 -user.assign.role.success=\u7528\u6237\u5206\u914D\u89D2\u8272\u6210\u529F -global.params.check.error.value=\u5B57\u6BB5: {0}, \u4E0D\u5408\u6CD5\u7684\u503C: {1} -change.password.success=\u4FEE\u6539\u5BC6\u7801\u6210\u529F -user.not.exist=\u7528\u6237\u4E0D\u5B58\u5728 -refresh.success=\u5237\u65B0\u6210\u529F -ds.get.node.list.error=\u8282\u70B9\u83B7\u53D6\u5931\u8D25 -ldap.default.tenant.nofound=LDAP\u9ED8\u8BA4\u79DF\u6237\u4E0D\u5B58\u5728 -copy.failed=\u590D\u5236\u5931\u8D25 -folder.not.empty=\u8BE5\u76EE\u5F55\u4E0B\u5B58\u5728\u5B50\u76EE\u5F55/\u4F5C\u4E1A\uFF0C\u65E0\u6CD5\u5220\u9664 -be.replaced=token \u5DF2\u88AB\u9876\u4E0B\u7EBF -datasource.connect.success=\u6570\u636E\u6E90\u8FDE\u63A5\u6D4B\u8BD5\u6210\u529F -sign.out.success=\u9000\u51FA\u6210\u529F -added.success=\u65B0\u589E\u6210\u529F -tenant.binding.user=\u5220\u9664\u79DF\u6237\u5931\u8D25\uFF0C\u8BE5\u79DF\u6237\u5DF2\u7ED1\u5B9A\u7528\u6237 -send.test.failed=\u6D4B\u8BD5\u4FE1\u606F\u53D1\u9001\u5931\u8D25 -delete.failed=\u5220\u9664\u5931\u8D25 -role.binding.user=\u8BE5\u89D2\u8272\u5DF2\u7ED1\u5B9A\u7528\u6237\uFF0C\u65E0\u6CD5\u5220\u9664 -not.token=\u672A\u80FD\u8BFB\u53D6\u5230\u6709\u6548 Token -execute.success=\u6267\u884C\u6210\u529F -debug.success=\u8C03\u8BD5\u6210\u529F -debug.failed=\u8C03\u8BD5\u5931\u8D25 -publish.success=\u53D1\u5E03\u6210\u529F -publish.failed=\u53D1\u5E03\u5931\u8D25 -offline.success=\u4E0B\u7EBF\u6210\u529F -offline.failed=\u4E0B\u7EBF\u5931\u8D25 -version.rollback.success=\u7248\u672C\u56DE\u6EDA\u6210\u529F -version.rollback.failed=\u7248\u672C\u56DE\u6EDA\u5931\u8D25 -token.freezed=token \u5DF2\u88AB\u51BB\u7ED3 -menu.has.assign=\u83DC\u5355\u5DF2\u5206\u914D,\u4E0D\u5141\u8BB8\u5220\u9664 -datasource.status.refresh.success=\u6570\u636E\u6E90\u72B6\u6001\u5237\u65B0\u6210\u529F -user.not.login=\u7528\u6237\u672A\u767B\u5F55 -tenant.assign.user.failed=\u5206\u914D\u7528\u6237\u5931\u8D25 -stop.success=\u5DF2\u6210\u529F\u505C\u6B62 -move.failed=\u79FB\u52A8\u5931\u8D25 -get.tenant.failed=\u83B7\u53D6\u79DF\u6237\u4FE1\u606F\u5931\u8D25 -send.test.success=\u6D4B\u8BD5\u8FDE\u63A5\u6210\u529F -login.success=\u767B\u5F55\u6210\u529F -login.password.not.null=\u767B\u5F55\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A -unknown.error=\u672A\u77E5\u5F02\u5E38: {0} -stop.failed=\u505C\u6B62\u5931\u8D25 -role.name.exist=\u89D2\u8272\u5DF2\u5B58\u5728 -ldap.filter.incorrect=\u7528\u6237\u8FC7\u6EE4\u89C4\u5219\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u586B\u5199\u76F8\u5173\u914D\u7F6E -tenant.assign.user.success=\u5206\u914D\u7528\u6237\u6210\u529F -ds.add.work.flow.definition.success=\u6DFB\u52A0\u5DE5\u4F5C\u6D41\u5B9A\u4E49\u6210\u529F -expired.token=Token \u5DF2\u8FC7\u671F -refresh.failed=\u5237\u65B0\u5931\u8D25 -operate.success=\u64CD\u4F5C\u6210\u529F -git.project.not.found=\u83B7\u53D6\u4E0D\u5230\u9879\u76EE\u4FE1\u606F -cluster.instance.heartbeat.success=\u96C6\u7FA4\u5B9E\u4F8B\u5FC3\u8DF3\u6210\u529F -ldap.no.user.found=LDAP\u8FDE\u63A5\u6210\u529F\uFF0C\u4F46\u672A\u5339\u914D\u5230\u4EFB\u4F55\u7528\u6237 -login.failure=\u7528\u6237\u767B\u5F55\u5931\u8D25 -request.params.error=\u8BF7\u6C42\u53C2\u6570\u9519\u8BEF -user.not.binding.tenant=\u7528\u6237\u672A\u7ED1\u5B9A\u79DF\u6237 -user.assign.role.failed=\u7528\u6237\u5206\u914D\u89D2\u8272\u5931\u8D25 -rename.failed=\u91CD\u547D\u540D\u5931\u8D25 -test.msg.job.name=\u6D4B\u8BD5\u4EFB\u52A1 -tenant.binding.user.delete.all=\u8BE5\u79DF\u6237\u7ED1\u5B9A\u7684\u7528\u6237\u5DF2\u88AB\u5168\u90E8\u5220\u9664 -menu.not.exist=\u83DC\u5355\u4E0D\u5B58\u5728 -test.msg.job.name.title=\u4EFB\u52A1 -ds.task.not.exist=\u4EFB\u52A1\u4E0D\u5B58\u5728 -global.params.check.error=\u5B57\u6BB5: {0}, {1} -test.msg.title=\u5B9E\u65F6\u544A\u8B66\u76D1\u63A7 -user.name.passwd.error=\u7528\u6237\u540D\u6216\u5BC6\u7801\u4E0D\u6B63\u786E -no.prefix=\u672A\u6309\u7167\u6307\u5B9A\u524D\u7F00\u63D0\u4EA4 token -query.success=\u67E5\u8BE2\u6210\u529F -ds.work.flow.definition.not.exist=\u5DE5\u4F5C\u6D41\u5B9A\u4E49\u4E0D\u5B58\u5728,\u4F60\u53EF\u4EE5\u6DFB\u52A0\u5DE5\u4F5C\u6D41\u5B9A\u4E49 -ds.work.flow.definition.process.update=\u5DE5\u4F5C\u6D41\u5B9A\u4E49 [{}] \u8FDB\u884C\u66F4\u65B0,TaskCode: [{}],\u53C2\u6570 1: [{}],\u53C2\u6570 2: [{}] -tenant.name.exist=\u79DF\u6237\u5DF2\u5B58\u5728 -failed=\u83B7\u53D6\u5931\u8D25 -added.failed=\u65B0\u589E\u5931\u8D25 -task.not.exist=\u4EFB\u52A1\u4E0D\u5B58\u5728 -task.is.online=\u4EFB\u52A1\u5DF2\u4E0A\u7EBF\uFF0C\u7981\u6B62\u4FEE\u6539 -cluster.instance.deploy=\u90E8\u7F72\u5B8C\u6210 -clear.failed=\u6E05\u9664\u5931\u8D25 -rename.success=\u91CD\u547D\u540D\u6210\u529F -job.release.disabled.update=\u4F5C\u4E1A\u5DF2\u53D1\u5E03\uFF0C\u7981\u6B62\u4FEE\u6539 -success=\u83B7\u53D6\u6210\u529F -tenant.not.exist=\u79DF\u6237\u4E0D\u5B58\u5728 -user.already.exists=\u7528\u6237\u540D\u5DF2\u5B58\u5728 -git.building=\u6B64\u4EFB\u52A1\u6B63\u5728\u6784\u5EFA -ds.work.flow.definition.task.name.exist=\u5DE5\u4F5C\u6D41\u5B9A\u4E49 [{}] \u5DF2\u5B58\u5728\u4EFB\u52A1\u5B9A\u4E49 [{}] , \u5C06\u6267\u884C\u66F4\u65B0\u64CD\u4F5C -role.already.exists=\u89D2\u8272\u5DF2\u5B58\u5728 -internal.server.error.args=\u670D\u52A1\u7AEF\u5F02\u5E38: {0} -kick.out=token \u5DF2\u88AB\u8E22\u4E0B\u7EBF -restart.failed=\u91CD\u542F\u5931\u8D25 -invalid.token=\u65E0\u6548\u7684 Token -datasource.not.exist=\u6570\u636E\u6E90\u4E0D\u5B58\u5728 -datasource.clear.cache.success=\u6E05\u9664\u5E93\u8868\u7F13\u5B58\u6210\u529F -tenant.admin.already.exists=\u5DF2\u5B58\u5728\u79DF\u6237\u7BA1\u7406\u5458, \u79DF\u6237\u8D85\u7BA1\u53EA\u80FD\u6709\u4E00\u4E2A -ds.work.flow.definition.online=\u5DE5\u4F5C\u6D41\u5B9A\u4E49 [{}] \u5DF2\u7ECF\u4E0A\u7EBF -test.msg.job.url=\u8DF3\u8F6C\u81F3\u8BE5\u4EFB\u52A1 -savepoint.is.null=\u4FDD\u5B58\u70B9\u4E3A\u7A7A -git.sort.success=\u6392\u5E8F\u6210\u529F -ds.add.task.definition.success=\u6DFB\u52A0\u4EFB\u52A1\u5B9A\u4E49\u6210\u529F -alert.group.exist=\u544A\u8B66\u7EC4\u5DF2\u5B58\u5728 -git.sort.failed=\u6392\u5E8F\u5931\u8D25 -query.failed=\u67E5\u8BE2\u5931\u8D25 -save.success=\u4FDD\u5B58\u6210\u529F -cluster.instance.kill=\u5DF2\u6740\u6B7B\u8BE5\u8FDB\u7A0B/\u96C6\u7FA4 -cluster.not.exist=\u96C6\u7FA4\u4E0D\u5B58\u5728 -operate.failed=\u64CD\u4F5C\u5931\u8D25 -test.connection.failed=\u6D4B\u8BD5\u8FDE\u63A5\u5931\u8D25 -switching.tenant.success=\u9009\u62E9\u79DF\u6237\u6210\u529F -tenant.name.not.exist=\u79DF\u6237\u4E0D\u5B58\u5728 -job.instance.not.exist=\u4F5C\u4E1A\u5B9E\u4F8B\u4E0D\u5B58\u5728 -modify.success=\u4FEE\u6539\u6210\u529F -user.old.password.incorrect=\u7528\u6237\u65E7\u5BC6\u7801\u4E0D\u6B63\u786E -ldap.user.incorrect=LDAP\u7528\u6237\u540D\uFF08DN\uFF09\u4E0D\u6B63\u786E -role.binding.row.permission=\u8BE5\u89D2\u8272\u5DF2\u7ED1\u5B9A\u884C\u6743\u9650\uFF0C\u65E0\u6CD5\u5220\u9664 +test.connection.success=测试连接成功 +assign.menu.failed=分配菜单失败 +ldap.user.autoload.forbaid=未开启自动映射LDAP用户,请联系管理员导入 +cluster.instance.recycle.success=回收成功 +execute.failed=执行失败 +ldap.user.duplicat=ldap匹配到多个用户数据 +git.branch.not.found=获取不到分支信息 +copy.success=复制成功 +user.superadmin.cannot.disable=超级管理员用户不能停用 +user.superadmin.cannot.delete=超级管理员用户不能删除 +ds.work.flow.not.save=请先保存工作流 +schedule.status.unknown=未知状态: {0} +user.binding.role.delete.all=用户绑定角色删除所有 +modify.failed=修改失败 +git.build.success=预更新状态成功,开始执行构建流程 +menu.has.child=存在子菜单 不允许删除 +tenant.already.exists=租户已存在 +save.failed=保存失败 +assign.menu.success=分配菜单成功 +user.disabled.by.admin=当前用户已被管理员停用 +select.menu=请选择菜单 +role.not.exist=角色不存在 +delete.success=删除成功 +clear.success=清除成功 +move.success=移动成功 +ldap.login.forbid=当前用户登录模式不是LDAP,请联系管理员修改,或不使用LDAP登录 +request.params.not.valid.error=请求参数[{0}]无效 +change.password.failed=修改密码失败 +menu.name.exist=菜单已存在 +ds.task.type.not.support=海豚调度类型为 [{}] 不支持,非DINKY类型 +datasource.connect.normal=数据源连接正常 +restart.success=重启成功 +test.msg.job.log.url=点击查看该任务的异常日志 +user.assign.role.success=用户分配角色成功 +global.params.check.error.value=字段: {0}, 不合法的值: {1} +change.password.success=修改密码成功 +user.not.exist=用户不存在 +refresh.success=刷新成功 +ds.get.node.list.error=节点获取失败 +ldap.default.tenant.nofound=LDAP默认租户不存在 +copy.failed=复制失败 +folder.not.empty=该目录下存在子目录/作业,无法删除 +be.replaced=token 已被顶下线 +datasource.connect.success=数据源连接测试成功 +sign.out.success=退出成功 +added.success=新增成功 +tenant.binding.user=删除租户失败,该租户已绑定用户 +send.test.failed=测试信息发送失败 +delete.failed=删除失败 +role.binding.user=该角色已绑定用户,无法删除 +not.token=未能读取到有效 Token +execute.success=执行成功 +debug.success=调试成功 +debug.failed=调试失败 +publish.success=发布成功 +publish.failed=发布失败 +offline.success=下线成功 +offline.failed=下线失败 +version.rollback.success=版本回滚成功 +version.rollback.failed=版本回滚失败 +token.freezed=token 已被冻结 +menu.has.assign=菜单已分配,不允许删除 +datasource.status.refresh.success=数据源状态刷新成功 +user.not.login=用户未登录 +tenant.assign.user.failed=分配用户失败 +stop.success=已成功停止 +move.failed=移动失败 +get.tenant.failed=获取租户信息失败 +send.test.success=测试信息发送成功 +login.success=登录成功 +login.password.not.null=登录密码不能为空 +unknown.error=未知异常: {0} +stop.failed=停止失败 +role.name.exist=角色已存在 +ldap.filter.incorrect=用户过滤规则不能为空,请填写相关配置 +tenant.assign.user.success=分配用户成功 +ds.add.work.flow.definition.success=添加工作流定义成功 +expired.token=Token 已过期 +refresh.failed=刷新失败 +operate.success=操作成功 +git.project.not.found=获取不到项目信息 +cluster.instance.heartbeat.success=集群实例心跳成功 +ldap.no.user.found=LDAP连接成功,但未匹配到任何用户 +login.failure=用户登录失败 +request.params.error=请求参数错误 +user.not.binding.tenant=用户未绑定租户 +user.assign.role.failed=用户分配角色失败 +rename.failed=重命名失败 +test.msg.job.name=测试任务 +tenant.binding.user.delete.all=该租户绑定的用户已被全部删除 +menu.not.exist=菜单不存在 +test.msg.job.name.title=任务 +ds.task.not.exist=任务不存在 +global.params.check.error=字段: {0}, {1} +test.msg.title=实时告警监控 +user.name.passwd.error=用户名或密码不正确 +no.prefix=未按照指定前缀提交 token +query.success=查询成功 +ds.work.flow.definition.not.exist=工作流定义不存在,你可以添加工作流定义 +ds.work.flow.definition.process.update=工作流定义 [{}] 进行更新,TaskCode: [{}],参数 1: [{}],参数 2: [{}] +tenant.name.exist=租户已存在 +failed=获取失败 +added.failed=新增失败 +task.not.exist=任务不存在 +task.is.online=任务已上线,禁止修改 +cluster.instance.deploy=部署完成 +clear.failed=清除失败 +rename.success=重命名成功 +job.release.disabled.update=作业已发布,禁止修改 +success=获取成功 +tenant.not.exist=租户不存在 +user.already.exists=用户名已存在 +git.building=此任务正在构建 +ds.work.flow.definition.task.name.exist=工作流定义 [{}] 已存在任务定义 [{}] , 将执行更新操作 +role.already.exists=角色已存在 +internal.server.error.args=服务端异常: {0} +kick.out=token 已被踢下线 +restart.failed=重启失败 +invalid.token=无效的 Token +datasource.not.exist=数据源不存在 +datasource.clear.cache.success=清除库表缓存成功 +tenant.admin.already.exists=已存在租户管理员, 租户超管只能有一个 +ds.work.flow.definition.online=工作流定义 [{}] 已经上线 +test.msg.job.url=跳转至该任务 +savepoint.is.null=保存点为空 +git.sort.success=排序成功 +ds.add.task.definition.success=添加任务定义成功 +alert.group.exist=告警组已存在 +git.sort.failed=排序失败 +query.failed=查询失败 +save.success=保存成功 +cluster.instance.kill=已杀死该进程/集群 +cluster.not.exist=集群不存在 +operate.failed=操作失败 +test.connection.failed=测试连接失败 +switching.tenant.success=选择租户成功 +tenant.name.not.exist=租户不存在 +job.instance.not.exist=作业实例不存在 +modify.success=修改成功 +user.old.password.incorrect=用户旧密码不正确 +ldap.user.incorrect=LDAP用户名(DN)不正确 +role.binding.row.permission=该角色已绑定行权限,无法删除 # dinky-admin -unknown.i18n=\u672A\u77E5 i18n \u4FE1\u606F,\u8BF7\u68C0\u67E5. . . +unknown.i18n=未知 i18n 信息,请检查. . . -file.upload.failed=\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25, \u539F\u56E0: {0} +file.upload.failed=文件上传失败, 原因: {0} -daemon.task.config.not.exist=\u7EBF\u7A0B\u4EFB\u52A1\u914D\u7F6E\u4E0D\u80FD\u4E3A\u7A7A -daemon.task.not.support=\u4E0D\u652F\u6301\u7EBF\u7A0B\u4EFB\u52A1\u7C7B\u578B\uFF1A +daemon.task.config.not.exist=线程任务配置不能为空 +daemon.task.not.support=不支持线程任务类型: # dinky-alert -alert.rule.jobFail=\u4F5C\u4E1A\u5931\u8D25 -alert.rule.getJobInfoFail=\u83B7\u53D6\u4F5C\u4E1A\u4FE1\u606F\u5931\u8D25 -alert.rule.jobRestart=\u4F5C\u4E1A\u91CD\u542F -alert.rule.checkpointFail=checkpoint\u5931\u8D25 -alert.rule.jobRunException=\u4F5C\u4E1A\u8FD0\u884C\u5F02\u5E38 -alert.rule.checkpointTimeout=checkpoint\u8D85\u65F6 +alert.rule.jobFail=作业失败 +alert.rule.getJobInfoFail=获取作业信息失败 +alert.rule.jobRestart=作业重启 +alert.rule.checkpointFail=checkpoint失败 +alert.rule.jobRunException=作业运行异常 +alert.rule.checkpointTimeout=checkpoint超时 # system config -sys.flink.settings.useRestAPI=\u4F7F\u7528 Rest API -sys.flink.settings.useRestAPI.note=\u5728\u8FD0\u7EF4 Flink \u4EFB\u52A1\u65F6\u662F\u5426\u4F7F\u7528 RestAPI -sys.flink.settings.sqlSeparator=SQL \u5206\u9694\u7B26 -sys.flink.settings.sqlSeparator.note=\u8BF7\u6CE8\u610F: \u9ED8\u8BA4\u5206\u9694\u7B26\u4E3A ';' ,\u5982\u679C\u60A8\u7684 SQL \u4E2D\u5305\u542B ';' ,\u8BF7\u4FEE\u6539\u6B64\u9879\u914D\u7F6E\u4E3A\u5176\u4ED6\u5B57\u7B26,\u4F8B\u5982: ';\\n', \u8BF7\u5FFD\u7565\u5355\u5F15\u53F7!!!! -sys.flink.settings.jobIdWait=Job \u63D0\u4EA4\u7B49\u5F85\u65F6\u95F4 -sys.flink.settings.jobIdWait.note=\u63D0\u4EA4 Application \u6216 PerJob \u4EFB\u52A1\u65F6\u83B7\u53D6 Job ID \u7684\u6700\u5927\u7B49\u5F85\u65F6\u95F4\uFF08\u79D2\uFF09 -sys.maven.settings.settingsFilePath=Maven \u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84 -sys.maven.settings.settingsFilePath.note=Maven \u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84, eg: /opt/maven-3.9.2/conf/settings.xml ,\u8BF7\u6CE8\u610F: \u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u83B7\u53D6\u6240\u5728\u4E3B\u673A\u7684 MAVEN_HOME \u73AF\u5883\u53D8\u91CF,\u5219\u6B64\u5904\u65E0\u9700\u586B\u5199,\u5982\u679C\u6CA1\u6709\u914D\u7F6E\u8BF7\u586B\u5199\u7EDD\u5BF9\u8DEF\u5F84 -sys.maven.settings.repository=Maven \u4ED3\u5E93\u5730\u5740 -sys.maven.settings.repository.note=Maven \u4ED3\u5E93\u5730\u5740 -sys.maven.settings.repositoryUser=Maven \u4ED3\u5E93\u7528\u6237\u540D -sys.maven.settings.repositoryUser.note=Maven \u79C1\u670D\u8BA4\u8BC1\u7528\u6237\u540D,\u5982\u679C\u9700\u8981\u914D\u7F6E Maven \u79C1\u670D\u4ED3\u5E93\u8BA4\u8BC1\u4FE1\u606F,\u8BF7\u586B\u5199\u6B64\u9879 -sys.maven.settings.repositoryPassword=Maven \u4ED3\u5E93\u5BC6\u7801 -sys.maven.settings.repositoryPassword.note=Maven \u79C1\u670D\u8BA4\u8BC1\u5BC6\u7801,\u5982\u679C\u9700\u8981\u914D\u7F6E Maven \u79C1\u670D\u4ED3\u5E93\u8BA4\u8BC1\u4FE1\u606F,\u8BF7\u586B\u5199\u6B64\u9879 -sys.env.settings.pythonHome=Python \u73AF\u5883\u53D8\u91CF -sys.env.settings.pythonHome.note=Python \u73AF\u5883\u53D8\u91CF,\u7528\u4E8E\u63D0\u4EA4 Python \u4EFB\u52A1\u4EE5\u53CA\u6784\u5EFA Python Udf -sys.env.settings.dinkyAddr=Dinky \u5730\u5740 -sys.env.settings.dinkyAddr.note=\u8BE5\u5730\u5740\u5FC5\u987B\u4E0EDinky Application\u540E\u53F0url\u4E2D\u914D\u7F6E\u7684\u5730\u5740\u76F8\u540C -sys.env.settings.maxRetainDays=\u4F5C\u4E1A\u5386\u53F2\u6700\u5927\u4FDD\u7559\u5929\u6570 -sys.env.settings.maxRetainDays.note=\u63D0\u4EA4\u7684\u4F5C\u4E1A\u5386\u53F2\u4E0E\u81EA\u52A8\u6CE8\u518C\u7684\u96C6\u7FA4\u8BB0\u5F55\u6700\u5927\u4FDD\u7559\u5929\u6570\uFF0C\u8FC7\u671F\u4F1A\u88AB\u81EA\u52A8\u5220\u9664 -sys.env.settings.maxRetainCount=\u4F5C\u4E1A\u5386\u53F2\u6700\u5927\u4FDD\u7559\u6570\u91CF -sys.env.settings.maxRetainCount.note=\u63D0\u4EA4\u7684\u4F5C\u4E1A\u5386\u53F2\u4E0E\u81EA\u52A8\u6CE8\u518C\u7684\u96C6\u7FA4\u8BB0\u5F55\u6700\u5927\u4FDD\u7559\u6570\u91CF\uFF0C\u5982\u679C\u4E0D\u8DB3\u8BE5\u6570\u91CF\uFF0C\u5219\u4E0D\u4F1A\u88AB\u5220\u9664\uFF0C\u5373\u4F7F\u5DF2\u7ECF\u8FC7\u4E86\u505A\u5927\u4FDD\u7559\u5929\u6570 +sys.flink.settings.useRestAPI=使用 Rest API +sys.flink.settings.useRestAPI.note=在运维 Flink 任务时是否使用 RestAPI +sys.flink.settings.sqlSeparator=SQL 分隔符 +sys.flink.settings.sqlSeparator.note=请注意: 默认分隔符为 ';' ,如果您的 SQL 中包含 ';' ,请修改此项配置为其他字符,例如: ';\\n', 请忽略单引号!!!! +sys.flink.settings.jobIdWait=Job 提交等待时间 +sys.flink.settings.jobIdWait.note=提交 Application 或 PerJob 任务时获取 Job ID 的最大等待时间(秒) +sys.maven.settings.settingsFilePath=Maven 配置文件路径 +sys.maven.settings.settingsFilePath.note=Maven 配置文件路径, eg: /opt/maven-3.9.2/conf/settings.xml ,请注意: 默认情况下会获取所在主机的 MAVEN_HOME 环境变量,则此处无需填写,如果没有配置请填写绝对路径 +sys.maven.settings.repository=Maven 仓库地址 +sys.maven.settings.repository.note=Maven 仓库地址 +sys.maven.settings.repositoryUser=Maven 仓库用户名 +sys.maven.settings.repositoryUser.note=Maven 私服认证用户名,如果需要配置 Maven 私服仓库认证信息,请填写此项 +sys.maven.settings.repositoryPassword=Maven 仓库密码 +sys.maven.settings.repositoryPassword.note=Maven 私服认证密码,如果需要配置 Maven 私服仓库认证信息,请填写此项 +sys.env.settings.pythonHome=Python 环境变量 +sys.env.settings.pythonHome.note=Python 环境变量,用于提交 Python 任务以及构建 Python Udf +sys.env.settings.dinkyAddr=Dinky 地址 +sys.env.settings.dinkyAddr.note=该地址必须与Dinky Application后台url中配置的地址相同 +sys.env.settings.maxRetainDays=作业历史最大保留天数 +sys.env.settings.maxRetainDays.note=提交的作业历史与自动注册的集群记录最大保留天数,过期会被自动删除 +sys.env.settings.maxRetainCount=作业历史最大保留数量 +sys.env.settings.maxRetainCount.note=提交的作业历史与自动注册的集群记录最大保留数量,如果不足该数量,则不会被删除,即使已经过了做大保留天数 -sys.dolphinscheduler.settings.enable=\u662F\u5426\u542F\u7528 DolphinScheduler -sys.dolphinscheduler.settings.enable.note=\u662F\u5426\u542F\u7528 DolphinScheduler ,\u542F\u7528\u540E\u624D\u80FD\u4F7F\u7528 DolphinScheduler \u7684\u76F8\u5173\u529F\u80FD,\u8BF7\u5148\u586B\u5199\u4E0B\u5217\u914D\u7F6E\u9879,\u5B8C\u6210\u540E\u518D\u5F00\u542F\u6B64\u9879\u914D\u7F6E, \u53E6:\u8BF7\u786E\u4FDD DolphinScheduler \u7684\u76F8\u5173\u914D\u7F6E\u6B63\u786E -sys.dolphinscheduler.settings.url=DolphinScheduler \u5730\u5740 -sys.dolphinscheduler.settings.url.note=\u5730\u5740\u5FC5\u987B\u548CDolphinScheduler\u540E\u53F0\u914D\u7F6E\u7684\u5730\u5740\u4E00\u81F4\uFF0Ceg: http://127.0.0.1:12345/dolphinscheduler +sys.dolphinscheduler.settings.enable=是否启用 DolphinScheduler +sys.dolphinscheduler.settings.enable.note=是否启用 DolphinScheduler ,启用后才能使用 DolphinScheduler 的相关功能,请先填写下列配置项,完成后再开启此项配置, 另:请确保 DolphinScheduler 的相关配置正确 +sys.dolphinscheduler.settings.url=DolphinScheduler 地址 +sys.dolphinscheduler.settings.url.note=地址必须和DolphinScheduler后台配置的地址一致,eg: http://127.0.0.1:12345/dolphinscheduler sys.dolphinscheduler.settings.token=DolphinScheduler Token -sys.dolphinscheduler.settings.token.note=DolphinScheduler\u7684Token\uFF0C\u8BF7\u5728DolphinScheduler\u7684\u5B89\u5168\u4E2D\u5FC3->\u4EE4\u724C\u7BA1\u7406\u4E2D\u521B\u5EFA\u4E00\u4E2Atoken\uFF0C\u5E76\u586B\u5165\u8BE5\u914D\u7F6E\u4E2D -sys.dolphinscheduler.settings.projectName=DolphinScheduler \u9879\u76EE\u540D -sys.dolphinscheduler.settings.projectName.note=DolphinScheduler \u4E2D\u6307\u5B9A\u7684\u9879\u76EE\u540D\u79F0\uFF0C\u4E0D\u533A\u5206\u5927\u5C0F\u5199 -sys.ldap.settings.url=Ldap \u670D\u52A1\u5730\u5740 -sys.ldap.settings.url.note=Ldap \u8BA4\u8BC1\u670D\u52A1\u5730\u5740\uFF0C\u4F8B\u5982\uFF1Aldap://192.168.111.1:389 -sys.ldap.settings.userDn=\u767B\u5F55\u7528\u6237\u540D\uFF08DN\uFF09 -sys.ldap.settings.userDn.note=\u7528\u4E8E\u8FDE\u63A5 Ldap \u670D\u52A1\u7684\u7528\u6237\u540D\uFF0C\u6216\u8005\u7BA1\u7406\u5458DN -sys.ldap.settings.userPassword=\u767B\u5F55\u5BC6\u7801 -sys.ldap.settings.userPassword.note=\u7528\u4E8E\u8FDE\u63A5ldap\u670D\u52A1\u7684\u5BC6\u7801 -sys.ldap.settings.timeLimit=\u8FDE\u63A5\u8D85\u65F6 -sys.ldap.settings.timeLimit.note=\u8FDE\u63A5 Ldap \u670D\u52A1\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u8D85\u8FC7\u5219\u65AD\u5F00 -sys.ldap.settings.baseDn=\u7528\u6237\u57FA\u7840 DN -sys.ldap.settings.baseDn.note=Dinky \u4F1A\u5728\u6B64\u57FA\u7840 DN \u4E0B\u8FDB\u884C\u7528\u6237\u641C\u7D22,\u4F8B\u5982\uFF1Aou=users,dc=dinky,dc=com -sys.ldap.settings.filter=\u7528\u6237\u8FC7\u6EE4\u89C4\u5219 -sys.ldap.settings.filter.note=\u4F7F\u7528 Ldap \u7684 filter \u8BED\u6CD5\u8FDB\u884C\u7528\u6237\u8FC7\u6EE4 -sys.ldap.settings.autoload=\u767B\u5F55\u65F6\u81EA\u52A8\u6620\u5C04\u7528\u6237 -sys.ldap.settings.autoload.note=\u5F00\u542F\u540E\uFF0C\u5F53\u7528\u6237\u4F7F\u7528 LDAP \u767B\u5F55\u65F6\uFF0C\u5982\u679C\u6CA1\u6709\u76F8\u5E94\u7684 Dinky \u7528\u6237\u6620\u5C04\uFF0C\u5219\u4F1A\u81EA\u52A8\u62C9\u53D6 LDAP \u4FE1\u606F\u521B\u5EFA\u4E00\u4E2A Dinky \u7528\u6237\u4E0E\u4E4B\u6620\u5C04\uFF0C\u5982\u679C\u5173\u95ED\u6B64\u529F\u80FD\uFF0C\u5BF9\u4E8E\u672A\u5BFC\u5165\u7684 LDAP \u7528\u6237\u5C06\u65E0\u6CD5\u767B\u5F55 -sys.ldap.settings.defaultTeant=LDAP \u5BFC\u5165\u9ED8\u8BA4\u79DF\u6237\u7F16\u7801 -sys.ldap.settings.defaultTeant.note=\u5F00\u542F\u81EA\u52A8\u5BFC\u5165\u7528\u6237\u540E\uFF0C\u65B0\u7528\u6237\u767B\u5F55\u9700\u8981\u4E00\u4E2A\u9ED8\u8BA4\u7684\u79DF\u6237\u7F16\u7801\uFF0C\u5426\u5219\u65E0\u6CD5\u767B\u5F55,\u4F8B\u5982: DefaultTenant -sys.ldap.settings.castUsername=LDAP \u7528\u6237\u540D\u5B57\u6BB5 -sys.ldap.settings.castUsername.note=\u9700\u8981\u586B\u5199\u4E00\u4E2A LDAP \u4E2D\u7528\u6237\u7684\u5C5E\u6027\u5B57\u6BB5\u6765\u4E0E Dinky \u7528\u6237\u5BF9\u5E94\uFF0C\u5FC5\u987B\u586B\u5199\uFF0C\u4E00\u822C\u53EF\u9009\u4E3A cn \u6216\u8005 uid\u8868\u793A\u7528\u6237\u552F\u4E00\u6807\u8BC6 -sys.ldap.settings.castNickname=LDAP \u6635\u79F0\u5B57\u6BB5 -sys.ldap.settings.castNickname.note=\u9700\u8981\u586B\u5199\u4E00\u4E2A LDAP \u4E2D\u7528\u6237\u7684\u5C5E\u6027\u5B57\u6BB5\u6765\u4E0E Dinky \u6635\u79F0\u5BF9\u5E94\uFF0C\u5FC5\u987B\u586B\u5199\uFF0C\u4E00\u822C\u53EF\u9009\u4E3A sn \u6216\u8005\u5176\u4ED6\u6807\u8BC6\uFF0C\u4E0D\u8981\u6C42\u552F\u4E00 -sys.ldap.settings.enable=\u662F\u5426\u542F\u7528 Ldap -sys.ldap.settings.enable.note=\u5F00\u542F LDAP \u767B\u5F55\u529F\u80FD -sys.metrics.settings.sys.enable=Dinky JVM Monitor \u5F00\u5173 -sys.metrics.settings.sys.enable.note=\u6B64\u5F00\u5173\u4F1A\u5173\u7CFB\u5230Dinky JVM Monitor\uFF0C\u51B3\u5B9A\u76D1\u63A7\u9875\u9762\u4E2D\u7684Dinky Server\u663E\u793A\uFF0C\u4EE5\u53CAJVM Metrics\u91C7\u96C6 -sys.metrics.settings.sys.gatherTiming=Dinky JVM Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6 -sys.metrics.settings.sys.gatherTiming.note=Dinky JVM Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1 -sys.metrics.settings.flink.gatherTiming=Flink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6 -sys.metrics.settings.flink.gatherTiming.note=Flink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1 -sys.metrics.settings.flink.gatherTimeout=Flink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1 -sys.metrics.settings.flink.gatherTimeout.note=Flink Metrics \u91C7\u96C6\u8D85\u65F6\u65F6\u957F\uFF0C\u5B9A\u65F6\u4EFB\u52A1\u95F4\u9694\u89E6\u53D1\uFF08\u6B64\u914D\u7F6E\u9879\u5E94\u5C0F\u4E8EFlink Metrics \u91C7\u96C6\u65F6\u95F4\u7C92\u5EA6\uFF09 -sys.resource.settings.base.enable=\u662F\u5426\u542F\u7528Resource -sys.resource.settings.base.enable.note=\u542F\u7528\u8D44\u6E90\u7BA1\u7406\u529F\u80FD\uFF0C\u5982\u679C\u5207\u6362\u5B58\u50A8\u6A21\u5F0F\u65F6\uFF0C\u9700\u5173\u95ED\u6B64\u5F00\u5173\uFF0C\u76F8\u5173\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u518D\u5F00\u542F -sys.resource.settings.base.upload.base.path=\u4E0A\u4F20\u76EE\u5F55\u7684\u6839\u8DEF\u5F84 -sys.resource.settings.base.upload.base.path.note=\u8D44\u6E90\u5B58\u50A8\u5728HDFS/OSS (S3)\u8DEF\u5F84\u4E0A\uFF0C\u8D44\u6E90\u6587\u4EF6\u5C06\u5B58\u50A8\u5230\u6B64\u57FA\u672C\u8DEF\u5F84\uFF0C\u81EA\u884C\u914D\u7F6E\uFF0C\u8BF7\u786E\u4FDD\u8BE5\u76EE\u5F55\u5B58\u5728\u4E8E\u76F8\u5173\u5B58\u50A8\u7CFB\u7EDF\u4E0A\u5E76\u5177\u6709\u8BFB\u5199\u6743\u9650\u3002 -sys.resource.settings.base.model=\u5B58\u50A8\u6A21\u5F0F -sys.resource.settings.base.model.note=\u652F\u6301HDFS\u3001S3(Minio\u3001\u963F\u91CC\u4E91OSS\u3001\u817E\u8BAF\u4E91COS\u7B49..)\uFF0C\u5207\u6362\u9009\u9879\u540E\u5373\u53EF\u751F\u6548\uFF0C\u540C\u65F6\u5E76\u8FC1\u79FB\u8D44\u6E90\u6587\u4EF6 +sys.dolphinscheduler.settings.token.note=DolphinScheduler的Token,请在DolphinScheduler的安全中心->令牌管理中创建一个token,并填入该配置中 +sys.dolphinscheduler.settings.projectName=DolphinScheduler 项目名 +sys.dolphinscheduler.settings.projectName.note=DolphinScheduler 中指定的项目名称,不区分大小写 +sys.ldap.settings.url=Ldap 服务地址 +sys.ldap.settings.url.note=Ldap 认证服务地址,例如:ldap://192.168.111.1:389 +sys.ldap.settings.userDn=登录用户名(DN) +sys.ldap.settings.userDn.note=用于连接 Ldap 服务的用户名,或者管理员DN +sys.ldap.settings.userPassword=登录密码 +sys.ldap.settings.userPassword.note=用于连接ldap服务的密码 +sys.ldap.settings.timeLimit=连接超时 +sys.ldap.settings.timeLimit.note=连接 Ldap 服务的最大时间,超过则断开 +sys.ldap.settings.baseDn=用户基础 DN +sys.ldap.settings.baseDn.note=Dinky 会在此基础 DN 下进行用户搜索,例如:ou=users,dc=dinky,dc=com +sys.ldap.settings.filter=用户过滤规则 +sys.ldap.settings.filter.note=使用 Ldap 的 filter 语法进行用户过滤 +sys.ldap.settings.autoload=登录时自动映射用户 +sys.ldap.settings.autoload.note=开启后,当用户使用 LDAP 登录时,如果没有相应的 Dinky 用户映射,则会自动拉取 LDAP 信息创建一个 Dinky 用户与之映射,如果关闭此功能,对于未导入的 LDAP 用户将无法登录 +sys.ldap.settings.defaultTeant=LDAP 导入默认租户编码 +sys.ldap.settings.defaultTeant.note=开启自动导入用户后,新用户登录需要一个默认的租户编码,否则无法登录,例如: DefaultTenant +sys.ldap.settings.castUsername=LDAP 用户名字段 +sys.ldap.settings.castUsername.note=需要填写一个 LDAP 中用户的属性字段来与 Dinky 用户对应,必须填写,一般可选为 cn 或者 uid表示用户唯一标识 +sys.ldap.settings.castNickname=LDAP 昵称字段 +sys.ldap.settings.castNickname.note=需要填写一个 LDAP 中用户的属性字段来与 Dinky 昵称对应,必须填写,一般可选为 sn 或者其他标识,不要求唯一 +sys.ldap.settings.enable=是否启用 Ldap +sys.ldap.settings.enable.note=开启 LDAP 登录功能 +sys.metrics.settings.sys.enable=Dinky JVM Monitor 开关 +sys.metrics.settings.sys.enable.note=此开关会关系到Dinky JVM Monitor,决定监控页面中的Dinky Server显示,以及JVM Metrics采集 +sys.metrics.settings.sys.gatherTiming=Dinky JVM Metrics 采集时间粒度 +sys.metrics.settings.sys.gatherTiming.note=Dinky JVM Metrics 采集时间粒度,定时任务间隔触发 +sys.metrics.settings.flink.gatherTiming=Flink Metrics 采集时间粒度 +sys.metrics.settings.flink.gatherTiming.note=Flink Metrics 采集时间粒度,定时任务间隔触发 +sys.metrics.settings.flink.gatherTimeout=Flink Metrics 采集时间粒度,定时任务间隔触发 +sys.metrics.settings.flink.gatherTimeout.note=Flink Metrics 采集超时时长,定时任务间隔触发(此配置项应小于Flink Metrics 采集时间粒度) +sys.resource.settings.base.enable=是否启用Resource +sys.resource.settings.base.enable.note=启用资源管理功能,如果切换存储模式时,需关闭此开关,相关配置完成后,再开启 +sys.resource.settings.base.upload.base.path=上传目录的根路径 +sys.resource.settings.base.upload.base.path.note=资源存储在HDFS/OSS (S3)路径上,资源文件将存储到此基本路径,自行配置,请确保该目录存在于相关存储系统上并具有读写权限。 +sys.resource.settings.base.model=存储模式 +sys.resource.settings.base.model.note=支持HDFS、S3(Minio、阿里云OSS、腾讯云COS等..),切换选项后即可生效,同时并迁移资源文件 -sys.resource.settings.oss.endpoint=\u5BF9\u8C61\u5B58\u50A8\u670D\u52A1\u7684 URL\uFF08Endpoint\uFF09 -sys.resource.settings.oss.endpoint.note=\u4F8B\u5982\uFF1Ahttps://oss-cn-hangzhou.aliyuncs.com +sys.resource.settings.oss.endpoint=对象存储服务的 URL(Endpoint) +sys.resource.settings.oss.endpoint.note=例如:https://oss-cn-hangzhou.aliyuncs.com sys.resource.settings.oss.accessKey=Access key -sys.resource.settings.oss.accessKey.note=Access key\u5C31\u50CF\u7528\u6237ID\uFF0C\u53EF\u4EE5\u552F\u4E00\u6807\u8BC6\u4F60\u7684\u8D26\u6237 +sys.resource.settings.oss.accessKey.note=Access key就像用户ID,可以唯一标识你的账户 sys.resource.settings.oss.secretKey=Secret key -sys.resource.settings.oss.secretKey.note=Secret key\u662F\u4F60\u8D26\u6237\u7684\u5BC6\u7801 -sys.resource.settings.oss.bucketName=\u5B58\u50A8\u6876\u540D\u79F0 -sys.resource.settings.oss.bucketName.note=\u9ED8\u8BA4\u7684\u5B58\u50A8\u6876\u540D\u79F0 -sys.resource.settings.oss.region=\u533A\u57DF -sys.resource.settings.oss.region.note=\u533A\u57DF,\u4F8B\u5982\uFF1Aoss-cn-hangzhou +sys.resource.settings.oss.secretKey.note=Secret key是你账户的密码 +sys.resource.settings.oss.bucketName=存储桶名称 +sys.resource.settings.oss.bucketName.note=默认的存储桶名称 +sys.resource.settings.oss.region=区域 +sys.resource.settings.oss.region.note=区域,例如:oss-cn-hangzhou sys.resource.settings.oss.path.style.access=Path Style -sys.resource.settings.oss.path.style.access.note=\u662F\u5426\u5F00\u542F path style, \u4E0D\u540C\u7684\u63D0\u4F9B\u65B9\uFF08\u5982\u963F\u91CC\u4E91oss\uFF0C\u817E\u8BAF\u4E91cos\uFF09\u652F\u6301\u60C5\u51B5\u4E0D\u540C\uFF0C\u8BF7\u9605\u8BFB\u63D0\u4F9B\u65B9\u6587\u6863\u8BF4\u660E\u8FDB\u884C\u586B\u5199 +sys.resource.settings.oss.path.style.access.note=是否开启 path style, 不同的提供方(如阿里云oss,腾讯云cos)支持情况不同,请阅读提供方文档说明进行填写 -sys.resource.settings.hdfs.root.user=HDFS \u64CD\u4F5C\u7528\u6237\u540D -sys.resource.settings.hdfs.root.user.note=HDFS \u64CD\u4F5C\u7528\u6237\u540D +sys.resource.settings.hdfs.root.user=HDFS 操作用户名 +sys.resource.settings.hdfs.root.user.note=HDFS 操作用户名 sys.resource.settings.hdfs.fs.defaultFS=HDFS defaultFS -sys.resource.settings.hdfs.fs.defaultFS.note=fs.defaultFS \u914D\u7F6E\u9879\uFF0C\u4F8B\u5982: \u8FDC\u7A0B HDFS\uFF1Ahdfs://localhost:9000\uFF0C\u672C\u5730\uFF1Afile:/// +sys.resource.settings.hdfs.fs.defaultFS.note=fs.defaultFS 配置项,例如: 远程 HDFS:hdfs://localhost:9000,本地:file:/// #Dinky Gateway -gateway.kubernetes.test.failed=\u6D4B\u8BD5 Flink \u914D\u7F6E\u5931\u8D25\uFF1A +gateway.kubernetes.test.failed=测试 Flink 配置失败: # Task -task.status.is.not.done=\u5F53\u524D\u4F5C\u4E1A\u72B6\u6001\u672A\u505C\u6B62\uFF0C\u8BF7\u505C\u6B62\u540E\u64CD\u4F5C -task.sql.explain.failed=sql\u89E3\u6790\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5 -task.update.failed=Task\u66F4\u65B0\u5931\u8D25 +task.status.is.not.done=当前作业状态未停止,请停止后操作 +task.sql.explain.failed=sql解析失败,请检查 +task.update.failed=Task更新失败 # process -process.submit.submitTask=\u63D0\u4EA4\u4F5C\u4E1A -process.submit.checkSql=\u68C0\u67E5\u4F5C\u4E1A -process.submit.execute=\u6267\u884C\u4F5C\u4E1A -process.submit.buildConfig=\u6784\u5EFA\u914D\u7F6E\u4FE1\u606F -process.submit.execute.commSql=\u6267\u884C\u666E\u901Asql -process.submit.execute.flinkSql=\u6267\u884CflinkSql -process.register.exits=\u5F53\u524D\u4EFB\u52A1\u6B63\u5728\u6267\u884C\uFF0C\u8BF7\u52FF\u91CD\u590D\u63D0\u4EA4\uFF0C\u5982\u6709\u95EE\u9898\u8BF7\u524D\u5F80\u914D\u7F6E\u4E2D\u5FC3\u67E5\u770B +process.submit.submitTask=提交作业 +process.submit.checkSql=检查作业 +process.submit.execute=执行作业 +process.submit.buildConfig=构建配置信息 +process.submit.execute.commSql=执行普通sql +process.submit.execute.flinkSql=执行flinkSql +process.register.exits=当前任务正在执行,请勿重复提交,如有问题请前往配置中心查看 # resource -resource.root.dir.not.allow.delete=\u6839\u76EE\u5F55\u4E0D\u5141\u8BB8\u5220\u9664 -resource.dir.or.file.not.exist=\u8D44\u6E90\u76EE\u5F55\u6216\u6587\u4EF6\u4E0D\u5B58\u5728 \ No newline at end of file +resource.root.dir.not.allow.delete=根目录不允许删除 +resource.dir.or.file.not.exist=资源目录或文件不存在 \ No newline at end of file From 3ade778cf563ff517f807a5ff12b84c7f1e06783 Mon Sep 17 00:00:00 2001 From: ikiler Date: Fri, 22 Dec 2023 00:01:19 +0800 Subject: [PATCH 8/8] formate code --- dinky-alert/dinky-alert-http/src/main/resources/Http.ftl | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 dinky-alert/dinky-alert-http/src/main/resources/Http.ftl diff --git a/dinky-alert/dinky-alert-http/src/main/resources/Http.ftl b/dinky-alert/dinky-alert-http/src/main/resources/Http.ftl new file mode 100644 index 0000000000..4c8b3c2405 --- /dev/null +++ b/dinky-alert/dinky-alert-http/src/main/resources/Http.ftl @@ -0,0 +1,2 @@ +${title} +${content} \ No newline at end of file