问题域/PD-258

SSE实时进度推送

SSE Real-time Progress

通过Server-Sent Events实现长时间任务的实时进度推送和前端可视化

子问题

1.SSE连接管理

2.步骤级进度追踪

3.前端进度可视化

4.断线重连

5.多阶段加权进度计算

6.章节级并行写作流式预览

7.搜索骨架屏到结果卡片的原地替换

8.智能自动滚动与手动暂停检测

各项目的解法1 solutions

Signals

横向对比

维度vibe-blog
传输协议Flask SSE + stream_with_context,单向推送
事件类型化12 种命名事件(connected/progress/log/stream/outline_ready/writing_chunk/result/complete/error/cancelled/heartbeat),前端按类型精确分发
队列架构TaskManager 单例 + 每任务独立 threading.Queue,内存级
心跳保活10 秒间隔 heartbeat 事件 + X-Accel-Buffering: no 禁用 Nginx 缓冲
进度粒度阶段加权百分比(analyze 10% / outline 20% / content 30%)+ 章节级流式预览
前端封装Vue 3 Composable(useTaskStream)封装 EventSource 生命周期 + 100ms 节流预览
断线处理5 分钟延迟清理 Queue + EventSource 原生自动重连 + 事件唯一 ID
交互能力outline_ready 事件实现 HITL 暂停确认,cancel 端点支持用户主动中断

最佳实践

1.Flask SSE配合TaskService管理事件流

2.前端用composables封装SSE连接生命周期

3.每事件携带 uuid ID 支持 Last-Event-ID 断线续传

4.X-Accel-Buffering: no 头禁用反向代理缓冲

5.send_error 区分 recoverable 控制 SSE 连接是否终止

6.sectionContentMap + sectionOrder 双结构支持乱序章节到达