174 lines
3.8 KiB
Markdown
174 lines
3.8 KiB
Markdown
# 飞书审批配置服务
|
||
|
||
内网 Web 服务:用户在浏览器中设计审批表单与流程,保存时**下载包含全部配置的独立 HTML 文件**,可离线打开或分发给他人。
|
||
|
||
## 功能
|
||
|
||
- 在线编辑:基础信息、表单设计、流程设计
|
||
- **保存并下载 HTML**:配置写入 HTML 文件,无需本地 bat / data 文件夹
|
||
- **导入 HTML**:继续编辑之前导出的配置文件
|
||
|
||
## 环境要求
|
||
|
||
- **Node.js 16.x**(CentOS 7 推荐 16.20 LTS)
|
||
- 无需 `npm install`(零第三方依赖,仅使用 Node 内置模块)
|
||
|
||
## 快速启动
|
||
|
||
```bash
|
||
cd Approval_of_design
|
||
node server.js
|
||
```
|
||
|
||
浏览器访问:`http://服务器IP:8080`
|
||
|
||
端口与监听地址可在 `project.config.json` 中修改:
|
||
|
||
```json
|
||
{
|
||
"projectId": "approval_of_design",
|
||
"port": 8080,
|
||
"host": "0.0.0.0",
|
||
"label": "飞书审批配置服务"
|
||
}
|
||
```
|
||
|
||
## CentOS 7 部署
|
||
|
||
### 1. 安装 Node.js 16.x
|
||
|
||
CentOS 7 自带 glibc 较旧,建议使用 NodeSource 16.x 或 nvm:
|
||
|
||
**方式 A:NodeSource(推荐)**
|
||
|
||
```bash
|
||
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
|
||
sudo yum install -y nodejs
|
||
node -v # 应显示 v16.x.x
|
||
```
|
||
|
||
**方式 B:nvm**
|
||
|
||
```bash
|
||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||
source ~/.bashrc
|
||
nvm install 16
|
||
nvm use 16
|
||
```
|
||
|
||
### 2. 上传并启动
|
||
|
||
```bash
|
||
sudo mkdir -p /opt/feishu-approval
|
||
# 将项目文件上传到 /opt/feishu-approval
|
||
cd /opt/feishu-approval
|
||
node server.js
|
||
```
|
||
|
||
或使用项目自带脚本:
|
||
|
||
```bash
|
||
chmod +x deploy/start.sh
|
||
./deploy/start.sh
|
||
```
|
||
|
||
### 3. systemd 开机自启(推荐)
|
||
|
||
```bash
|
||
# 修改 deploy/feishu-approval.service 中 WorkingDirectory、User 后:
|
||
sudo cp deploy/feishu-approval.service /etc/systemd/system/
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable feishu-approval
|
||
sudo systemctl start feishu-approval
|
||
sudo systemctl status feishu-approval
|
||
```
|
||
|
||
### 4. 防火墙
|
||
|
||
```bash
|
||
sudo firewall-cmd --permanent --add-port=8080/tcp
|
||
sudo firewall-cmd --reload
|
||
```
|
||
|
||
### 5. 验证
|
||
|
||
```bash
|
||
curl http://127.0.0.1:8080/api/health
|
||
```
|
||
|
||
## 部署到其他环境
|
||
|
||
### 1. 上传项目
|
||
|
||
将整个 `Approval_of_design` 目录复制到内网服务器。
|
||
|
||
### 2. 启动服务
|
||
|
||
**方式 A:直接运行**
|
||
|
||
```bash
|
||
node server.js
|
||
```
|
||
|
||
**方式 B:使用 pm2 守护进程(推荐)**
|
||
|
||
```bash
|
||
npm install -g pm2
|
||
pm2 start server.js --name feishu-approval
|
||
pm2 save
|
||
pm2 startup
|
||
```
|
||
|
||
**方式 C:Windows 服务**
|
||
|
||
使用 [nssm](https://nssm.cc/) 将 `node server.js` 注册为 Windows 服务,开机自启。
|
||
|
||
### 3. 反向代理(可选)
|
||
|
||
若需通过 80 端口或 HTTPS 访问,可在 Nginx 中配置:
|
||
|
||
```nginx
|
||
location / {
|
||
proxy_pass http://127.0.0.1:8080;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
```
|
||
|
||
### 4. 防火墙
|
||
|
||
在内网服务器开放 `project.config.json` 中配置的端口(默认 8080)。
|
||
|
||
## API
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/` | 在线编辑器 |
|
||
| GET | `/api/health` | 健康检查 |
|
||
| POST | `/api/export` | 提交 JSON 配置,返回 HTML 文件下载 |
|
||
| POST | `/api/import` | 提交 HTML 文本,解析其中的配置 JSON |
|
||
|
||
## 文件说明
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `server.js` | Web 服务主程序 |
|
||
| `飞书审批配置文件_V1.0.html` | 编辑器模板(服务与导出共用) |
|
||
| `project.config.json` | 端口、服务名称等配置 |
|
||
| `deploy/start.sh` | CentOS 7 启动脚本 |
|
||
| `deploy/feishu-approval.service` | systemd 服务单元示例 |
|
||
|
||
## 使用流程
|
||
|
||
1. 访问服务地址,开始新建或导入已有 HTML
|
||
2. 完成表单与流程设计
|
||
3. 点击 **「保存并下载 HTML」**,获得独立配置文件
|
||
4. 下载的 HTML 可双击离线打开;再次编辑可导入回在线服务
|
||
|
||
## 健康检查
|
||
|
||
```bash
|
||
curl http://localhost:8080/api/health
|
||
```
|