Files
makemd/docs/ARCHIVE/01_Architecture/02_System_Interoperability.md
wurenzhi 2b86715c09 refactor: 优化代码结构并修复类型问题
- 移除未使用的TabPane组件
- 修复类型定义和导入方式
- 优化mock数据源的环境变量判断逻辑
- 更新文档结构并归档旧文件
- 添加新的UI组件和Memo组件
- 调整API路径和响应处理
2026-03-23 12:41:35 +08:00

557 lines
19 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统互通架构System Interoperability Architecture
> 本文档定义 Crawlful Hub 系统各组件之间的互通机制和通信规范。
## 1. 互通架构总览
### 1.1 核心互通模型
```
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 前端控制台 │────▶│ 后端服务 │────▶│ 运营代理Agent
│ (Frontend Console) │◀────│ (Backend Service) │◀────│ (Operation Agent) │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
┌─────────────────────┐
│ 平台适配器 │
│ (Platform Adapter) │
└─────────────────────┘
┌─────────────────────┐
│ 第三方平台 │
│ (External Platform) │
└─────────────────────┘
```
### 1.2 互通层次
| 互通层次 | 通信协议 | 说明 |
|---------|---------|------|
| 前端与后端互通 | RESTful API、WebSocket | 前端控制台与后端服务的通信 |
| 后端与Agent互通 | WebSocket、消息队列MQ | 后端服务与运营代理的通信 |
| Agent与平台互通 | 平台API、浏览器自动化 | 运营代理与第三方平台的通信 |
## 2. 前端与后端互通
### 2.1 API通信
| 项目 | 规范 |
|------|------|
| **基础API** | RESTful风格支持CRUD操作 |
| **认证机制** | JWT TokenJSON Web Token支持Bearer认证 |
| **请求格式** | JSON格式统一错误处理 |
| **响应格式** | 统一响应体结构 |
**标准响应格式**
```json
{
"code": 200,
"message": "success",
"data": { /* */ },
"timestamp": "2026-03-21T10:30:00Z"
}
```
### 2.2 WebSocket通信
| 功能 | 说明 |
|------|------|
| **实时数据推送** | 店铺状态、任务进度、操作结果实时同步 |
| **事件通知** | 操作完成、异常告警、系统通知 |
| **心跳保活** | 保持连接活跃,支持断线重连机制 |
**WebSocket消息格式**
```json
{
"type": "event|data|heartbeat",
"event": "task_completed|error|notification",
"payload": { /* */ },
"timestamp": "2026-03-21T10:30:00Z"
}
```
### 2.3 前端API调用示例
```typescript
// 绑定店铺
const bindStore = async (storeData) => {
const response = await fetch('/api/operation-agent/stores', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(storeData)
});
return response.json();
};
// 同步商品
const syncProducts = async (storeId) => {
const response = await fetch(`/api/operation-agent/stores/${storeId}/products/sync`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`
}
});
return response.json();
};
```
## 3. 后端与运营代理Agent互通
### 3.1 WebSocket通信
| 特性 | 说明 |
|------|------|
| **双向通信** | 后端下发任务Agent回传执行结果 |
| **加密传输** | TLS/SSL加密确保通信安全 |
| **认证机制** | Agent注册时进行身份验证Token-based |
| **消息格式** | 统一JSON消息格式 |
**任务下发消息格式**
```json
{
"type": "task",
"taskId": "task-123",
"action": "syncProducts",
"params": {
"storeId": "store-123",
"limit": 100
},
"priority": "high|normal|low",
"timeout": 300000
}
```
### 3.2 消息队列Message Queue
| 特性 | 说明 | 技术选型 |
|------|------|---------|
| **任务分发** | 异步任务分发,解耦前后端 | RabbitMQ / Redis / BullMQ |
| **任务优先级** | 支持高、中、低优先级任务 | Priority Queue |
| **任务持久化** | 确保任务不丢失,支持故障恢复 | Persistent Storage |
| **失败重试** | 自动重试机制支持指数退避Exponential Backoff | Retry Policy |
### 3.3 状态同步
| 机制 | 说明 | 频率 |
|------|------|------|
| **心跳保活** | Agent定期发送心跳报告运行状态 | 每30秒 |
| **状态回传** | 任务执行状态实时回传到后端 | 实时 |
| **健康检查** | 后端定期检查Agent健康状态 | 每60秒 |
### 3.4 后端API调用示例
```typescript
// 向Agent下发任务
const sendTaskToAgent = async (agentId, task) => {
const ws = getAgentWebSocket(agentId);
if (ws && ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify({
type: 'task',
taskId: generateTaskId(),
action: task.action,
params: task.params
}));
} else {
// 发送到消息队列
await messageQueue.send('agent-tasks', {
agentId,
task
});
}
};
// 处理Agent回传
const handleAgentResponse = (message) => {
const data = JSON.parse(message);
switch (data.type) {
case 'task_result':
handleTaskResult(data.taskId, data.result);
break;
case 'heartbeat':
updateAgentStatus(data.agentId, data.status);
break;
case 'error':
handleAgentError(data.agentId, data.error);
break;
}
};
```
## 4. 运营代理与第三方平台互通
### 4.1 平台API调用
| 项目 | 说明 |
|------|------|
| **认证机制** | OAuth 2.0、API密钥API Key、签名认证等 |
| **请求格式** | 符合各平台API规范RESTful/GraphQL |
| **响应处理** | 统一解析和错误处理,标准化输出 |
| **速率限制** | 遵守平台API Rate Limit实现限流保护 |
### 4.2 浏览器自动化Browser Automation
| 技术 | 说明 |
|------|------|
| **无界面浏览器** | Puppeteer / Playwright / Selenium |
| **操作模拟** | 点击、输入、滚动、表单提交等用户行为模拟 |
| **数据提取** | DOM解析、XPath/CSS选择器、数据抓取 |
| **异常处理** | 页面变化检测、验证码识别、反爬策略应对 |
### 4.3 适配器模式Adapter Pattern
| 组件 | 说明 |
|------|------|
| **统一接口** | `IPlatformAdapter` 接口定义标准操作 |
| **平台实现** | 每个平台独立实现适配器Platform-specific Adapter |
| **数据标准化** | 统一数据模型,标准化输出格式 |
| **错误处理** | 平台特定错误捕获、转换、上报 |
### 4.4 Agent平台调用示例
```typescript
// 使用平台适配器同步商品
async function syncProducts(storeId, platform) {
const adapter = platformAdapterFactory.createAdapter(platform);
try {
// 授权
await adapter.authorize(getAuthInfo(storeId));
// 获取商品列表
const products = await adapter.getProducts(100, 0);
// 处理商品数据
const processedProducts = processProducts(products);
// 回传数据
await sendToBackend({
type: 'products_synced',
storeId,
products: processedProducts
});
} catch (error) {
// 处理错误
await sendToBackend({
type: 'error',
storeId,
error: error.message
});
}
}
```
## 5. 远程人工交互互通
### 5.1 实时屏幕传输Real-time Screen Streaming
| 技术 | 说明 |
|------|------|
| **屏幕捕获** | 使用 Puppeteer / Playwright 捕获浏览器屏幕 |
| **编码压缩** | JPEG / WEBP / H.264 编码,降低传输带宽 |
| **实时传输** | WebSocket / WebRTC 实时传输屏幕数据 |
| **前端渲染** | Canvas / Video 元素渲染远程屏幕 |
### 5.2 操作指令传输Remote Control
| 环节 | 说明 |
|------|------|
| **操作捕获** | 前端捕获用户点击、输入、滚动等操作 |
| **坐标映射** | 将前端坐标转换为远程浏览器坐标Resolution Mapping |
| **指令传输** | WebSocket 传输操作指令到 Agent |
| **指令执行** | Agent 在远程浏览器执行操作指令 |
### 5.3 会话管理Session Management
| 功能 | 说明 |
|------|------|
| **会话创建** | 后端创建远程交互会话,分配资源 |
| **权限验证** | 验证用户权限,确保操作安全 |
| **状态跟踪** | 会话状态机:初始化 → 活跃 → 空闲 → 结束 |
| **资源清理** | 会话结束时清理资源,保存操作日志 |
### 5.4 远程交互示例
```typescript
// 前端捕获点击操作
const handleCanvasClick = (e) => {
const rect = canvas.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
// 发送点击指令
ws.send(JSON.stringify({
type: 'user_action',
action: {
type: 'click',
x,
y
}
}));
};
// Agent执行操作指令
const handleUserAction = async (page, action) => {
switch (action.type) {
case 'click':
await page.mouse.click(action.x, action.y);
break;
case 'type':
await page.keyboard.type(action.text);
break;
case 'keypress':
await page.keyboard.press(action.key);
break;
}
};
```
## 6. 多Agent互通
### 6.1 Agent管理服务Agent Management Service
| 功能 | 说明 |
|------|------|
| **Agent注册** | Agent启动时向管理服务注册上报元数据 |
| **资源分配** | 根据店铺需求、任务类型分配Agent资源 |
| **负载均衡** | 基于负载的任务分发Load Balancing |
| **健康监控** | 实时监控Agent健康状态、性能指标 |
### 6.2 Agent间通信Inter-Agent Communication
| 场景 | 说明 |
|------|------|
| **任务协调** | 避免多Agent操作同一店铺产生冲突 |
| **资源共享** | 共享配置、状态信息、缓存数据 |
| **故障转移** | Agent故障时自动转移任务Failover |
### 6.3 多VPS部署Multi-VPS Deployment
| 功能 | 说明 |
|------|------|
| **VPS管理** | 管理多VPS资源池动态分配 |
| **IP隔离** | 同平台店铺使用不同IP避免关联 |
| **网络配置** | 配置VPS网络、防火墙、代理 |
| **自动化部署** | CI/CD自动化部署和配置Agent |
### 6.4 Agent管理示例
```typescript
// 分配任务到合适的Agent
function assignTask(task) {
const store = getStoreById(task.storeId);
if (store.requiresIpIsolation) {
// 需要IP隔离的店铺使用专用Agent
return findDedicatedAgent(store);
} else {
// 不需要IP隔离的店铺使用负载最低的Agent
return findLeastLoadedAgent(store.platform);
}
}
// 监控Agent健康状态
function monitorAgents() {
setInterval(async () => {
const agents = await getAllAgents();
for (const agent of agents) {
if (!agent.heartbeatReceived) {
// Agent可能离线触发故障转移
await failoverAgent(agent.id);
}
}
}, 30000); // 每30秒检查一次
}
```
## 7. 安全互通
### 7.1 认证与授权Authentication & Authorization
| 层级 | 机制 | 说明 |
|------|------|------|
| **API认证** | JWT Token + Refresh Token | 定期轮换,支持无感知续期 |
| **Agent认证** | API Key + HMAC签名 | 基于密钥的双向认证 |
| **权限控制** | RBAC基于角色的访问控制 | 角色-权限-资源三级管控 |
| **操作审计** | Audit Log | 全链路操作记录,支持追溯 |
### 7.2 数据安全Data Security
| 措施 | 说明 |
|------|------|
| **传输加密** | TLS 1.3 / SSL端到端加密 |
| **存储加密** | AES-256-GCM 加密敏感数据 |
| **凭证管理** | 使用密钥管理服务KMS禁止明文存储 |
| **数据脱敏** | API返回数据按需脱敏PII保护 |
| **访问控制** | 细粒度权限控制,最小权限原则 |
### 7.3 网络安全Network Security
| 措施 | 说明 |
|------|------|
| **TLS加密** | 所有通信强制使用TLS 1.3 |
| **防火墙** | VPS防火墙 + 云防火墙双层防护 |
| **速率限制** | API限流Rate Limiting防止滥用 |
| **DDoS防护** | 云厂商DDoS防护 + 应用层限流 |
| **IP白名单** | 关键接口限制访问IP范围 |
### 7.4 安全最佳实践
| 实践 | 说明 |
|------|------|
| **最小权限原则** | Agent仅获取执行任务所需的最小权限 |
| **安全审计** | 定期安全审计,检查配置和代码 |
| **漏洞扫描** | 自动化漏洞扫描SAST/DAST |
| **依赖管理** | 及时更新依赖,修复安全漏洞 |
| **密钥轮换** | 定期轮换API密钥和证书 |
## 8. 性能优化
### 8.1 通信优化
| 优化手段 | 说明 |
|---------|------|
| **消息压缩** | Gzip / Brotli 压缩传输数据,减少带宽使用 |
| **批量处理** | 批量发送和处理数据减少请求次数Batch Processing |
| **缓存策略** | Redis 缓存常用数据,减少重复请求 |
| **异步处理** | 非关键操作异步处理提高响应速度Async/Await |
| **长连接** | WebSocket 长连接,减少连接建立开销 |
### 8.2 资源优化
| 资源类型 | 优化措施 |
|---------|---------|
| **连接池** | 数据库连接池、HTTP连接池复用连接 |
| **内存管理** | 优化内存使用避免内存泄漏定期GC |
| **CPU优化** | 减少CPU密集型操作使用Worker线程 |
| **磁盘I/O** | 减少磁盘I/O使用内存缓存和SSD |
| **网络I/O** | 合并请求使用HTTP/2或HTTP/3 |
### 8.3 监控与调优
| 环节 | 说明 |
|------|------|
| **性能监控** | APM工具如Prometheus + Grafana实时监控系统性能指标 |
| **瓶颈分析** | 识别性能瓶颈CPU/内存/网络/磁盘),进行针对性优化 |
| **负载测试** | 使用JMeter/k6模拟高负载场景测试系统性能 |
| **自动调优** | 根据负载自动调整系统参数Auto-scaling |
## 9. 容错与灾备Fault Tolerance & Disaster Recovery
### 9.1 错误处理Error Handling
| 机制 | 说明 |
|------|------|
| **异常捕获** | 全局异常捕获统一错误处理Try-Catch + Global Handler |
| **错误重试** | 自动重试失败操作支持指数退避Exponential Backoff |
| **降级策略** | 服务降级Degradation保障核心功能可用 |
| **错误通知** | 实时告警通知(钉钉/飞书/邮件),及时响应 |
### 9.2 故障恢复Fault Recovery
| 措施 | 说明 |
|------|------|
| **数据备份** | 定期全量+增量备份,异地多副本存储 |
| **灾难恢复** | 制定DR计划RPO<1小时RTO<4小时 |
| **高可用性** | 多Agent部署无单点故障HA Architecture |
| **自动恢复** | Agent故障自动重启任务自动重分配 |
### 9.3 容灾方案Disaster Recovery
| 方案 | 说明 |
|------|------|
| **多区域部署** | 多可用区AZ部署避免单点故障 |
| **数据同步** | 跨区域数据实时同步,确保数据一致性 |
| **故障转移** | 自动故障转移Automatic Failover |
| **业务连续性** | 确保业务持续运行Business Continuity |
## 10. 总结
系统互通是 Crawlful Hub 的核心设计之一通过标准化的通信机制和接口实现了前端控制台、后端服务、运营代理Agent和第三方平台之间的无缝互通。这种设计不仅提高了系统的可扩展性和可维护性也为 100% AI 开发测试落地提供了坚实的技术基础。
在实际部署中,需要根据具体的业务需求和技术环境,选择合适的互通方案,并不断优化和改进,以适应不断变化的业务需求和技术发展。
---
## 11. 互通规范
### 11.1 接口命名规范
| 项目 | 规范 |
|------|------|
| **API路径** | RESTful风格小写字母单词间用连字符kebab-case<br>示例:`/api/v1/product-management/products` |
| **方法命名** | 驼峰命名法camelCase动词+名词格式<br>示例:`getProductList``createOrder` |
| **参数命名** | 驼峰命名法camelCase清晰表达参数含义<br>示例:`pageSize``sortBy` |
### 11.2 消息格式规范
| 项目 | 规范 |
|------|------|
| **数据格式** | 所有通信使用 JSON 格式application/json |
| **消息结构** | 统一包含 `type``data``timestamp``traceId` 等字段 |
| **错误处理** | 统一错误码和错误消息格式支持国际化i18n |
**标准消息格式示例**
```json
{
"type": "event|data|error|heartbeat",
"event": "task_completed|error|notification",
"data": { /* */ },
"timestamp": "2026-03-21T10:30:00Z",
"traceId": "trace-123456",
"code": 200,
"message": "success"
}
```
### 11.3 安全规范
- **认证**所有API调用必须进行身份认证
- **授权**:基于角色的访问控制
- **加密**:所有传输数据必须加密
- **审计**:所有操作必须记录审计日志
### 11.4 性能规范
- **响应时间**API响应时间不超过500ms
- **并发处理**:支持高并发请求
- **缓存策略**:合理使用缓存减少响应时间
- **批量处理**:支持批量操作减少请求次数
## 12. 互通示例
### 12.1 完整业务流程示例
#### 商品采集流程
1. **前端**:用户选择平台,设置采集参数
2. **后端**`ProductController`接收请求,调用`ProductService`
3. **后端**`ProductService`生成采集任务,发送到消息队列
4. **Agent**接收任务调用对应平台Adapter执行采集
5. **Agent**:回传采集结果到后端
6. **后端**`ProductService`处理采集结果,存储到数据库
7. **后端**通过WebSocket推送采集结果到前端
8. **前端**:展示采集结果,提供后续操作入口
#### 自动上架流程
1. **前端**:用户设置上架参数,触发自动上架
2. **后端**`AutoListingController`接收请求,调用`AutoListingService`
3. **后端**`AutoListingService`生成上架任务,发送到消息队列
4. **Agent**接收任务调用平台Adapter执行上架
5. **Agent**:回传上架结果和截图到后端
6. **后端**`AutoListingService`更新任务状态,存储上架结果
7. **后端**通过WebSocket推送上架结果到前端
8. **前端**:展示上架状态,提供效果分析
## 13. 未来扩展
### 13.1 微服务架构
- **服务拆分**:将核心服务拆分为独立的微服务
- **服务发现**:使用服务发现机制管理服务实例
- **负载均衡**:自动负载均衡提高系统可用性
- **容错机制**:服务降级和熔断保护
### 13.2 事件驱动架构
- **事件总线**:使用消息队列实现事件驱动
- **事件溯源**:通过事件记录系统状态变更
- **CQRS**:命令查询责任分离,提高系统性能
### 13.3 边缘计算
- **边缘Agent**在边缘节点部署Agent减少延迟
- **本地处理**:部分计算在本地完成,减少网络传输
- **智能调度**:根据网络状况和负载自动调度任务