Commit Graph
4 Commits
Author SHA1 Message Date
Gundy 9452351edb fix(sse): 每个 SSE 连接独立订阅者队列, 修复多客户端告警丢失
此前行情/告警/五档/复盘四通道共用服务级 Event + pending 列表,
pop 是「取走」语义: 开多个标签页或设备时, 告警只会被先醒来的那条
连接消费, 其余连接永远收不到; 共享 Event 的 clear/wait 也存在互相
吞信号的竞态。

- 新增 QuoteSubscriber: 每连接独立 Event + 队列, 生产侧广播
- /api/intraday/stream 改为 subscribe → wait/pop → finally
  unsubscribe, 单事件等待替代原先每轮 4 个 to_thread 任务
  (被 cancel 的 to_thread 线程实际仍在跑, 多客户端会耗尽线程池)
- 背压上限不变 (告警 1000 / 复盘 200, 每订阅者独立)
2026-07-03 14:11:26 +08:00
shy3130 68841af662 feat: 定时复盘飞书推送 + SSE 实时进度
- 定时复盘支持推送到飞书(卡片消息, 完整报告), 渠道多选(飞书可选, 微信开发中)
- 推送开关独立常驻, 与定时/实时行情解耦; 手动/定时生成都可推送
- 定时复盘改流式生成, 通过 SSE(review_progress)实时推给前端, 开着页面可见边生成边显示
- 修复定时任务协程未 await 的 bug(lambda 包裹 async → 改传函数对象 + args)
- LLM 断流自动重试(最多2次), 后端归档 + 飞书推送, 异常兜底通知前端
- 复盘定时下限改为 15:00, 默认 15:10
- 版本号 0.1.66 → 0.1.67
2026-06-30 17:28:18 +08:00
shy3130 3bedd3e209 fix(limit-ladder): 五档修正后实时刷新连板梯队封单 + 组内按封单排序
问题: 开启「修正」后后台 depth 轮询持续更新封单缓存, 但页面封单/个数不实时
变化。根因是 depth 轮询 (depth_service._poll_loop) 与行情 SSE 刷新是两条
断开链路 — depth 修正后不广播任何事件, 前端刷新完全依赖 quotes_updated
(仅行情轮询发送), 封单数据延迟或读旧值。

修复: 新增独立的 depth_updated SSE 通道。depth 轮询每次 _fetch_and_seal
成功后经 quote_service.notify_depth_updated 触发信号, intraday SSE
event_generator 并行等待三类信号 (行情/告警/修正), 推送 depth_updated;
前端 useQuoteStream 监听后 invalidate limit-ladder + overview-market。
该通道不受实时行情开关限制 (修正轮询独立于行情轮询)。

另: 连板梯队组内排序增强 — 涨停/跌停状态股票按封单从高到低排
(vol/amount 跟随 sealMode), 封单为 null 排末尾, 其他状态不动。
2026-06-23 14:00:29 +08:00
shy3130 7369358d08 Initial release v0.1.19 2026-06-18 17:18:23 +08:00