feat: promote进自选XMPP推送附完整12维重评全文(老莫要求)

This commit is contained in:
xxm
2026-08-17 17:55:21 +08:00
parent b3484f65d7
commit b71a95f673
+22 -4
View File
@@ -51,6 +51,7 @@ def main():
print(f"[PROMOTE] 待处理 {len(rows)} 个候选(本次最多 {MAX_NEW_PER_RUN} 个新提拔)", flush=True)
promoted = 0
processed = 0
newly_promoted_codes = []
for r in rows:
if over_budget():
print(f"[PROMOTE] 已达时长护栏 {TOTAL_TIME_BUDGET}s,停止本批(已处理{processed}", flush=True)
@@ -192,6 +193,7 @@ def main():
if newly_added:
promoted += 1
processed += 1
newly_promoted_codes.append(code)
print(f"{code} {name} 评分{score} → 已加入自选({timing_signal})", flush=True)
else:
print(f"{code} {name} 已在自选策略中,标记promoted", flush=True)
@@ -213,16 +215,32 @@ def main():
conn.commit()
print(f"\n[PROMOTE] 本次处理{processed}个,提拔{promoted}只(剩余留待下批)", flush=True)
# 推XMPP
# 推XMPP(老莫:进自选必须附完整 12 维重评全文)
if promoted > 0:
try:
import urllib.request
body = f"🤖 候选自动提拔: {promoted}只新入自选(评分降序优中选优,每批≤{MAX_NEW_PER_RUN}"
codes = ",".join("?" * len(newly_promoted_codes))
promoted_rows = conn.execute(
f"SELECT code, name, strategy_name, rr_ratio, full_analysis "
f"FROM holding_strategies WHERE status='active' AND code IN ({codes})",
tuple(newly_promoted_codes)
).fetchall() if newly_promoted_codes else []
body = f"🤖 候选自动提拔: {promoted}只新入自选(评分降序优中选优,每批≤{MAX_NEW_PER_RUN}\n"
for i, (code, name, strat, rr, fa) in enumerate(promoted_rows, 1):
nm = name or code
body += f"\n━━━ [{i}] {code} {nm} ━━━\n"
body += f"策略: {strat or 'unknown'} | RR: {rr or 'N/A'}\n"
if fa and len(str(fa)) > 50:
body += f"【12维重评】\n{fa}\n"
else:
body += "(重评报告生成中/未就绪,稍后补推)\n"
if len(body) > 6000:
body = body[:6000] + "\n…(内容过长已截断)"
req = urllib.request.Request("http://127.0.0.1:5805/",
data=json.dumps({"to": "hmo@yoin.fun", "body": body, "type": "chat"}).encode(),
headers={"Content-Type": "application/json"})
urllib.request.urlopen(req, timeout=5)
print("[PROMOTE] XMPP 通知已发送", flush=True)
urllib.request.urlopen(req, timeout=10)
print(f"[PROMOTE] XMPP 通知已发送{promoted}只含完整重评)", flush=True)
except Exception as e:
print(f"[PROMOTE] XMPP 通知失败: {e}", flush=True)