update server

This commit is contained in:
2026-07-30 15:06:38 +08:00
parent dee13d69d5
commit 692d8dd18a
9 changed files with 189 additions and 479 deletions
+98
View File
@@ -0,0 +1,98 @@
# ReinLoop
ReinLoop 是一套面向压力控制、容积测量和系统辨识的完整系统,由以下三个部分组成:
- **ReinLoop 客户端**:基于 Modbus 的 Python GUI,提供 PID、强化学习和手动控制,并执行容积测量与系统辨识。
- **ControlPanel**Electron B 端工作台,用于组织、许可证、模型、配置、辨识数据和控制数据管理。
- **Server**Node.js 服务,负责文件中转、配置发布、辨识反馈、许可证与元数据持久化。
接口、权限边界、请求字段和响应格式统一维护在 [server/features.md](server/features.md)。
## 仓库结构
```
ReinLoop/
├── ReinLoop/ # Python 控制客户端与 GUI
├── ControlPanel/ # Electron B 端工作台
├── server/ # Node.js / Express 服务
├── changelog.md # 变更记录
└── toserver.md # 服务端待办与协议说明
```
## 核心流程
### 压力控制、容积测量与辨识
ReinLoop 客户端通过 Modbus TCP 连接 MT2-AM8 模块,支持 PID、强化学习和手动控制。容积测量采用一次性配置请求:A 端发起请求,B 端提交经校验的配置后,A 端读取并执行测量。
系统辨识由 B 端发布参数,A 端上传稳定压力 JSON 与辨识 CSV。ControlPanel 下载并绘图后由操作者评审:结果为 `1` 时结束本轮辨识;结果为 `0` 时必须先发布一套新参数,A 端读取后重新辨识。
### 组织、许可证与模型
设备 ID 固定为 `<company-code>/<line-code>`,公司、产线、模型目录、配置发布、绘图收件箱和辨识反馈均使用该 ID。ControlPanel 支持:
- 新增公司与产线,并显示基于服务端心跳的在线状态;
- 签发、登记、查看、下载和撤销 RSA-PSS 许可证;私钥只在操作者本地使用;
- 按产线上传、下载、删除模型及管理控制数据;
- 发布容积测量和系统辨识配置,处理辨识数据与人工反馈。
## 快速开始
### Server
要求 Node.js 20 或更高版本。
```powershell
cd server
npm install
$env:B_ADMIN_TOKEN="your-admin-token"
npm start
```
默认服务地址为 `http://127.0.0.1:3000`,健康检查为 `http://127.0.0.1:3000/health`。业务请求可使用根路径或 `/api`。跨设备部署时,应使用服务器局域网 IP 或 HTTPS 域名,而不是 `127.0.0.1`
### ControlPanel
```powershell
cd ControlPanel
npm install
$env:REINLOOP_API_URL="http://server-address:3000/api"
$env:B_ADMIN_TOKEN="your-admin-token"
npm run gui
```
也可在界面顶部输入 Server URL 和管理令牌;令牌只由 Electron 主进程使用,不会保存到浏览器存储或配置文件。Windows 打包使用 `npm run pack:win`,产物位于仓库根目录的 `Build` 文件夹。
### ReinLoop 客户端
安装 Python 依赖后,在 `ReinLoop` 目录运行:
```bash
python main.py
```
客户端服务地址和设备目录由 `api.py` 配置。控制数据、辨识数据和容积测量结果经 Server 上传;许可证、模型、公司和产线操作由 ControlPanel 完成。
## 部署与数据
- 新生产环境使用 PostgreSQL:设置 `NODE_ENV=production``DATABASE_URL`;迁移可通过 `npm run migrate` 重复执行。
- 设置高熵 `B_ADMIN_TOKEN``LICENSE_PUBLIC_KEY_PATH``PUBLIC_BASE_URL``HOST``PORT` 和可选的 `DATA_DIR`
- 生产环境应使用 HTTPS,并定期备份 PostgreSQL 与完整 `DATA_DIR`;不得提交、上传或保存 RSA 私钥。
- 模型存于 `data/models/<company-code>/<line-code>/`;其他文件由 `DATA_DIR` 管理。已处理辨识文件默认保留 30 天后清理。
- 非模型文件下载需要服务端签发的短期凭证;直接拼接文件地址会被拒绝。
外部访问出现 `502 Bad Gateway` 时,先检查 `http://127.0.0.1:3000/health`,再检查反向代理上游地址、端口和服务日志。
## 验证
```powershell
cd server
npm run check
npm test
```
## 已知事项
- 稳定压力数组 JSON 的最终结构、两套参数的正式默认值、单位与范围仍需产品或算法确认。
- 图像是否通过目前由人工判断,尚未提供自动判定阈值或算法。
- Electron 的第三方构建依赖存在已知安全告警;未执行可能造成破坏性升级的 `npm audit fix --force`