33 lines
904 B
Markdown
33 lines
904 B
Markdown
|
|
# 请求去重 + 实时推送
|
|||
|
|
|
|||
|
|
两项关键的工程优化
|
|||
|
|
|
|||
|
|
<Item title="🔍 请求去重(Request Dedup)">
|
|||
|
|
|
|||
|
|
- **策略**:`hash(prompt + assetType + params)` 生成唯一键
|
|||
|
|
- **存储**:`sync.Map` 内存缓存,TTL 自动过期
|
|||
|
|
- **逻辑**:相同参数的并发请求自动合并,返回已有 `taskId`
|
|||
|
|
- **效果**:避免重复生成,节省 API 调用成本,提升用户体验
|
|||
|
|
|
|||
|
|
</Item>
|
|||
|
|
|
|||
|
|
<Item title="📡 WebSocket 实时推送">
|
|||
|
|
|
|||
|
|
- 用户建立 `ws://host/api/v1/tasks/:taskId/ws` 连接
|
|||
|
|
- 管线各阶段执行时推送实时状态消息:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"type": "progress",
|
|||
|
|
"stage": "asset_generator",
|
|||
|
|
"progress": 45,
|
|||
|
|
"message": "正在生成素材..."
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- 质检重试时推送额外信息:重试次数、重试原因
|
|||
|
|
- 管线完成时推送最终结果:素材 URL、元数据
|
|||
|
|
- **兼容方案**:同时支持 HTTP 轮询(`GET /api/v1/tasks/:taskId`)
|
|||
|
|
|
|||
|
|
</Item>
|