【调整】增加部署雨云

This commit is contained in:
cai
2026-01-13 17:47:39 +08:00
parent 4e49ca075a
commit 367c1a1096
1094 changed files with 179074 additions and 45 deletions

View File

@@ -0,0 +1,28 @@
分别生成以下相关的类型文件,在 types/ 目录下,以及 api 文件,在 api/目录下
文件名称如下:
home
autoDeploy
certManage
certApply
authAPIManage
monitor
settings
1、types文件命名方式{视图名称}.d.ts
2、api文件命名方式{视图名称}.ts
3、api文件结构如下
```typescript
import { useApi } from './index'
import type { loginParams, loginResponse } from '@/types/public'
/**
* 登录
* @param params 登录参数
* @returns 登录
*/
export const loginCloudControl = (params?: loginParams) => useApi<loginResponse, loginParams>('/v1/user/login', params)
```

View File

@@ -0,0 +1,273 @@
目前接口返回格式
```ts
export interface AxiosResponseData<T = unknown> {
code: number
count: number
data: T
message: string
status: boolean
}
```
后端请求的协议方式formdata 还是 json
登录的方式使用那种方案jwt以及加密方式
接口文档需要包含一下内容
接口类型、接口返回值、以及其他需要处理的内容需要说清楚,例如登录失效,以及状态的判断
基础要求
1、基于vue3 的 tsx文件编写并将业务和数据、视图分离成 mvc 模式,如果代码中没有包含业务和数据,可以移除该文件,确保结构单一和可维护性。
2、视图文件文件入口为 index.tsx
3、业务代码文件入口为 useController.tsx
4、数据代码文件入口为 useStore.tsx
5、使用hooks编写如果存在表单、表格使用配置生成。参考如下
视图文件内容要求
1、所有的视图style使用css module 编写基于tailwind 的@apply 实现如果行内元素少可以省略创建css module。
2、如果视图使用naiveui tsx 开发内容,如果没有相应的组件,则使用原生样式实现
业务代码内容要求
1、包含 hooks 配置的生成方法,需要导出
2、事件逻辑处理、dom 操作、生命周期、监听函数等,
3、数据代码转发支持将 sotre 数据直接转发
数据代码内容要求
1、包含所有的数据内容例如请求方法、表单数据处理
2、响应式数据存储、持久化数据存储
国际化内容要求
1、将文件中的中文文本未使用 $t 包裹的内容,使用 $t('中文内容') 包裹起来,如果存在则引入 $timport { $t } from "@locales/index"
格式要求
1、注释采用jsdoc格式使用中文作为注释语言
2、注释内容清晰对同类的函数位置整理和功能使用注释分割线分
3、方法名称规范化根据类型和作用定义。
基础视图参考:/Users/chudong/project/tools-monorepo/apps/allin-ssl/src/components/baseComponent/index.tsx
首页模块设计
1、界面设计
包含三个模块,采用上下结构
* 概览模块包含工作流、证书、监控模块,每个模块,都具备所有数量、启用/到期/异常数量、失败/到期数量,以及对应产品图标
* 最近工作流执行列表,包含字段:
*   名称
*   执行状态
*   执行时间
* 快捷入口模块,提供常用的三个模块入口,工作流构建、申请证书、添加监控
2、接口设计包含
* 概览数据接口
* 最近工作流列表
工作流列表模块设计
1、界面设计
采用基础视图组件设计该页面,传入相关内容,
* 添加按钮文本:新增工作流
* 搜索框提示内容:请输入工作流名称
* 表格包含字段:
* 工作流名称
* 触发方式(自动执行或手动可切换)
* 启用状态(启用/停用)
* 最后一次执行时间
* 创建时间
* 操作(包含日志、执行、编辑、删除)
* 添加工作流按钮触发弹窗内容
* 弹窗界面包含多个具备概览图的单选项
* 常用SSL部署工作流
* 自定义工作流
2、接口设计包含
* 工作流列表
* 获取指定工作流程数据
* 新建自定义工作流程数据
* 获取指定工作流执行日志
* 执行指定工作流
* 保存指定工作流程数据
* 删除指定工作流程数据
工作流设计模块设计
1、界面设计
采用流程图构建组建,设计页面,需要设计一下节点设计,所有节点采用
* 申请SSL表单设计
* 域名信息input、必填
* 邮箱信息input、非必填
* DNS 提供商select支持添加添加调用 API 授权页面的添加表单)
* 高级选项折叠
* 数字证书算法select支持字段RSA2048\RSA3072\RSA4096\RSA8192\EC256\EC384默认使用RSA2048\
* 指定DNS解析服务器input非必填提示申请证书过程中优先使用它
* DNS超时时间(input、非必填)
* DNS解析TTL时间(input、非必填)
* 关闭CNAME跟随switch默认关闭
* 关闭ARI续期switch默认关闭
* 续签间隔input当上次签发的证书距离到期时间超过xx天后跳过续签使用
* 部署SSL到指定位置表单设计需要手动开发使用 AI 生成消耗时间,而且基本上可用性低)
*
* 通知告警
* 通知主题input、必填
* 通知内容textarea、必填
* 选择通知渠道select右侧支持添加渠道
*
* 并行分支
* 触发并行添加节点的功能
* 执行结果分支只有节点是申请SSL、部署SSL到指定位置、通知告警节点后面才出现此分支提供选择
* 触发条件判断分支,仅事件触发的节点支持添加该节点
* 节点执行成功后
* 节点执行失败后
2、接口设计包含
* 获取API服务商列表
* 获取证书列表
* 获取网站列表(宝塔面板)
* 获取 CDN 加速域名(仅腾讯、阿里相关密钥获取)
* 获取 WAF 包含域名(仅腾讯、阿里相关密钥获取)
证书管理列表模块设计
1、界面设计
采用基础视图组件设计该页面,传入相关内容,
* 添加按钮文本:上传证书
* 搜索框提示内容:请输入证书名称/类型
* 表格包含字段:
* 域名
* 品牌
* 剩余天数
* 到期时间
* 来源
* 添加时间
* 操作(下载、删除)
* 上传证书按钮触发弹窗内容
* 弹窗界面包含表单(支持证书压缩上传,识别腾讯、阿里下的证书压缩包文件)
* 证书名称
* 证书内容 (PEM 格式)
* 私钥内容 (KEY 格式)
2、接口设计包含
* 获取证书列表
* 下载指定证书
* 上传证书信息
* 删除指定证书信息
申请证书模块模块设计
1、界面设计
采用 tab 页面切换,分为商业证书页面和免费证书页面
* 商业证书采用iframe 内嵌官网页面,官网页面需要新增一个界面作为兼容页面。
* 免费证书采用,卡片式设计界面,以便于后期支持其他渠道
* 证书申请表单
* 手动申请和自动部署的选项卡片(包含 icon 和文件描述)
* 手动申请,采用 DNS 验证自动认证的方式,参考面板的统一设计
* 自动化部署,直接调用工作流的界面。
2、接口设计包含
* 申请证书信息
* 证书验证接口
授权API管理列表模块设计
1、界面设计
采用基础视图组件设计该页面,传入相关内容,
* 添加按钮文本:上传授权 API 管理
* 搜索框提示内容请输入授权api 名称或类型
* 表格包含字段:
*   名称
*   授权API类型提供商如腾讯云宝塔面板
*   创建时间
*   操作(编辑、删除)
* 上传证书按钮触发弹窗内容
* 弹窗界面包含表单
* 授权 API 类型select支持类型 SSH、宝塔、1panel、腾讯、阿里
* 不同的类型显示不同的东西
* SSH
* 服务器IPinput
* SSH端口input默认填充22
* 用户名input默认填充root
* 验证类型radio-button
1. 密码
2. SSH密钥
1. SSH密钥口令
* 宝塔
* 地址input包含协议和端口
* api 密钥input
* 1panel
* 地址input包含协议和端口
* api 密钥input
* 阿里云
* AccessKeyIdinput
* AccessKeySecretinput
* 腾讯云
* SecretIdinput
* SecretKeyinput
2、接口设计包含
* 获取授权 api 列表
* 新建授权 api 信息
* 编辑指定授权 aai 信息
* 删除指定授权 api 信息
监控管理列表模块设计
1、界面设计
采用基础视图组件设计该页面,传入相关内容,
* 添加按钮文本:添加监控
* 搜索框提示内容:请输入监控名称和域名
* 表格包含字段:
*   名称
*   授权API类型提供商如腾讯云宝塔面板
*   创建时间
*   操作(编辑、删除)
* 上传证书按钮触发弹窗内容
* 弹窗界面包含表单
* 监控名称input
* 域名/IPinput
* 检查周期select5/10/15/30/60分钟
* 告警渠道(多选,右侧支持添加渠道)
2、接口设计包含
* 获取监控管理列表
* 设置指定监控启动状态
* 添加监控信息
* 编辑指定监控信息
* 删除指定监控信息
设置管理模块设置
1、界面设置
采用 tab 页面切换,分为三个界面常用设置、告警通知、更新版本,内容部分采用卡片设计
* 常用设置采用1:1 分栏设计,支持表单元素行显示),包含一下具体模块,采用统一保存的方式,保存按钮固定在顶部,避免设置过长的导致问题
* 超时时间input
* 管理员账号input
* 管理员密码input
* SSL 配置switch关闭提供粘贴 keypem 文本域输入,默认折叠隐藏)
* 告警通知(采用上下结构),包含全局通知模块和通知渠道配置两个模块
* 全局通知模块(表单)
* 通知主题input默认文字
* 通知内容textarea默认文字
* 通知渠道(卡片列表,参考面板的设计)
* 左侧图标名称(包含已配置数量,点击可查看)+右侧操作
* 关于我们
* 版本信息,支持更新版本
* 客服二维码
* 微信公众好
* 关于产品介绍
2、接口设计包含
* 获取基础设置信息
* 保存基础设置信息
* 获取告警通用模板配置
* 设置告警通用模板配置
* 获取告警渠道列表
* 设置告警渠道
* 获取更新信息
* 更新版本版本

View File

@@ -0,0 +1,70 @@
流程/工作流图拆封设计
- 基础节点
- 初始化节点(不支持上传)
- 并行节点
- 执行结果节点(删除整个条件判断)
- 任务节点
- 申请节点(支持执行结果判断)
- 上传节点(不支持执行结果判断)
- 部署节点(支持执行结果判断)
- 通知节点(支持执行结果判断)
- 节点操作
- 重命名
- 删除
- 节点下一步配置
- 申请
- 上传
- 部署
- 通知
- 执行结果判断(上传节点不支持)
- 并行
- 节点辅助功能
- 拖拽
- 放大、缩小、还原
- 节点验证
- 验证任务节点
结构规划
- 状态存储(包含节点默认配置数据)
- 基础节点
- 任务节点(可以根据外部的机构自由的构建任务节点,主要有节点条件,节点操作方法)
- 节点渲染器
- 工具方法
- 入口文件
工作流图组件
├─ 状态存储
│ └─ 节点默认配置数据
├─ 基础节点
│ ├─ 初始化节点
│ ├─ 并行节点
│ └─ 执行结果节点
├─ 任务节点
│ ├─ 申请节点
│ ├─ 上传节点
│ ├─ 部署节点
│ └─ 通知节点
├─ 节点渲染器
│ └─ 渲染节点到界面
├─ 工具方法
│ ├─ 创建节点
│ ├─ 重命名节点
│ ├─ 删除节点
│ ├─ 配置节点下一步
│ ├─ 视图缩放
│ └─ 流程验证
└─ 入口文件
└─ 初始化工作流图组件

View File

@@ -0,0 +1,172 @@
[
{
"name": "获取ACME账户列表",
"url": "/acme_account/get_list",
"param": {
"search": "-",
"p": "1",
"limit": "10",
"ca": "-"
},
"response": {
"code": 200,
"count": 0,
"data": [
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:10:48",
"id": 3,
"name": "vvvv",
"type": "tencentcloud",
"update_time": "2025-04-21 11:10:48"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:12:53",
"id": 4,
"name": "xxx",
"type": "tencentcloud",
"update_time": "2025-04-21 11:12:53"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:13:09",
"id": 5,
"name": "1111",
"type": "tencentcloud",
"update_time": "2025-04-21 11:13:09"
}
],
"message": "success",
"status": true
}
},
{
"name": "添加ACME账户",
"url": "/acme_account/add_account",
"param": {
"email": "111@66.com",
"ca": "buypass",
"Kid": "-",
"HmacEncoded": "-",
"CADirURL": "-"
},
"response": {
"code": 200,
"count": 0,
"data": [
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:10:48",
"id": 3,
"name": "vvvv",
"type": "tencentcloud",
"update_time": "2025-04-21 11:10:48"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:12:53",
"id": 4,
"name": "xxx",
"type": "tencentcloud",
"update_time": "2025-04-21 11:12:53"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:13:09",
"id": 5,
"name": "1111",
"type": "tencentcloud",
"update_time": "2025-04-21 11:13:09"
}
],
"message": "success",
"status": true
}
},
{
"name": "更新ACME账户",
"url": "/acme_account/upd_account",
"param": {
"id": "7",
"email": "dfas@66.com",
"ca": "buypass",
"Kid": "-",
"HmacEncoded": "-",
"CADirURL": "-"
},
"response": {
"code": 200,
"count": 0,
"data": [
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:10:48",
"id": 3,
"name": "vvvv",
"type": "tencentcloud",
"update_time": "2025-04-21 11:10:48"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:12:53",
"id": 4,
"name": "xxx",
"type": "tencentcloud",
"update_time": "2025-04-21 11:12:53"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:13:09",
"id": 5,
"name": "1111",
"type": "tencentcloud",
"update_time": "2025-04-21 11:13:09"
}
],
"message": "success",
"status": true
}
},
{
"name": "删除ACME账户",
"url": "/acme_account/del_account",
"param": {
"api_token": "{{api_token}}",
"timestamp": "{{timestamp}}",
"id": "7"
},
"response": {
"code": 200,
"count": 0,
"data": [
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:10:48",
"id": 3,
"name": "vvvv",
"type": "tencentcloud",
"update_time": "2025-04-21 11:10:48"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:12:53",
"id": 4,
"name": "xxx",
"type": "tencentcloud",
"update_time": "2025-04-21 11:12:53"
},
{
"config": "{\"secret_id\": \"xxxxxxx\", \"secret_key\": \"xxxxxxxx\"}",
"create_time": "2025-04-21 11:13:09",
"id": 5,
"name": "1111",
"type": "tencentcloud",
"update_time": "2025-04-21 11:13:09"
}
],
"message": "success",
"status": true
}
}
]

View File

@@ -0,0 +1,4 @@
根据当前接口替换当前模块的接口
1、类型为 ssl.com 和 Google 必填EAB和EAB HMAC参数
2、类型为 zerossl和自定义时选填EAB和EAB HMAC参数
3、类型为 Buypass和Letsencrypt不显示EAB和EAB HMAC参数

View File

@@ -0,0 +1,95 @@
以下是当前项目的视图结构,参考/src/view/test 的目录结构和内容,生成下述的文件和内容
src/
├── views/
│ ├── home/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ ├── useStore.tsx
│ ├── autoDeploy/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ ├── useStore.tsx
│ │ └── children/
│ │ └── pipeDesign/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ └── useStore.tsx
│ ├── certManage/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ ├── useStore.tsx
│ │ └── components/
│ │ └── uploadCert/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ └── useStore.tsx
│ ├── certApply/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ ├── useStore.tsx
│ │ ├── components/
│ │ │ └── certApplyForm/
│ │ │ ├── index.tsx
│ │ │ ├── index.model.css
│ │ │ ├── useController.tsx
│ │ │ └── useStore.tsx
│ │ └── children/
│ │ ├── commCert/
│ │ │ ├── index.tsx
│ │ │ ├── index.model.css
│ │ │ ├── useController.tsx
│ │ │ └── useStore.tsx
│ │ └── freeSslCert/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ └── useStore.tsx
│ ├── authApiManage/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ ├── useStore.tsx
│ │ └── components/
│ │ └── addAuthApi/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ └── useStore.tsx
│ ├── monitor/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ ├── useStore.tsx
│ │ └── components/
│ │ └── addMonitor/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ └── useStore.tsx
│ └── settings/
│ ├── index.tsx
│ ├── index.model.css
│ ├── useController.tsx
│ ├── useStore.tsx
│ └── components/
│ ├── commSettings/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ └── useStore.tsx
│ ├── notifySettings/
│ │ ├── index.tsx
│ │ ├── index.model.css
│ │ ├── useController.tsx
│ │ └── useStore.tsx
│ └── aboutUs/
│ ├── index.tsx
│ ├── index.model.css
│ ├── useController.tsx
│ └── useStore.tsx