From a21889080d6c7ffdf0af526a3a21f0b2d1c77288 Mon Sep 17 00:00:00 2001
From: xiaojunnuo <xiaojunnuo@qq.com>
Date: Thu, 3 Oct 2024 23:11:50 +0800
Subject: [PATCH] =?UTF-8?q?perf:=20=E8=B0=83=E6=95=B4=E5=85=A8=E9=83=A8?=
 =?UTF-8?q?=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90=E5=88=B0static=E7=9B=AE?=
 =?UTF-8?q?=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md                                     |  10 ++--
 packages/core/pipeline/src/core/license.ts    |   8 ++-
 packages/libs/lib-server/src/system/index.ts  |   1 +
 .../libs/lib-server/src/system/plus/index.ts  |   1 +
 .../src/system/plus}/service/plus-service.ts  |   3 +-
 .../src/system/settings/service/models.ts     |   8 +--
 packages/ui/certd-client/.env                 |   2 +-
 packages/ui/certd-client/index.html           |   2 +-
 .../certd-client/src/api/modules/api.basic.ts |   1 +
 .../assets}/doc/images/1-add.png              | Bin
 .../assets}/doc/images/10-1-log.png           | Bin
 .../assets}/doc/images/11-1-error.png         | Bin
 .../assets}/doc/images/11-2-error.png         | Bin
 .../assets}/doc/images/12-1-log-success.png   | Bin
 .../assets}/doc/images/12-2-skip-log.png      | Bin
 .../assets}/doc/images/13-1-result.png        | Bin
 .../assets}/doc/images/13-2-result.png        | Bin
 .../assets}/doc/images/13-3-download.png      | Bin
 .../assets}/doc/images/14-timer.png           | Bin
 .../assets}/doc/images/15-1-email.png         | Bin
 .../assets}/doc/images/15-2-email.png         | Bin
 .../assets}/doc/images/2-access-provider.png  | Bin
 .../assets}/doc/images/3-add-access.png       | Bin
 .../assets}/doc/images/4-add-success.png      | Bin
 .../assets}/doc/images/5-view.png             | Bin
 .../assets}/doc/images/6-1-add-task.png       | Bin
 .../assets}/doc/images/6-2-add-task.png       | Bin
 .../assets}/doc/images/6-3-add-task.png       | Bin
 .../assets}/doc/images/7-1-add-host-task.png  | Bin
 .../assets}/doc/images/7-2-add-host-task.png  | Bin
 .../assets}/doc/images/7-3-add-host-task.png  | Bin
 .../assets}/doc/images/8-1-add-host-task.png  | Bin
 .../assets}/doc/images/8-2-add-host-task.png  | Bin
 .../assets}/doc/images/8-4-add-host-task.png  | Bin
 .../assets}/doc/images/8-5-add-host-task.png  | Bin
 .../assets}/doc/images/9-start.png            | Bin
 .../{public => src/assets}/icons/demo.css     |   0
 .../assets}/icons/demo_index.html             |   0
 .../{public => src/assets}/icons/iconfont.css |   0
 .../{public => src/assets}/icons/iconfont.js  |   0
 .../assets}/icons/iconfont.json               |   0
 .../{public => src/assets}/icons/iconfont.svg |   0
 .../assets}/images/logo/logo.svg              |   0
 .../assets}/images/logo/rect-black.svg        |   0
 .../assets}/images/logo/square.svg            |   0
 .../{public => src/assets}/images/plugin.png  | Bin
 .../{public => src/assets}/images/preview.png | Bin
 .../components/tutorial/tutorial-steps.vue    |  52 ++++++++---------
 .../src/layout/layout-framework.vue           |   2 +-
 .../src/layout/layout-outside.vue             |   2 +-
 .../src/store/modules/settings.ts             |  17 +++---
 .../views/framework/home/content/index.vue    |   2 +-
 .../src/views/sys/settings/index.vue          |   3 +
 .../certd-client/src/views/sys/site/index.vue |  25 ++++----
 .../modules/basic/service/email-service.ts    |   2 +-
 .../system/controller/plus-controller.ts      |   2 +-
 .../system/controller/site-controller.ts      |  55 ------------------
 step.md                                       |  54 ++++++++---------
 58 files changed, 104 insertions(+), 148 deletions(-)
 create mode 100644 packages/libs/lib-server/src/system/plus/index.ts
 rename packages/{ui/certd-server/src/modules/basic => libs/lib-server/src/system/plus}/service/plus-service.ts (94%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/1-add.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/10-1-log.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/11-1-error.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/11-2-error.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/12-1-log-success.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/12-2-skip-log.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/13-1-result.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/13-2-result.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/13-3-download.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/14-timer.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/15-1-email.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/15-2-email.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/2-access-provider.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/3-add-access.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/4-add-success.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/5-view.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/6-1-add-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/6-2-add-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/6-3-add-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/7-1-add-host-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/7-2-add-host-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/7-3-add-host-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/8-1-add-host-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/8-2-add-host-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/8-4-add-host-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/8-5-add-host-task.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/doc/images/9-start.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/icons/demo.css (100%)
 rename packages/ui/certd-client/{public => src/assets}/icons/demo_index.html (100%)
 rename packages/ui/certd-client/{public => src/assets}/icons/iconfont.css (100%)
 rename packages/ui/certd-client/{public => src/assets}/icons/iconfont.js (100%)
 rename packages/ui/certd-client/{public => src/assets}/icons/iconfont.json (100%)
 rename packages/ui/certd-client/{public => src/assets}/icons/iconfont.svg (100%)
 rename packages/ui/certd-client/{public => src/assets}/images/logo/logo.svg (100%)
 rename packages/ui/certd-client/{public => src/assets}/images/logo/rect-black.svg (100%)
 rename packages/ui/certd-client/{public => src/assets}/images/logo/square.svg (100%)
 rename packages/ui/certd-client/{public => src/assets}/images/plugin.png (100%)
 rename packages/ui/certd-client/{public => src/assets}/images/preview.png (100%)
 delete mode 100644 packages/ui/certd-server/src/modules/system/controller/site-controller.ts

diff --git a/README.md b/README.md
index 536cfd84..eca6b1dd 100644
--- a/README.md
+++ b/README.md
@@ -29,11 +29,11 @@ https://certd.handsfree.work/
 ## 三、使用教程
 本案例演示,如何配置自动申请证书,并部署到阿里云CDN,然后快要到期前自动更新证书并重新部署     
 
-![演示](./packages/ui/certd-client/public/doc/images/5-view.png)
-![演示](./packages/ui/certd-client/public/doc/images/9-start.png)
-![演示](./packages/ui/certd-client/public/doc/images/10-1-log.png)
-![演示](./packages/ui/certd-client/public/doc/images/13-3-download.png)
-![演示](./packages/ui/certd-client/public/doc/images/13-1-result.png)
+![演示](./packages/ui/certd-client/src/assets/doc/images/5-view.png)
+![演示](./packages/ui/certd-client/src/assets/doc/images/9-start.png)
+![演示](./packages/ui/certd-client/src/assets/doc/images/10-1-log.png)
+![演示](./packages/ui/certd-client/src/assets/doc/images/13-3-download.png)
+![演示](./packages/ui/certd-client/src/assets/doc/images/13-1-result.png)
 
 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓      
 -------> [点我查看详细使用步骤演示](./step.md)   <--------      
diff --git a/packages/core/pipeline/src/core/license.ts b/packages/core/pipeline/src/core/license.ts
index eb923ed8..7914a28e 100644
--- a/packages/core/pipeline/src/core/license.ts
+++ b/packages/core/pipeline/src/core/license.ts
@@ -1,5 +1,5 @@
 import { logger } from "../utils/index.js";
-import { setLogger, isPlus } from "@certd/plus-core";
+import { setLogger, isPlus, isComm } from "@certd/plus-core";
 setLogger(logger);
 export * from "@certd/plus-core";
 
@@ -8,3 +8,9 @@ export function checkPlus() {
     throw new Error("此为专业版功能,请升级到专业版");
   }
 }
+
+export function checkComm() {
+  if (!isComm()) {
+    throw new Error("此为商业版功能,请升级到商业版");
+  }
+}
diff --git a/packages/libs/lib-server/src/system/index.ts b/packages/libs/lib-server/src/system/index.ts
index f5425503..22dd66d2 100644
--- a/packages/libs/lib-server/src/system/index.ts
+++ b/packages/libs/lib-server/src/system/index.ts
@@ -1 +1,2 @@
 export * from './settings/index.js';
+export * from './plus/index.js';
diff --git a/packages/libs/lib-server/src/system/plus/index.ts b/packages/libs/lib-server/src/system/plus/index.ts
new file mode 100644
index 00000000..4d938497
--- /dev/null
+++ b/packages/libs/lib-server/src/system/plus/index.ts
@@ -0,0 +1 @@
+export * from './service/plus-service.js';
diff --git a/packages/ui/certd-server/src/modules/basic/service/plus-service.ts b/packages/libs/lib-server/src/system/plus/service/plus-service.ts
similarity index 94%
rename from packages/ui/certd-server/src/modules/basic/service/plus-service.ts
rename to packages/libs/lib-server/src/system/plus/service/plus-service.ts
index cae5ba00..42bd1257 100644
--- a/packages/ui/certd-server/src/modules/basic/service/plus-service.ts
+++ b/packages/libs/lib-server/src/system/plus/service/plus-service.ts
@@ -1,8 +1,7 @@
 import { Config, Init, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
-import { SysSettingsService } from '@certd/lib-server';
-import { SysInstallInfo, SysLicenseInfo } from '@certd/lib-server';
 import { AppKey, http, PlusRequestService, verify } from '@certd/pipeline';
 import { logger } from '@certd/pipeline';
+import { SysInstallInfo, SysLicenseInfo, SysSettingsService } from '../../settings/index.js';
 
 @Provide()
 @Scope(ScopeEnum.Singleton)
diff --git a/packages/libs/lib-server/src/system/settings/service/models.ts b/packages/libs/lib-server/src/system/settings/service/models.ts
index e9653b4e..df1d1713 100644
--- a/packages/libs/lib-server/src/system/settings/service/models.ts
+++ b/packages/libs/lib-server/src/system/settings/service/models.ts
@@ -14,6 +14,7 @@ export class SysPublicSettings extends BaseSettings {
   static __access__ = 'public';
   registerEnabled = false;
   managerOtherUserPipeline = false;
+  icpNo?: string;
   // triggerOnStartup = false;
 }
 
@@ -48,8 +49,7 @@ export class SysSiteInfo extends BaseSettings {
   static __title__ = '站点信息';
   static __key__ = 'sys.site';
   static __access__ = 'public';
-  TITLE?: string;
-  SLOGAN?: string;
-  LOGO?: string;
-  ICP_NO?: string;
+  title?: string;
+  slogan?: string;
+  logo?: string;
 }
diff --git a/packages/ui/certd-client/.env b/packages/ui/certd-client/.env
index 1bda3480..4c6a5356 100644
--- a/packages/ui/certd-client/.env
+++ b/packages/ui/certd-client/.env
@@ -6,6 +6,6 @@ VITE_APP_SLOGAN=让你的证书永不过期
 VITE_APP_COPYRIGHT_YEAR=2021-2024
 VITE_APP_COPYRIGHT_NAME=handsfree.work
 VITE_APP_COPYRIGHT_URL=https://certd.handsfree.work
-VITE_APP_LOGO=./images/logo/logo.svg
+VITE_APP_LOGO=./assets/images/logo/logo.svg
 VITE_APP_PROJECT_PATH=https://github.com/certd/certd
 
diff --git a/packages/ui/certd-client/index.html b/packages/ui/certd-client/index.html
index e9ab4203..8a75edd7 100644
--- a/packages/ui/certd-client/index.html
+++ b/packages/ui/certd-client/index.html
@@ -5,7 +5,7 @@
     <link rel="icon" href="/logo.svg"/>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     <title>Certd-让你的证书永不过期</title>
-    <script src="/icons/iconfont.js"></script>
+    <script src="/assets/icons/iconfont.js"></script>
     <link rel="stylesheet" type="text/css" href="/index.css"/>
 </head>
 <body>
diff --git a/packages/ui/certd-client/src/api/modules/api.basic.ts b/packages/ui/certd-client/src/api/modules/api.basic.ts
index 96df9cb9..f12a65f4 100644
--- a/packages/ui/certd-client/src/api/modules/api.basic.ts
+++ b/packages/ui/certd-client/src/api/modules/api.basic.ts
@@ -3,6 +3,7 @@ import { request } from "../service";
 export type SysPublicSetting = {
   registerEnabled: boolean;
   managerOtherUserPipeline: boolean;
+  icpNo?: string;
 };
 
 export type SysInstallInfo = {
diff --git a/packages/ui/certd-client/public/doc/images/1-add.png b/packages/ui/certd-client/src/assets/doc/images/1-add.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/1-add.png
rename to packages/ui/certd-client/src/assets/doc/images/1-add.png
diff --git a/packages/ui/certd-client/public/doc/images/10-1-log.png b/packages/ui/certd-client/src/assets/doc/images/10-1-log.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/10-1-log.png
rename to packages/ui/certd-client/src/assets/doc/images/10-1-log.png
diff --git a/packages/ui/certd-client/public/doc/images/11-1-error.png b/packages/ui/certd-client/src/assets/doc/images/11-1-error.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/11-1-error.png
rename to packages/ui/certd-client/src/assets/doc/images/11-1-error.png
diff --git a/packages/ui/certd-client/public/doc/images/11-2-error.png b/packages/ui/certd-client/src/assets/doc/images/11-2-error.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/11-2-error.png
rename to packages/ui/certd-client/src/assets/doc/images/11-2-error.png
diff --git a/packages/ui/certd-client/public/doc/images/12-1-log-success.png b/packages/ui/certd-client/src/assets/doc/images/12-1-log-success.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/12-1-log-success.png
rename to packages/ui/certd-client/src/assets/doc/images/12-1-log-success.png
diff --git a/packages/ui/certd-client/public/doc/images/12-2-skip-log.png b/packages/ui/certd-client/src/assets/doc/images/12-2-skip-log.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/12-2-skip-log.png
rename to packages/ui/certd-client/src/assets/doc/images/12-2-skip-log.png
diff --git a/packages/ui/certd-client/public/doc/images/13-1-result.png b/packages/ui/certd-client/src/assets/doc/images/13-1-result.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/13-1-result.png
rename to packages/ui/certd-client/src/assets/doc/images/13-1-result.png
diff --git a/packages/ui/certd-client/public/doc/images/13-2-result.png b/packages/ui/certd-client/src/assets/doc/images/13-2-result.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/13-2-result.png
rename to packages/ui/certd-client/src/assets/doc/images/13-2-result.png
diff --git a/packages/ui/certd-client/public/doc/images/13-3-download.png b/packages/ui/certd-client/src/assets/doc/images/13-3-download.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/13-3-download.png
rename to packages/ui/certd-client/src/assets/doc/images/13-3-download.png
diff --git a/packages/ui/certd-client/public/doc/images/14-timer.png b/packages/ui/certd-client/src/assets/doc/images/14-timer.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/14-timer.png
rename to packages/ui/certd-client/src/assets/doc/images/14-timer.png
diff --git a/packages/ui/certd-client/public/doc/images/15-1-email.png b/packages/ui/certd-client/src/assets/doc/images/15-1-email.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/15-1-email.png
rename to packages/ui/certd-client/src/assets/doc/images/15-1-email.png
diff --git a/packages/ui/certd-client/public/doc/images/15-2-email.png b/packages/ui/certd-client/src/assets/doc/images/15-2-email.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/15-2-email.png
rename to packages/ui/certd-client/src/assets/doc/images/15-2-email.png
diff --git a/packages/ui/certd-client/public/doc/images/2-access-provider.png b/packages/ui/certd-client/src/assets/doc/images/2-access-provider.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/2-access-provider.png
rename to packages/ui/certd-client/src/assets/doc/images/2-access-provider.png
diff --git a/packages/ui/certd-client/public/doc/images/3-add-access.png b/packages/ui/certd-client/src/assets/doc/images/3-add-access.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/3-add-access.png
rename to packages/ui/certd-client/src/assets/doc/images/3-add-access.png
diff --git a/packages/ui/certd-client/public/doc/images/4-add-success.png b/packages/ui/certd-client/src/assets/doc/images/4-add-success.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/4-add-success.png
rename to packages/ui/certd-client/src/assets/doc/images/4-add-success.png
diff --git a/packages/ui/certd-client/public/doc/images/5-view.png b/packages/ui/certd-client/src/assets/doc/images/5-view.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/5-view.png
rename to packages/ui/certd-client/src/assets/doc/images/5-view.png
diff --git a/packages/ui/certd-client/public/doc/images/6-1-add-task.png b/packages/ui/certd-client/src/assets/doc/images/6-1-add-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/6-1-add-task.png
rename to packages/ui/certd-client/src/assets/doc/images/6-1-add-task.png
diff --git a/packages/ui/certd-client/public/doc/images/6-2-add-task.png b/packages/ui/certd-client/src/assets/doc/images/6-2-add-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/6-2-add-task.png
rename to packages/ui/certd-client/src/assets/doc/images/6-2-add-task.png
diff --git a/packages/ui/certd-client/public/doc/images/6-3-add-task.png b/packages/ui/certd-client/src/assets/doc/images/6-3-add-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/6-3-add-task.png
rename to packages/ui/certd-client/src/assets/doc/images/6-3-add-task.png
diff --git a/packages/ui/certd-client/public/doc/images/7-1-add-host-task.png b/packages/ui/certd-client/src/assets/doc/images/7-1-add-host-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/7-1-add-host-task.png
rename to packages/ui/certd-client/src/assets/doc/images/7-1-add-host-task.png
diff --git a/packages/ui/certd-client/public/doc/images/7-2-add-host-task.png b/packages/ui/certd-client/src/assets/doc/images/7-2-add-host-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/7-2-add-host-task.png
rename to packages/ui/certd-client/src/assets/doc/images/7-2-add-host-task.png
diff --git a/packages/ui/certd-client/public/doc/images/7-3-add-host-task.png b/packages/ui/certd-client/src/assets/doc/images/7-3-add-host-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/7-3-add-host-task.png
rename to packages/ui/certd-client/src/assets/doc/images/7-3-add-host-task.png
diff --git a/packages/ui/certd-client/public/doc/images/8-1-add-host-task.png b/packages/ui/certd-client/src/assets/doc/images/8-1-add-host-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/8-1-add-host-task.png
rename to packages/ui/certd-client/src/assets/doc/images/8-1-add-host-task.png
diff --git a/packages/ui/certd-client/public/doc/images/8-2-add-host-task.png b/packages/ui/certd-client/src/assets/doc/images/8-2-add-host-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/8-2-add-host-task.png
rename to packages/ui/certd-client/src/assets/doc/images/8-2-add-host-task.png
diff --git a/packages/ui/certd-client/public/doc/images/8-4-add-host-task.png b/packages/ui/certd-client/src/assets/doc/images/8-4-add-host-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/8-4-add-host-task.png
rename to packages/ui/certd-client/src/assets/doc/images/8-4-add-host-task.png
diff --git a/packages/ui/certd-client/public/doc/images/8-5-add-host-task.png b/packages/ui/certd-client/src/assets/doc/images/8-5-add-host-task.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/8-5-add-host-task.png
rename to packages/ui/certd-client/src/assets/doc/images/8-5-add-host-task.png
diff --git a/packages/ui/certd-client/public/doc/images/9-start.png b/packages/ui/certd-client/src/assets/doc/images/9-start.png
similarity index 100%
rename from packages/ui/certd-client/public/doc/images/9-start.png
rename to packages/ui/certd-client/src/assets/doc/images/9-start.png
diff --git a/packages/ui/certd-client/public/icons/demo.css b/packages/ui/certd-client/src/assets/icons/demo.css
similarity index 100%
rename from packages/ui/certd-client/public/icons/demo.css
rename to packages/ui/certd-client/src/assets/icons/demo.css
diff --git a/packages/ui/certd-client/public/icons/demo_index.html b/packages/ui/certd-client/src/assets/icons/demo_index.html
similarity index 100%
rename from packages/ui/certd-client/public/icons/demo_index.html
rename to packages/ui/certd-client/src/assets/icons/demo_index.html
diff --git a/packages/ui/certd-client/public/icons/iconfont.css b/packages/ui/certd-client/src/assets/icons/iconfont.css
similarity index 100%
rename from packages/ui/certd-client/public/icons/iconfont.css
rename to packages/ui/certd-client/src/assets/icons/iconfont.css
diff --git a/packages/ui/certd-client/public/icons/iconfont.js b/packages/ui/certd-client/src/assets/icons/iconfont.js
similarity index 100%
rename from packages/ui/certd-client/public/icons/iconfont.js
rename to packages/ui/certd-client/src/assets/icons/iconfont.js
diff --git a/packages/ui/certd-client/public/icons/iconfont.json b/packages/ui/certd-client/src/assets/icons/iconfont.json
similarity index 100%
rename from packages/ui/certd-client/public/icons/iconfont.json
rename to packages/ui/certd-client/src/assets/icons/iconfont.json
diff --git a/packages/ui/certd-client/public/icons/iconfont.svg b/packages/ui/certd-client/src/assets/icons/iconfont.svg
similarity index 100%
rename from packages/ui/certd-client/public/icons/iconfont.svg
rename to packages/ui/certd-client/src/assets/icons/iconfont.svg
diff --git a/packages/ui/certd-client/public/images/logo/logo.svg b/packages/ui/certd-client/src/assets/images/logo/logo.svg
similarity index 100%
rename from packages/ui/certd-client/public/images/logo/logo.svg
rename to packages/ui/certd-client/src/assets/images/logo/logo.svg
diff --git a/packages/ui/certd-client/public/images/logo/rect-black.svg b/packages/ui/certd-client/src/assets/images/logo/rect-black.svg
similarity index 100%
rename from packages/ui/certd-client/public/images/logo/rect-black.svg
rename to packages/ui/certd-client/src/assets/images/logo/rect-black.svg
diff --git a/packages/ui/certd-client/public/images/logo/square.svg b/packages/ui/certd-client/src/assets/images/logo/square.svg
similarity index 100%
rename from packages/ui/certd-client/public/images/logo/square.svg
rename to packages/ui/certd-client/src/assets/images/logo/square.svg
diff --git a/packages/ui/certd-client/public/images/plugin.png b/packages/ui/certd-client/src/assets/images/plugin.png
similarity index 100%
rename from packages/ui/certd-client/public/images/plugin.png
rename to packages/ui/certd-client/src/assets/images/plugin.png
diff --git a/packages/ui/certd-client/public/images/preview.png b/packages/ui/certd-client/src/assets/images/preview.png
similarity index 100%
rename from packages/ui/certd-client/public/images/preview.png
rename to packages/ui/certd-client/src/assets/images/preview.png
diff --git a/packages/ui/certd-client/src/components/tutorial/tutorial-steps.vue b/packages/ui/certd-client/src/components/tutorial/tutorial-steps.vue
index 548b0110..b66baec7 100644
--- a/packages/ui/certd-client/src/components/tutorial/tutorial-steps.vue
+++ b/packages/ui/certd-client/src/components/tutorial/tutorial-steps.vue
@@ -43,27 +43,27 @@ const steps = ref<Step[]>([
     description: "演示证书申请任务如何配置",
     items: [
       {
-        image: "/doc/images/1-add.png",
+        image: "/assets/doc/images/1-add.png",
         title: "创建证书流水线",
         descriptions: ["点击添加流水线,选择证书申请"]
       },
       {
-        image: "/doc/images/2-access-provider.png",
+        image: "/assets/doc/images/2-access-provider.png",
         title: "DNS授权",
         descriptions: ["证书申请需要给域名添加TXT解析记录来验证域名所有权"]
       },
       {
-        image: "/doc/images/3-add-access.png",
+        image: "/assets/doc/images/3-add-access.png",
         title: "第一次使用,需要添加DNS授权",
         descriptions: ["选择DNS授权,确认创建"]
       },
       // {
-      //   image: "/doc/images/3-add-access.png",
+      //   image: "/assets/doc/images/3-add-access.png",
       //   title: "确定创建流水线",
       //   descriptions: ["选择DNS授权,信息填写无误,确认创建"]
       // },
       {
-        image: "/doc/images/4-add-success.png",
+        image: "/assets/doc/images/4-add-success.png",
         title: "流水线创建成功",
         descriptions: ["此时证书申请任务已经建好,点击手动触发即可测试证书申请", "接下来演示如何添加部署任务"]
       }
@@ -74,52 +74,52 @@ const steps = ref<Step[]>([
     description: "演示部署到阿里云CDN和Nginx",
     items: [
       {
-        image: "/doc/images/6-1-add-task.png",
+        image: "/assets/doc/images/6-1-add-task.png",
         title: "添加部署任务",
         descriptions: ["演示第一个部署任务,部署到阿里云CDN"]
       },
       {
-        image: "/doc/images/6-2-add-task.png",
+        image: "/assets/doc/images/6-2-add-task.png",
         title: "选择任务插件",
         descriptions: ["可以搜索插件,这里选择阿里云CDN插件"]
       },
       {
-        image: "/doc/images/6-3-add-task.png",
+        image: "/assets/doc/images/6-3-add-task.png",
         title: "配置任务参数",
         descriptions: ["填写CDN的域名和证书ID", "任务保存之后,阿里云CDN的部署任务就配置好了"]
       },
       {
-        image: "/doc/images/7-1-add-host-task.png",
+        image: "/assets/doc/images/7-1-add-host-task.png",
         title: "添加主机部署任务",
         descriptions: ["接下来演示配置第二个部署任务,部署到主机", "部署到主机分两步: 1. 上传证书到主机 2. 运行主机命令"]
       },
       {
-        image: "/doc/images/7-2-add-host-task.png",
+        image: "/assets/doc/images/7-2-add-host-task.png",
         title: "配置上传到主机任务",
         descriptions: ["填写上传到主机任务参数", "比如证书保存路径"]
       },
       {
-        image: "/doc/images/7-3-add-host-task.png",
+        image: "/assets/doc/images/7-3-add-host-task.png",
         title: "添加主机ssh登录授权",
         descriptions: ["填写主机ip、用户名、密码,授权只需添加一次,后续其他任务可以复用"]
       },
       {
-        image: "/doc/images/8-1-add-host-task.png",
+        image: "/assets/doc/images/8-1-add-host-task.png",
         title: "上传到主机任务配置完成",
         descriptions: ["接下来配置主机执行脚本,去部署证书"]
       },
       {
-        image: "/doc/images/8-2-add-host-task.png",
+        image: "/assets/doc/images/8-2-add-host-task.png",
         title: "选择添加主机远程命令任务",
         descriptions: ["选择主机远程命令任务"]
       },
       {
-        image: "/doc/images/8-4-add-host-task.png",
+        image: "/assets/doc/images/8-4-add-host-task.png",
         title: "填写证书部署脚本",
         descriptions: ["选择主机授权,编写部署脚本,这里演示部署到nginx,需要重启nginx,让证书生效"]
       },
       {
-        image: "/doc/images/8-5-add-host-task.png",
+        image: "/assets/doc/images/8-5-add-host-task.png",
         title: "上传到主机任务的两个步骤配置完成",
         descriptions: ["接下来测试运行"]
       }
@@ -130,47 +130,47 @@ const steps = ref<Step[]>([
     description: "演示流水线运行,查看日志,成功后跳过等",
     items: [
       {
-        image: "/doc/images/9-start.png",
+        image: "/assets/doc/images/9-start.png",
         title: "运行测试一下",
         descriptions: ["之前是把证书上传到主机,接下来要运行命令,去部署证书"]
       },
       {
-        image: "/doc/images/10-1-log.png",
+        image: "/assets/doc/images/10-1-log.png",
         title: "查看日志",
         descriptions: ["点击任务可以查看状态和日志"]
       },
       {
-        image: "/doc/images/11-1-error.png",
+        image: "/assets/doc/images/11-1-error.png",
         title: "执行失败如何排查",
         descriptions: ["查看错误日志"]
       },
       {
-        image: "/doc/images/11-2-error.png",
+        image: "/assets/doc/images/11-2-error.png",
         title: "执行失败如何排查",
         descriptions: ["查看错误日志,这里报的是nginx容器不存在,修改命令改成正确的nginx容器名称"]
       },
       {
-        image: "/doc/images/12-1-log-success.png",
+        image: "/assets/doc/images/12-1-log-success.png",
         title: "执行成功",
         descriptions: ["修改正确后,重新点击手动触发,重新运行一次,执行成功"]
       },
       {
-        image: "/doc/images/12-2-skip-log.png",
+        image: "/assets/doc/images/12-2-skip-log.png",
         title: "成功后自动跳过",
         descriptions: ["可以看到成功过的将会自动跳过,不会重复执行,只有当参数变更或者证书更新了,才会重新运行"]
       },
       {
-        image: "/doc/images/13-1-result.png",
+        image: "/assets/doc/images/13-1-result.png",
         title: "查看证书部署成功",
         descriptions: ["访问nginx上的网站,可以看到证书已经部署成功"]
       },
       {
-        image: "/doc/images/13-2-result.png",
+        image: "/assets/doc/images/13-2-result.png",
         title: "阿里云CDN也部署成功",
         descriptions: ["阿里云CDN上已经更新证书,证书名称已certd开头"]
       },
       {
-        image: "/doc/images/13-3-download.png",
+        image: "/assets/doc/images/13-3-download.png",
         title: "还可以下载证书,手动部署",
         descriptions: ["如果还没有好用的部署插件,没办法自动部署,你还可以下载证书,手动部署"]
       }
@@ -181,7 +181,7 @@ const steps = ref<Step[]>([
     description: "自动运行",
     items: [
       {
-        image: "/doc/images/14-timer.png",
+        image: "/assets/doc/images/14-timer.png",
         title: "设置定时执行",
         descriptions: [
           "流水线测试成功,接下来配置定时触发,以后每天定时执行就不用管了",
@@ -189,7 +189,7 @@ const steps = ref<Step[]>([
         ]
       },
       {
-        image: "/doc/images/15-1-email.png",
+        image: "/assets/doc/images/15-1-email.png",
         title: "设置邮件通知",
         descriptions: ["建议选择监听'错误时'和'错误转成功'两种即可,在意外失败时可以尽快去排查问题,(免费版需要配置邮件服务器)"]
       }
diff --git a/packages/ui/certd-client/src/layout/layout-framework.vue b/packages/ui/certd-client/src/layout/layout-framework.vue
index 1e09b78b..bafa66e4 100644
--- a/packages/ui/certd-client/src/layout/layout-framework.vue
+++ b/packages/ui/certd-client/src/layout/layout-framework.vue
@@ -2,7 +2,7 @@
   <a-layout class="fs-framework">
     <a-layout-sider v-model:collapsed="asideCollapsed" :trigger="null" collapsible>
       <div class="header-logo">
-        <img src="/images/logo/logo.svg" />
+        <img src="/assets/images/logo/logo.svg" />
         <span v-if="!asideCollapsed" class="title">Certd</span>
       </div>
       <div class="aside-menu">
diff --git a/packages/ui/certd-client/src/layout/layout-outside.vue b/packages/ui/certd-client/src/layout/layout-outside.vue
index 34ef6f24..2c9871ad 100644
--- a/packages/ui/certd-client/src/layout/layout-outside.vue
+++ b/packages/ui/certd-client/src/layout/layout-outside.vue
@@ -4,7 +4,7 @@
       <div class="user-layout-content">
         <div class="top flex flex-col items-center justify-center">
           <div class="header flex flex-row items-center">
-            <img src="/images/logo/rect-black.svg" class="logo" alt="logo" />
+            <img src="/assets/images/logo/rect-black.svg" class="logo" alt="logo" />
             <span class="title"></span>
           </div>
           <div class="desc"></div>
diff --git a/packages/ui/certd-client/src/store/modules/settings.ts b/packages/ui/certd-client/src/store/modules/settings.ts
index 4c43d564..fee81cc0 100644
--- a/packages/ui/certd-client/src/store/modules/settings.ts
+++ b/packages/ui/certd-client/src/store/modules/settings.ts
@@ -32,10 +32,9 @@ export interface SettingState {
     appKey?: string;
   };
   siteInfo?: {
-    TITLE: string;
-    SLOGAN: string;
-    LOGO: string;
-    ICP_NO: string;
+    title: string;
+    slogan: string;
+    logo: string;
   };
 }
 
@@ -54,7 +53,8 @@ export const useSettingStore = defineStore({
     },
     sysPublic: {
       registerEnabled: false,
-      managerOtherUserPipeline: false
+      managerOtherUserPipeline: false,
+      icpNo: ""
     },
     installInfo: {
       siteId: "",
@@ -64,10 +64,9 @@ export const useSettingStore = defineStore({
       appKey: ""
     },
     siteInfo: {
-      TITLE: "",
-      SLOGAN: "",
-      LOGO: "",
-      ICP_NO: ""
+      title: "Certd",
+      slogan: "让你的证书永不过期",
+      logo: ""
     }
   }),
   getters: {
diff --git a/packages/ui/certd-client/src/views/framework/home/content/index.vue b/packages/ui/certd-client/src/views/framework/home/content/index.vue
index 73775193..668ccb86 100644
--- a/packages/ui/certd-client/src/views/framework/home/content/index.vue
+++ b/packages/ui/certd-client/src/views/framework/home/content/index.vue
@@ -18,7 +18,7 @@
       </a-alert>
     </div>
     <div class="content">
-      <img src="/images/preview.png" class="preview_img" />
+      <img src="/assets/images/preview.png" class="preview_img" />
     </div>
     <div class="footer_box">
       <div>如果觉得好用,请不要吝啬你的star哟!</div>
diff --git a/packages/ui/certd-client/src/views/sys/settings/index.vue b/packages/ui/certd-client/src/views/sys/settings/index.vue
index 3e998642..abfd5c75 100644
--- a/packages/ui/certd-client/src/views/sys/settings/index.vue
+++ b/packages/ui/certd-client/src/views/sys/settings/index.vue
@@ -19,6 +19,9 @@
         <a-form-item label="管理其他用户流水线" name="managerOtherUserPipeline">
           <a-switch v-model:checked="formState.managerOtherUserPipeline" />
         </a-form-item>
+        <a-form-item label="ICP备案号" name="icpNo">
+          <a-switch v-model:checked="formState.icpNo" />
+        </a-form-item>
         <!--        <a-form-item label="启动后触发流水线" name="triggerOnStartup">-->
         <!--          <a-switch v-model:checked="formState.triggerOnStartup" />-->
         <!--          <div class="helper">启动后自动触发一次所有已启用的流水线</div>-->
diff --git a/packages/ui/certd-client/src/views/sys/site/index.vue b/packages/ui/certd-client/src/views/sys/site/index.vue
index f3773a82..cd911282 100644
--- a/packages/ui/certd-client/src/views/sys/site/index.vue
+++ b/packages/ui/certd-client/src/views/sys/site/index.vue
@@ -1,9 +1,9 @@
 <template>
-  <fs-page class="page-sys-settings">
+  <fs-page class="page-sys-site">
     <template #header>
       <div class="title">站点个性化设置</div>
     </template>
-    <div class="sys-settings-form">
+    <div class="sys-site-form">
       <a-form
         :model="formState"
         name="basic"
@@ -13,16 +13,15 @@
         @finish="onFinish"
         @finish-failed="onFinishFailed"
       >
-        <a-form-item label="开启自助注册" name="registerEnabled">
-          <a-switch v-model:checked="formState.registerEnabled" />
+        <a-form-item label="标题" name="title">
+          <a-input v-model:checked="formState.title" />
         </a-form-item>
-        <a-form-item label="管理其他用户流水线" name="managerOtherUserPipeline">
-          <a-switch v-model:checked="formState.managerOtherUserPipeline" />
+        <a-form-item label="副标题" name="slogan">
+          <a-input v-model:value="formState.slogan" />
+        </a-form-item>
+        <a-form-item label="Logo" name="logo">
+          <fs-cropper-upload v-model:value="formState.logo" />
         </a-form-item>
-        <!--        <a-form-item label="启动后触发流水线" name="triggerOnStartup">-->
-        <!--          <a-switch v-model:checked="formState.triggerOnStartup" />-->
-        <!--          <div class="helper">启动后自动触发一次所有已启用的流水线</div>-->
-        <!--        </a-form-item>-->
         <a-form-item :wrapper-col="{ offset: 8, span: 16 }">
           <a-button type="primary" html-type="submit">保存</a-button>
         </a-form-item>
@@ -46,7 +45,9 @@ import { useSettingStore } from "/src/store/modules/settings";
 
 interface FormState {
   title: string;
+  slogan: string;
   logo: string;
+  icpNo: string;
 }
 
 const formState = reactive<Partial<FormState>>({
@@ -83,8 +84,8 @@ async function stopOtherUserTimer() {
 </script>
 
 <style lang="less">
-.page-sys-settings {
-  .sys-settings-form {
+.page-sys-site {
+  .sys-site-form {
     width: 500px;
     margin: 20px;
   }
diff --git a/packages/ui/certd-server/src/modules/basic/service/email-service.ts b/packages/ui/certd-server/src/modules/basic/service/email-service.ts
index bafa5cde..3663b9cc 100644
--- a/packages/ui/certd-server/src/modules/basic/service/email-service.ts
+++ b/packages/ui/certd-server/src/modules/basic/service/email-service.ts
@@ -5,7 +5,7 @@ import nodemailer from 'nodemailer';
 import type SMTPConnection from 'nodemailer/lib/smtp-connection';
 import { logger } from '@certd/pipeline';
 import { UserSettingsService } from '../../mine/service/user-settings-service.js';
-import { PlusService } from './plus-service.js';
+import { PlusService } from '@certd/lib-server';
 
 export type EmailConfig = {
   host: string;
diff --git a/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts b/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts
index 5651ee1e..9bf31344 100644
--- a/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts
+++ b/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts
@@ -4,7 +4,7 @@ import { BaseController } from '@certd/lib-server';
 import { AppKey } from '@certd/pipeline';
 import { SysInstallInfo } from '@certd/lib-server';
 import { logger } from '@certd/pipeline';
-import { PlusService } from '../../basic/service/plus-service.js';
+import { PlusService } from '@certd/lib-server';
 
 /**
  */
diff --git a/packages/ui/certd-server/src/modules/system/controller/site-controller.ts b/packages/ui/certd-server/src/modules/system/controller/site-controller.ts
deleted file mode 100644
index 0afecccc..00000000
--- a/packages/ui/certd-server/src/modules/system/controller/site-controller.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core';
-import { SysSettingsService } from '@certd/lib-server';
-import { BaseController } from '@certd/lib-server';
-import { AppKey } from '@certd/pipeline';
-import { SysInstallInfo } from '@certd/lib-server';
-import { logger } from '@certd/pipeline';
-import { PlusService } from '../../basic/service/plus-service.js';
-
-/**
- */
-@Provide()
-@Controller('/api/sys/site')
-export class SysPlusController extends BaseController {
-  @Inject()
-  sysSettingsService: SysSettingsService;
-
-  @Inject()
-  plusService: PlusService;
-
-  @Post('/active', { summary: 'sys:settings:edit' })
-  async active(@Body(ALL) body) {
-    const { code } = body;
-    const installInfo: SysInstallInfo = await this.sysSettingsService.getSetting(SysInstallInfo);
-    const siteId = installInfo.siteId;
-    const formData = {
-      appKey: AppKey,
-      code,
-      subjectId: siteId,
-    };
-
-    const res: any = await this.plusService.active(formData);
-
-    if (res.code > 0) {
-      logger.error('激活失败', res.message);
-      return this.fail(res.message, 1);
-    }
-    const license = res.data.license;
-
-    await this.plusService.updateLicense(license);
-
-    return this.ok(true);
-  }
-  @Post('/bindUrl', { summary: 'sys:settings:edit' })
-  async bindUrl(@Body(ALL) body: { url: string }) {
-    const { url } = body;
-
-    const installInfo: SysInstallInfo = await this.sysSettingsService.getSetting(SysInstallInfo);
-    await this.plusService.bindUrl(installInfo.siteId, url);
-
-    installInfo.bindUrl = url;
-    await this.sysSettingsService.saveSetting(installInfo);
-
-    return this.ok(true);
-  }
-}
diff --git a/step.md b/step.md
index 4ba15032..321a0b57 100644
--- a/step.md
+++ b/step.md
@@ -13,19 +13,19 @@
 ## 自动化流水线创建
 
 ### 1. 创建证书申请部署流水线
-![创建证书申请任务](./packages/ui/certd-client/public/doc/images/1-add.png)
+![创建证书申请任务](./packages/ui/certd-client/src/assets/doc/images/1-add.png)
 
 需要添加域名的DNS解析服务商的授权
-![添加域名的DNS解析服务商的授权](./packages/ui/certd-client/public/doc/images/2-access-provider.png)
+![添加域名的DNS解析服务商的授权](./packages/ui/certd-client/src/assets/doc/images/2-access-provider.png)
 
 填写accessKey和accessSecret
-![](./packages/ui/certd-client/public/doc/images/3-add-access.png)
+![](./packages/ui/certd-client/src/assets/doc/images/3-add-access.png)
 流水线创建成功
-![](./packages/ui/certd-client/public/doc/images/4-add-success.png)
+![](./packages/ui/certd-client/src/assets/doc/images/4-add-success.png)
 
 ### 2. 任务详情界面
 
-![](./packages/ui/certd-client/public/doc/images/5-view.png)
+![](./packages/ui/certd-client/src/assets/doc/images/5-view.png)
 
 到这一步申请证书就已经配置完成了。 
 点击手动触发,就可以申请证书了。
@@ -34,72 +34,72 @@
 
 ### 3. 添加部署到阿里云CDN任务
 点击添加任务
-![](./packages/ui/certd-client/public/doc/images/6-1-add-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/6-1-add-task.png)
 
 选择任务类型
-![](./packages/ui/certd-client/public/doc/images/6-2-add-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/6-2-add-task.png)
 
 填写任务参数
-![](./packages/ui/certd-client/public/doc/images/6-3-add-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/6-3-add-task.png)
 
 点击确定,部署到CDN任务配置成功
 
 ### 4. 添加部署到服务器主机任务
 点击新任务,弹出添加任务界面
-![](./packages/ui/certd-client/public/doc/images/7-1-add-host-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/7-1-add-host-task.png)
 先选择上传到主机任务
 
 填写任务参数,比如证书保存路径
-![](./packages/ui/certd-client/public/doc/images/7-2-add-host-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/7-2-add-host-task.png)
 
 需要添加主机ip、用户名、密码,只需添加一次,后续其他任务可以复用
-![](./packages/ui/certd-client/public/doc/images/7-3-add-host-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/7-3-add-host-task.png)
 
 然后添加第二个任务,执行主机命令,部署证书
-![](./packages/ui/certd-client/public/doc/images/8-1-add-host-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/8-1-add-host-task.png)
 
 选择执行脚本命令任务
-![](./packages/ui/certd-client/public/doc/images/8-2-add-host-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/8-2-add-host-task.png)
 
 编写脚本,选择之前添加的主机
-![](./packages/ui/certd-client/public/doc/images/8-4-add-host-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/8-4-add-host-task.png)
 
 点击确定,部署到主机任务配置成功
-![](./packages/ui/certd-client/public/doc/images/8-5-add-host-task.png)
+![](./packages/ui/certd-client/src/assets/doc/images/8-5-add-host-task.png)
 
 ### 5. 手动触发执行任务,测试一下
-![](./packages/ui/certd-client/public/doc/images/9-start.png)
+![](./packages/ui/certd-client/src/assets/doc/images/9-start.png)
 
 点击任务可以查看状态和日志
-![](./packages/ui/certd-client/public/doc/images/10-1-log.png)
+![](./packages/ui/certd-client/src/assets/doc/images/10-1-log.png)
 
 这里执行失败,可以查看错误日志
-![](./packages/ui/certd-client/public/doc/images/11-1-error.png)
-![](./packages/ui/certd-client/public/doc/images/11-2-error.png)
+![](./packages/ui/certd-client/src/assets/doc/images/11-1-error.png)
+![](./packages/ui/certd-client/src/assets/doc/images/11-2-error.png)
 
 修改正确后,重新执行
-![](./packages/ui/certd-client/public/doc/images/12-1-log-success.png)
+![](./packages/ui/certd-client/src/assets/doc/images/12-1-log-success.png)
 可以看到前面执行过的就会跳过,不会重复执行
-![](./packages/ui/certd-client/public/doc/images/12-2-skip-log.png)
+![](./packages/ui/certd-client/src/assets/doc/images/12-2-skip-log.png)
 
 ### 6. 查看证书部署效果
 可以看到证书已经部署到CDN成功
-![](./packages/ui/certd-client/public/doc/images/13-1-result.png)
-![](./packages/ui/certd-client/public/doc/images/13-2-result.png)
+![](./packages/ui/certd-client/src/assets/doc/images/13-1-result.png)
+![](./packages/ui/certd-client/src/assets/doc/images/13-2-result.png)
 也可以手动下载证书
-![](./packages/ui/certd-client/public/doc/images/13-3-download.png)
+![](./packages/ui/certd-client/src/assets/doc/images/13-3-download.png)
 
 ### 7. 定时触发
 配置定时触发,以后每天定时执行    
 cron格式,例如: `0 0 3 * * *` 表示每天凌晨3点执行     
 到期前20天会自动申请新证书并部署,没到期前不会重复申请    
-![](./packages/ui/certd-client/public/doc/images/14-timer.png)
+![](./packages/ui/certd-client/src/assets/doc/images/14-timer.png)
 
 ### 8. 邮件通知
 可以接收邮件通知(支持时机:开始、成功、失败、失败转成功)
-![](./packages/ui/certd-client/public/doc/images/15-1-email.png)
+![](./packages/ui/certd-client/src/assets/doc/images/15-1-email.png)
 需要配置邮件服务器
-![](./packages/ui/certd-client/public/doc/images/15-2-email.png)
+![](./packages/ui/certd-client/src/assets/doc/images/15-2-email.png)