Update PRD.md

This commit is contained in:
Darren 2023-01-29 16:11:29 +08:00 committed by GitHub
parent 722a0cf83f
commit bd1efceaf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,200 +1,42 @@
# 概述
## 需求草稿
| | Cloudron | [casaos](https://www.casaos.io/) | umbrel | runtipi |
| -------------- | -------- | -------------------------------------------------------- | ------------ | ------- |
| 应用编排 | | 单一镜像 | | |
| 市场应用来源 | | 官方+社区 | 官方+社区 | |
| 一键安装程度 | | 不需任何配置 | 不需任何配置 | |
| 应用访问方式 | | 端口 | 端口 | |
| 自定义安装应用 | | Y | N | N |
| Web 管理容器 | | Y | N | |
| 默认镜像仓库 | | DockerHub | | |
| 自适应 | | Y | Y | |
| 多语言 | | Y | N | |
| 用户管理 | | 单一用户 | 单一用户 | |
| 自带应用 | | 文件,服务器终端,容器终端,监控,日志 | 监控,日志 | |
| 应用管理 | | 完整容器参数设置,克隆,绑定域名?备份?证书? | 无 | |
| 应用更新 | | N | | |
| 后端语言 | | Go | | |
| API | | HTTP API | | |
| 前端 | | vue.js | | |
| CLI | | Y | | |
| HTTP 转发 | | 无,端口访问应用 | | |
| 公共数据库 | | 无 | | |
| 开发文档 | | [wiki](https://wiki.casaos.io/en/contribute/development) | | |
| 2FA | | N | Y | |
| 安装方式 | | 服务器安装 | 容器安装 | |
| 商店更新 | | N | Y | |
| 商店绑定域名 | Y | N | N | |
| DNS服务 | Y | N | | |
* 应用自动分配4级域名后如何再 CNAME 二级域名?
## 架构
StackHub主要架构和技术选型如下
* 架构后台JS框架+后端Python提供API服务
* 后端Python, Docker, Docker-compose, FastAPI, Typer
* 打包工具:[porter](https://porter.sh/)
## 后端接口说明
### 用户相关(登陆,退出,注册等 待讨论?)
### APP详情是否共用websoft9主站信息 待讨论?)
### APP列表是否共用websoft9主站信息 待讨论?)
### App安装接口installApp
#### 接口地址
http://ip:port/installApp
#### 访问方式
Httpget/post
同步/异步:异步
#### 接口参数
| 变量名 | 说明 | 类型 | 备注 |
| ------------ | ------------ | ----- |----- |
| appName | 安装app的名称| str |必须 |
e.g.
```
{
"appName":"redmine"
}
```
#### 返回数据
| 变量名 | 说明 | 类型 | 备注 |
| ------------ | ------------ | ----- |----- |
| code | 接口是否调用成功标志| str |"0":失败 "1":成功 |
| message | 接口返回信息| str |如接口调用成功时返回"appName安装成功" |
| data | APP相关信息| Json |主容器名: websoft9-appName App端口: port(9001) |
e.g.
```
{
"code":"1",
"message":"appName安装成功",
"data":{
"containerName": "websoft9-appName",
"port": "9001",
"db_port": "3307",
"info": "XXXX"
}
}
```
#### 接口主要内容
通过调用该接口判断服务器是否已经存在websoft9-appName容器如存在返回失败信息并提示已经存在该App如不存在在服务器端启动一个名为websoft9-appName的容器以及相关容器主容器以及相关容器的端口需要根据服务器状态动态设定。
### App卸载接口uninstallApp
#### 接口地址
http://ip:port/uninstallApp
#### 访问方式
Httpget/post
同步/异步:同步
#### 接口参数
| 变量名 | 说明 | 类型 | 备注 |
| ------------ | ------------ | ----- |----- |
| appName | 卸载app的名称| str |必须 |
e.g.
```
{
"appName":"redmine"
}
```
#### 返回数据
| 变量名 | 说明 | 类型 | 备注 |
| ------------ | ------------ | ----- |----- |
| code | 接口是否调用成功标志| str |"0":失败 "1":成功 |
| message | 接口返回信息| str |如接口调用成功时返回"appName卸载成功" |
e.g.
```
{
"code":"0",
"message":"appName卸载失败任然在运行端口为9001请ssh登陆如服务器后使用docker-ps查看并手动停止容器"
}
```
### App状态查询接口getAppInfo
#### 接口地址
http://ip:port/getAppInfo
#### 访问方式
Httpget/post
同步/异步:同步
#### 接口参数
| 变量名 | 说明 | 类型 | 备注 |
| ------------ | ------------ | ----- |----- |
| appName | 安装app的名称| str |必须 |
e.g.
```
{
"appName":"redmine"
}
```
#### 返回数据
| 变量名 | 说明 | 类型 | 备注 |
| ------------ | ------------ | ----- |----- |
| code | 接口是否调用成功标志| str |"0":失败 "1":成功 |
| message | 接口返回信息| str |如接口调用成功时返回"appName状态信息查询" |
| data | APP相关信息| Json |状态:启动成功 App端口: port(9001) |
e.g.
```
{
"code":"1",
"message":"appName状态信息查询成功",
"data":{
"status": "0", // 0:未启动 1:启动成功 2启动失败(状态信息不正常将错误信息返回到info字段?)
"port": "",
"db_port": "",
"info": ""
}
}
```
### 客户已安装App状态查询接口getAllAppInfo
### 卸载客户已安装AppuninstallAllApp
### 服务器状态查询接口searchServer
#### 接口地址
http://ip:port/searchServer
#### 访问方式
Httpget/post
同步/异步:同步
#### 接口参数
#### 返回数据
| 变量名 | 说明 | 类型 | 备注 |
| ------------ | ------------ | ----- |----- |
| code | 接口是否调用成功标志| str |"0":失败 "1":成功 |
| message | 接口返回信息| str |如接口调用成功时返回"服务器状态信息查询成功" |
| data | APP相关信息| Json |服务器各种信息如cpu使用率内存使用率磁盘占有率 |
e.g.
```
{
"code":"1",
"message":"服务器状态信息查询成功",
"data":{
"cpu": "10%",
"memory": "54%",
"hdd": "",
"risk": "3",
...
"info": ""
}
}
```