智能应用部署

This commit is contained in:
zqm
2026-03-12 14:48:56 +08:00
parent 9e81bed829
commit 99aceb58e6
2 changed files with 586 additions and 0 deletions

View File

@@ -0,0 +1,389 @@
# Claw项目 - 工程项目结构实施计划
## 项目背景
Claw项目是一个企业微信智控未来系统包含两台服务器
* 服务器A局域网服务器有固定IP外网可以访问
* 服务器B阿里云主机在内网中外网不能访问安装了LMStudio
目标是使用Rust和React实现以下功能用户通过企业微信应用"智控未来"和微信小程序进行聊天下发任务。任务经服务器A转到服务器BB上的自建龙虾处理后返回结果给用户。
## 项目结构设计
### 整体结构
```
Claw/
├── Server/ # 后端服务
│ ├── gateway/ # 网关服务服务器A
│ │ ├── src/ # 源代码
│ │ ├── target/ # 编译产出
│ │ └── Cargo.toml # 项目配置
│ ├── SmartClaw/ # 智能控制服务服务器B
│ │ ├── src/ # 源代码
│ │ ├── target/ # 编译产出
│ │ └── Cargo.toml # 项目配置
│ └── shared/ # 共享代码
│ ├── src/ # 源代码
│ ├── target/ # 编译产出
│ └── Cargo.toml # 项目配置
├── client/ # 客户端代码
│ ├── wechat_app/ # 微信应用代码
│ │ ├── src/ # 源代码
│ │ └── dist/ # 编译产出
│ └── web/ # 网页版客户端代码(可选)
│ ├── src/ # 源代码
│ ├── dist/ # 编译产出
│ └── package.json # 项目配置
├── build/ # 构建产物
│ ├── gateway/ # 网关服务构建产物
│ ├── SmartClaw/ # 智能控制服务构建产物
│ └── client/ # 客户端构建产物
├── docs/ # 项目文档
├── scripts/ # 脚本文件
│ ├── build.sh # 构建脚本
│ ├── deploy_gateway.sh # 网关服务部署脚本
│ └── deploy_smart_claw.sh # 智能控制服务部署脚本
├── .gitignore # Git忽略文件
├── Cargo.toml # 根Rust项目配置
├── package.json # 客户端项目配置
└── README.md # 项目说明
```
### 模块功能描述
| 模块 | 功能描述 |
| ---------------------- | ------------------------------------------------------------------------------------------- |
| **Server/gateway** | 网关服务服务器A负责接收企业微信和微信小程序的请求转发到SmartClaw服务返回处理结果。实现HTTP接口、与SmartClaw服务的通信、企业微信和小程序的回调处理。 |
| **Server/SmartClaw** | 智能控制服务服务器B负责接收网关服务的请求处理用户任务调用LMStudio进行AI处理返回处理结果。实现与网关服务的通信、智能控制核心逻辑、LMStudio API集成。 |
| **Server/shared** | 共享代码包含网关服务和SmartClaw服务共用的代码如数据结构、工具函数、常量定义等。 |
| **client/wechat\_app** | 微信应用代码,包括企业微信应用"智控未来"和微信小程序,提供用户交互界面,实现消息发送和任务下发功能。 |
| **client/web** | 网页版客户端代码可选提供基于网页的用户界面实现与微信应用相同的功能方便用户在电脑端操作。使用与微信应用相同的后端服务网关服务不需要额外的IIS服务器。 |
| **build** | 构建产物目录,存放各服务和客户端的构建结果。 |
| **docs** | 项目文档目录存放项目说明、API文档、部署文档、使用文档等。 |
| **scripts** | 脚本文件目录,存放构建脚本、部署脚本等。 |
## 实施任务
### \[ ] Task 1: 创建项目基础结构
* **Priority**: P0
* **Depends On**: None
* **Description**:
* 创建项目的基础目录结构包括Server、client、build、docs、scripts等目录
* 初始化Git仓库
* 创建.gitignore文件忽略编译产出目录和构建产物目录
* **Success Criteria**:
* 项目目录结构创建完成,包括所有必要的子目录
* Git仓库初始化成功
* .gitignore文件配置合理忽略编译产出和构建产物
* **Test Requirements**:
* `programmatic` TR-1.1: 目录结构符合设计要求,包含所有必要的目录
* `programmatic` TR-1.2: .gitignore文件存在且配置合理
* `human-judgement` TR-1.3: 目录结构清晰、合理
* **Notes**: 按照整体结构设计创建目录,确保包含编译产出和构建产物目录
### [ ] Task 2: 初始化Server项目
- **Priority**: P0
- **Depends On**: Task 1
- **Description**:
- 初始化网关服务gateway的Rust项目
- 初始化智能控制服务SmartClaw的Rust项目
- 初始化共享代码的Rust项目
- 创建各自的Cargo.toml配置文件
- 设置依赖项
- **Success Criteria**:
- 所有Rust项目初始化成功
- 各自的Cargo.toml配置正确
- 依赖项设置合理
- 编译产出目录结构正确
- **Test Requirements**:
- `programmatic` TR-2.1: 各项目的Cargo.toml文件存在且配置正确
- `programmatic` TR-2.2: 依赖项能正确安装
- `programmatic` TR-2.3: 项目能成功编译,生成编译产出
- **Notes**: 使用Cargo初始化Rust项目确保每个项目都有独立的编译产出目录
### [ ] Task 3: 开发网关服务
- **Priority**: P1
- **Depends On**: Task 2
- **Description**:
- 创建网关服务gateway的代码
- 实现HTTP接口
- 实现与智能控制服务SmartClaw的通信
- 实现企业微信和小程序的回调处理
- **Success Criteria**:
- 网关服务代码开发完成
- HTTP接口实现正确
- 与SmartClaw服务的通信功能正常
- 企业微信和小程序的回调处理正常
- **Test Requirements**:
- `programmatic` TR-3.1: 服务能正常启动
- `programmatic` TR-3.2: HTTP接口能正确响应
- `human-judgement` TR-3.3: 代码结构清晰、注释完善
- **Notes**: 使用Actix Web框架
### [ ] Task 4: 开发SmartClaw服务
- **Priority**: P1
- **Depends On**: Task 2
- **Description**:
- 创建SmartClaw服务的代码
- 实现与网关服务gateway的通信
- 实现智能控制核心逻辑
- 集成LMStudio API
- **Success Criteria**:
- SmartClaw服务代码开发完成
- 与网关服务的通信功能正常
- 智能控制核心逻辑实现正确
- LMStudio API集成成功
- **Test Requirements**:
- `programmatic` TR-4.1: 服务能正常启动
- `programmatic` TR-4.2: 与网关服务的通信正常
- `human-judgement` TR-4.3: 代码结构清晰、注释完善
- **Notes**: 使用Actix Web框架集成LMStudio API
### \[ ] Task 5: 开发微信应用
* **Priority**: P1
* **Depends On**: Task 3
* **Description**:
* 初始化微信应用项目
* 开发用户界面
* 实现与网关服务的通信
* 实现消息发送和任务下发功能
* **Success Criteria**:
* 微信应用项目初始化成功
* 用户界面开发完成
* 与网关服务的通信功能正常
* 消息发送和任务下发功能实现正确
* **Test Requirements**:
* `programmatic` TR-5.1: 微信应用能正常运行
* `programmatic` TR-5.2: 与网关服务的通信正常
* `human-judgement` TR-5.3: 界面美观、交互流畅
* **Notes**: 使用React和微信应用框架
### \[ ] Task 6: 配置企业微信应用
* **Priority**: P2
* **Depends On**: Task 3
* **Description**:
* 配置企业微信应用
* 设置回调地址
* 实现消息推送处理
* **Success Criteria**:
* 企业微信应用配置完成
* 回调地址设置正确
* 消息推送处理功能实现正确
* **Test Requirements**:
* `programmatic` TR-6.1: 企业微信回调能正确处理
* `human-judgement` TR-6.2: 配置过程顺利
* **Notes**: 参考企业微信开发文档
### [ ] Task 7: 编写构建和部署脚本
- **Priority**: P2
- **Depends On**: Task 3, Task 4, Task 5
- **Description**:
- 编写构建脚本,生成构建产物
- 编写网关服务的部署脚本,部署构建产物
- 编写SmartClaw服务的部署脚本部署构建产物
- 编写配置文件
- **Success Criteria**:
- 构建脚本编写完成,能生成构建产物
- 部署脚本编写完成
- 配置文件创建完成
- 部署过程顺利
- **Test Requirements**:
- `programmatic` TR-7.1: 构建脚本能正常执行,生成构建产物
- `programmatic` TR-7.2: 部署脚本能正常执行
- `human-judgement` TR-7.3: 部署过程文档清晰
- **Notes**: 考虑Windows Server 2012的环境确保构建产物能正确部署
### \[ ] Task 8: 编写项目文档
* **Priority**: P2
* **Depends On**: All
* **Description**:
* 编写项目说明文档
* 编写API文档
* 编写部署文档
* 编写使用文档
* **Success Criteria**:
* 项目文档编写完成
* API文档完整
* 部署文档清晰
* 使用文档详细
* **Test Requirements**:
* `human-judgement` TR-8.1: 文档内容完整、清晰
* `human-judgement` TR-8.2: 文档格式规范
* **Notes**: 使用Markdown格式
## 技术选型
### 后端
* **语言**: Rust 1.70+
* **框架**: Actix Web 4.0+
* **异步运行时**: Tokio 1.0+
* **序列化/反序列化**: Serde 1.0+
* **HTTP客户端**: Reqwest 0.11+
* **缓存和消息队列**: Redis 7.0+
* **数据存储**: PostgreSQL 14.0+
### 前端
* **框架**: React 18.0+
* **类型系统**: TypeScript 5.0+
* **构建工具**: Vite 4.0+
* **样式框架**: Tailwind CSS 3.0+
* **HTTP客户端**: Axios 1.0+
* **开发工具**: WeChat Developer Tools 最新版
## 实施步骤
1. **准备阶段**:
* 创建项目基础结构
* 初始化Git仓库
* 初始化Rust和前端项目
2. **后端开发**:
* 开发服务器A后端
* 开发服务器B后端
* 测试服务器间通信
3. **前端开发**:
* 开发微信小程序
* 配置企业微信应用
4. **部署与测试**:
* 编写部署脚本
* 部署到服务器
* 功能测试
* 性能测试
* 安全测试
5. **文档编写**:
* 编写项目文档
* 编写API文档
* 编写部署文档
* 编写使用文档
## 注意事项
1. **网络通信**:
* 服务器B在内网中需要使用反向代理和WebSocket实现与服务器A的通信
2. **安全考虑**:
* 所有通信使用HTTPS加密
* 服务器A配置防火墙只开放必要的端口
* 服务器B只允许来自服务器A的连接
* 实现认证与授权机制
3. **性能考虑**:
* 优化服务器间通信
* 合理使用LMStudio
* 实现异步处理,提供任务状态反馈
4. **兼容性**:
* 考虑Windows Server 2012的环境
* 确保代码在目标环境中能正常运行
## 结论
通过以上实施计划,可以构建一个完整的企业微信智控未来系统,实现用户通过企业微信和微信小程序与系统进行交互,完成任务的下发、处理和结果返回。

197
Claw/可行性方案.md Normal file
View File

@@ -0,0 +1,197 @@
# 企业微信智控未来系统可行性方案
## 1. 项目背景
用户拥有一个未经认证的企业微信,包含应用"智控未来",以及两台服务器:
- 服务器A局域网服务器有固定IP外网可以访问相当于"大门和快递员"
- 服务器B阿里云主机在内网中外网不能访问安装了LMStudio相当于"工厂和生产线"
目标是使用Rust和React实现以下功能用户通过企业微信应用"智控未来"和微信小程序进行聊天下发任务。任务经服务器A转到服务器BB上的自建龙虾处理后返回结果给用户。
## 2. 系统架构
### 2.1 整体架构
```mermaid
sequenceDiagram
participant User as 用户
participant WeChat as 企业微信/小程序
participant Gateway as 网关服务服务器A
participant SmartClaw as SmartClaw服务服务器B
participant LMStudio as LMStudio
User->>WeChat: 发送消息/任务
WeChat->>Gateway: 回调请求
Gateway->>SmartClaw: 转发任务
SmartClaw->>SmartClaw: 处理任务(智能控制核心逻辑)
SmartClaw->>LMStudio: 调用LMStudio
LMStudio-->>SmartClaw: 返回结果
SmartClaw-->>Gateway: 转发结果
Gateway-->>WeChat: 回调响应
WeChat-->>User: 显示结果
```
### 2.2 组件说明
| 组件 | 职责 | 技术栈 |
|------|------|--------|
| 企业微信应用 | 用户交互界面,接收用户消息和任务 | 企业微信开发框架 |
| 微信小程序 | 用户交互界面,接收用户消息和任务 | React + 微信小程序框架 |
| 网关服务服务器A | 接收企业微信和小程序的请求转发到SmartClaw服务返回结果 | Rust + Actix Web |
| SmartClaw服务服务器B | 接收网关服务的请求处理用户任务调用LMStudio返回结果 | Rust + Actix Web |
| 智能控制核心逻辑 | 核心业务逻辑处理用户任务调用LMStudio | Rust |
| LMStudio | 提供AI能力辅助处理任务 | 第三方工具 |
## 3. 技术选型
### 3.1 后端技术栈
| 技术 | 版本 | 用途 |
|------|------|------|
| Rust | 1.70+ | 后端开发语言 |
| Actix Web | 4.0+ | Web框架处理HTTP请求 |
| Tokio | 1.0+ | 异步运行时 |
| Serde | 1.0+ | 序列化/反序列化 |
| Reqwest | 0.11+ | HTTP客户端用于服务器间通信 |
| Redis | 7.0+ | 缓存和消息队列 |
| PostgreSQL | 14.0+ | 数据存储 |
### 3.2 前端技术栈
| 技术 | 版本 | 用途 |
|------|------|------|
| React | 18.0+ | 前端开发框架 |
| TypeScript | 5.0+ | 类型系统 |
| Vite | 4.0+ | 构建工具 |
| Tailwind CSS | 3.0+ | 样式框架 |
| Axios | 1.0+ | HTTP客户端 |
| WeChat Developer Tools | 最新版 | 微信小程序开发工具 |
## 4. 网络通信方案
### 4.1 企业微信/小程序与网关服务通信
- **企业微信**使用企业微信回调机制网关服务提供HTTPS接口接收企业微信的消息推送
- **微信小程序**使用HTTPS接口与网关服务通信实现消息发送和任务下发
### 4.2 网关服务与SmartClaw服务通信
由于SmartClaw服务在内网中外网不能访问它因此采用以下方案
1. **反向代理**SmartClaw服务主动连接网关服务建立长连接
2. **WebSocket**使用WebSocket实现网关服务和SmartClaw服务之间的双向通信
3. **消息队列**使用Redis作为消息队列存储待处理的任务
### 4.3 SmartClaw服务与LMStudio通信
- 使用LMStudio提供的API接口进行通信
- 可能需要根据LMStudio的具体API进行适配
## 5. 安全考虑
### 5.1 网络安全
- 所有通信使用HTTPS加密
- 服务器A配置防火墙只开放必要的端口
- 服务器B只允许来自服务器A的连接
### 5.2 认证与授权
- 企业微信应用使用CorpID和Secret进行认证
- 微信小程序使用AppID和AppSecret进行认证
- 服务器间通信使用API密钥进行认证
### 5.3 数据安全
- 敏感数据加密存储
- 定期备份数据
- 实现访问控制,确保只有授权用户能访问相关功能
## 6. 部署方案
### 6.1 网关服务服务器A部署
1. 安装Windows Server 2012系统
2. 安装Rust环境和必要的依赖
3. 部署网关服务配置HTTPS
4. 配置企业微信和小程序的回调地址
5. 启动服务并设置为自启动
### 6.2 SmartClaw服务服务器B部署
1. 安装Windows Server 2012系统
2. 安装LMStudio
3. 安装Rust环境和必要的依赖
4. 部署SmartClaw服务
5. 配置与网关服务的通信
6. 启动服务并设置为自启动
## 7. 开发计划
### 7.1 阶段一:基础设施搭建
- 配置服务器环境
- 安装必要的软件和依赖
- 搭建开发环境
### 7.2 阶段二:后端开发
- 开发网关服务服务器A的Web服务
- 开发SmartClaw服务服务器B的Web服务
- 实现网关服务与SmartClaw服务之间的通信
- 开发智能控制核心逻辑
- 集成LMStudio API
### 7.3 阶段三:前端开发
- 开发微信小程序
- 配置企业微信应用
### 7.4 阶段四:测试与部署
- 功能测试
- 性能测试
- 安全测试
- 部署到生产环境
### 7.5 阶段五:运维与监控
- 配置监控系统
- 制定运维计划
- 建立故障处理流程
## 8. 可行性分析
### 8.1 技术可行性
- Rust语言性能优异适合高并发场景
- React生态成熟适合开发前端应用
- 企业微信和微信小程序都提供了完善的开发文档和API
- LMStudio提供了API接口可以与自建系统集成
### 8.2 网络可行性
- 服务器A有固定IP外网可以访问适合作为入口
- 服务器B可以访问外网可以主动连接服务器A
- 使用WebSocket可以实现服务器间的实时通信
### 8.3 成本可行性
- 主要成本是服务器硬件和网络费用
- 软件方面Rust和React都是开源的没有 licensing 费用
- LMStudio可能需要相应的硬件资源但可以根据实际需求进行配置
### 8.4 风险评估
| 风险 | 影响 | 应对措施 |
|------|------|----------|
| 企业微信未经认证 | 可能限制部分功能 | 尽量使用企业微信开放的基础功能,避免需要认证的高级功能 |
| SmartClaw服务在内网 | 外网无法直接访问 | 使用反向代理和WebSocket实现服务器间通信 |
| LMStudio性能 | 可能影响处理速度 | 优化智能控制核心逻辑合理使用LMStudio |
| 网络延迟 | 可能影响用户体验 | 实现异步处理,提供任务状态反馈 |
## 9. 结论
基于以上分析,本项目在技术、网络和成本方面都是可行的。通过合理的架构设计和技术选型,可以实现用户通过企业微信和微信小程序与系统进行交互,完成任务的下发、处理和结果返回。
建议按照开发计划分阶段实施,确保系统的稳定性和可靠性。同时,要注意安全防护,保护用户数据和系统资源。