390 lines
12 KiB
Markdown
390 lines
12 KiB
Markdown
|
|
# Claw项目 - 工程项目结构实施计划
|
|||
|
|
|
|||
|
|
## 项目背景
|
|||
|
|
|
|||
|
|
Claw项目是一个企业微信智控未来系统,包含两台服务器:
|
|||
|
|
|
|||
|
|
* 服务器A:局域网服务器,有固定IP,外网可以访问
|
|||
|
|
|
|||
|
|
* 服务器B:阿里云主机,在内网中,外网不能访问,安装了LMStudio
|
|||
|
|
|
|||
|
|
目标是使用Rust和React实现以下功能:用户通过企业微信应用"智控未来"和微信小程序进行聊天,下发任务。任务经服务器A转到服务器B,B上的自建龙虾处理后返回结果给用户。
|
|||
|
|
|
|||
|
|
## 项目结构设计
|
|||
|
|
|
|||
|
|
### 整体结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
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的环境
|
|||
|
|
|
|||
|
|
* 确保代码在目标环境中能正常运行
|
|||
|
|
|
|||
|
|
## 结论
|
|||
|
|
|
|||
|
|
通过以上实施计划,可以构建一个完整的企业微信智控未来系统,实现用户通过企业微信和微信小程序与系统进行交互,完成任务的下发、处理和结果返回。
|