fix: intraday_health_check + system_audit信号堆积监控盲区 — 增加全量未处理查询(非仅xiaoguo)
This commit is contained in:
@@ -22,6 +22,11 @@ xiaoguo_signal_consumer 仅处理今日信号(`date(created_at)=today`),
|
||||
- 盘中健康检查不会再因过期信号误报堆积
|
||||
- 信号管道只监控时效内的处理速度
|
||||
|
||||
### [2026-07-09 跟进] 监控盲区修复
|
||||
- **发现**: intraday_health_check 和 system_audit 仅监控 source LIKE 'xiaoguo%',完全忽略 divergence_watch(80条)、trend(46条) 等来源信号积压
|
||||
- **修复**: 两端都增加全量未处理查询(total_unproc),区分 xiaoguo 和其他来源分别报告
|
||||
- **遗留**: divergence_watch/trend 信号无 consumer,属于数据归档而非管道积压,继续积累但健康检查能看见了
|
||||
|
||||
## 2026-07-03 — 代码重构
|
||||
|
||||
### 删除重复文件
|
||||
|
||||
@@ -1,9 +1,20 @@
|
||||
# analyst-knowledge-log.md
|
||||
|
||||
## [2026-07-08 10:40] 自愈执行器升级处理:KOSDAQ-4.1% HIGH信号
|
||||
## [2026-07-09 10:40] 自愈执行器升级处理:KOSDAQ-4.1% HIGH信号
|
||||
|
||||
- **发现**: 自愈执行器上报盘中自检发现宏观风险HIGH(KOSDAQ-4.1% + 中信证券研报)
|
||||
- **判断**: 系统无故障,已知市场条件延续。KOSDAQ-4.1%是昨日KOSPI暴跌的延续,非新事件。中信证券研报是采集器误报(正常行业研报)。
|
||||
- **数据验证**: 中国各指数全面脱钩改善(上证-1.26%→+0.02%,恒生-0.51%→+1.69%,科创50+0.28%→+0.62%)。持仓止损距均>3%。
|
||||
- **操作**: 标记已知状态,无需新推送。08:30 LLM深度分析已覆盖并修正。
|
||||
- **涉及文件**: macro_risk_state.json(已由consumer更新为processed)
|
||||
|
||||
## [2026-07-09 14:xx] 自愈执行器升级:信号堆积38条
|
||||
|
||||
- **发现**: 盘中自检触发「信号堆积: 38条未处理(需<30)」告警,自愈执行器无自动修复方案,升级到LLM处理
|
||||
- **调查**: 38条为 xiaoguo 来源信号,属4h时效内积压。当前已完成消费(xiaoguo_signal_consumer每30分运行),积压自愈
|
||||
- **监控盲区发现**: intraday_health_check.py 和 system_audit.py 均只监控 `source LIKE 'xiaoguo%'`,忽略 divergence_watch(80)、trend(46) 等来源的126条未处理信号
|
||||
- **修复**: 两处均增加全量未处理查询,区分 xiaoguo 和其他来源分别报告
|
||||
- **涉及文件**:
|
||||
- `scripts/intraday_health_check.py` — check_signal_pipeline: 增加 total_unproc 查询和非xiaoguo预警
|
||||
- `scripts/system_audit.py` — audit_signals: 增加 total_unproc 查询和MEDIUM级别溢出预警
|
||||
- `CHANGELOG.md` — 追记监控盲区修复
|
||||
|
||||
@@ -165,15 +165,23 @@ def check_gateways():
|
||||
def check_signal_pipeline():
|
||||
"""信号从xiaoguo_scanner→signal_news→consumer是否通畅"""
|
||||
unproc = 0
|
||||
total_unproc = 0
|
||||
try:
|
||||
conn = sqlite3.connect(str(DB_PATH))
|
||||
# 只检查时效内的信号堆积(4小时以内),过期信号不被消费者处理但仍会计入堆积
|
||||
# xiaoguo 信号堆积(4h以内时效)
|
||||
r = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) AND created_at > datetime('now', '-4 hours')").fetchone()
|
||||
unproc = r[0]
|
||||
# 全量未处理信号(跨来源)
|
||||
r2 = conn.execute("SELECT COUNT(*) FROM signal_news WHERE (processed=0 OR processed IS NULL)").fetchone()
|
||||
total_unproc = r2[0]
|
||||
conn.close()
|
||||
except:
|
||||
pass
|
||||
log(unproc < 30, f"信号堆积: {unproc}条未处理(需<30)")
|
||||
log(unproc < 30, f"xiaoguo信号堆积: {unproc}条未处理(需<30)")
|
||||
# 其他来源信号积压预警
|
||||
other = total_unproc - unproc
|
||||
if other > 50:
|
||||
log(False, f"其它来源信号积压: {other}条未处理(divergence_watch/trend等无consumer)")
|
||||
|
||||
# 宏观风险状态检查
|
||||
try:
|
||||
|
||||
@@ -42,10 +42,15 @@ def audit_signals(conn):
|
||||
try:
|
||||
total = conn.execute("SELECT COUNT(*) FROM signal_news").fetchone()[0]
|
||||
unproc = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) AND created_at > datetime('now', '-4 hours')").fetchone()[0]
|
||||
total_unproc = conn.execute("SELECT COUNT(*) FROM signal_news WHERE (processed=0 OR processed IS NULL)").fetchone()[0]
|
||||
today = conn.execute("SELECT COUNT(*) FROM signal_news WHERE created_at > datetime('now','-1 day')").fetchone()[0]
|
||||
log_ok("信号管道", f"信号库{total}条,今日{today}条,未处理{unproc}条")
|
||||
log_ok("信号管道", f"信号库{total}条,今日{today}条,未处理{total_unproc}条(xiaoguo={unproc})")
|
||||
if unproc > 30:
|
||||
log_issue("信号管道", "HIGH", f"未处理信号堆积{unproc}条,可能处理速度跟不上")
|
||||
log_issue("信号管道", "HIGH", f"xiaoguo信号堆积{unproc}条,可能处理速度跟不上")
|
||||
# 检查其他来源信号积压(无consumer的信号源)
|
||||
other = total_unproc - unproc
|
||||
if other > 50:
|
||||
log_issue("信号管道", "MEDIUM", f"其它来源信号积压{other}条(divergence_watch/trend等,可能无consumer)")
|
||||
except Exception as e:
|
||||
log_issue("信号管道", "HIGH", f"查询失败: {e}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user