问题
自动化规则的日历探测没有时间下界:
return events.some(
(event) => (event.type === 'report' || event.type === 'financial') && event.date <= nowSeconds
)
research.events 返回的是"最近 5 条"事件,任何一条历史上的财报事件(只要还没跌出 top 5)都会让 earningsAnnounced 每天为 true → signalsAreMaterial 恒真 → 每天对同一符号重复触发 research 分析 + OS 通知,直到该事件自然跌出最近 5 条。一条 30 天前的旧财报可以造成连续数周的每日重复打扰。
当前现状
代码审查基线:039c7388f855ab85f9882300c16b1898fe5955bb。
packages/shared/src/automation/runner.ts:189-205:calendarProbe 只判断 event.date <= nowSeconds,没有"最近 N 天"下界;
- 该函数被
watchlist-daily-review / portfolio-daily-brief 等每日规则的 evaluateSymbol 调用。
期待的解决方向
- 给日历探测加新鲜度下界:只有落在最近 N 天(建议 7 天,注释说明语义)内的已发生财报事件才算"新公布的财报";
- 补充测试:30 天前的历史财报事件不再触发;1 天前的财报事件仍触发;
date == now 的边界(现有测试场景)保持通过。
验证标准
问题
自动化规则的日历探测没有时间下界:
research.events返回的是"最近 5 条"事件,任何一条历史上的财报事件(只要还没跌出 top 5)都会让earningsAnnounced每天为true→signalsAreMaterial恒真 → 每天对同一符号重复触发 research 分析 + OS 通知,直到该事件自然跌出最近 5 条。一条 30 天前的旧财报可以造成连续数周的每日重复打扰。当前现状
代码审查基线:
039c7388f855ab85f9882300c16b1898fe5955bb。packages/shared/src/automation/runner.ts:189-205:calendarProbe只判断event.date <= nowSeconds,没有"最近 N 天"下界;watchlist-daily-review/portfolio-daily-brief等每日规则的evaluateSymbol调用。期待的解决方向
date == now的边界(现有测试场景)保持通过。验证标准
earningsAnnounced为真,重复通知消失;