Files
xiaoxia-saas/apps/worker/worker_app/tasks
xiaoxia 35c41c3151 feat(api+worker): 爆款视频 WebSocket 实时进度推送端点
- API: 新增 /api/v1/viral-video/ws/{job_id}?token=<jwt> WebSocket 端点
  - JWT 认证通过 ?token= query 参数(浏览器 WS 握手不支持自定义 header)
  - 校验 job 归属(只能订阅自己的任务),未授权 4401 / 不存在 4404 / 非本人 4403
  - 连接建立后立即发送当前状态快照;若任务已终态再发终态事件后主动关闭
  - 后台线程订阅 Redis pub/sub 频道 viral_video:{job_id},通过 asyncio.Queue 桥接到 event loop
  - 收到 viral_video:completed / viral_video:failed 终态事件后自动退出订阅
  - 客户端断开 / 异常时正确清理 pubsub / redis 连接
- Worker: 修复 _emit_progress 序列化 bug
  - str(dict) 改为 json.dumps(event, ensure_ascii=False),保证前端 JSON.parse 可解析
  - 新增 event_type 参数,新增 viral_video:wait_user / viral_video:completed / viral_video:failed 终态事件
  - 在主编排器和 resume 编排器异常分支补充 failed 事件推送
- 事件格式与前端 WSProgressEvent 对齐:{type, job_id, stage, progress, message, data}
- 新增 8 个单元测试覆盖 JSON 序列化 / helper 函数 / 4401/4403/4404
2026-09-30 10:02:49 +08:00
..