fix: reconcile缩进修复(SIGNAL_JSON优先段的fallback块)

This commit is contained in:
xxm
2026-08-25 12:11:33 +08:00
parent 29069ce267
commit 06dccfb2b0
+25 -11
View File
@@ -1202,17 +1202,31 @@ def reconcile_signal_from_analysis(conn, code: str) -> str:
return "" return ""
fa, old_sig = row[0] or "", row[1] or "" fa, old_sig = row[0] or "", row[1] or ""
verdict = "" verdict = ""
for line in fa.split("\n"): # ── 2026-08-25 机器可读结论优先(SIGNAL_JSON 行存在则直接用,散文匹配降级为兜底)──
if "【综合结论】" in line: _mj = re.search(r'^SIGNAL_JSON:\s*(\{.*\})\s*$', fa, re.M)
# 2026-08-25 开头匹配(601866教训:"关注(条件性买入机会)"被顺序扫描误抓"买入" if _mj:
# 综合结论词的规范位置=【综合结论】之后紧跟的第一个词 try:
tail = line.split("【综合结论】", 1)[1].strip() import json as _js2
# 长词在前防前缀误抓(弱势持有>持有, 可买入/可加仓>买入) _sj = _js2.loads(_mj.group(1))
for s in ("可买入", "可加仓", "弱势持有", "买入", "卖出", "止盈", "关注", "观望", "持有"): verdict = _sj.get("signal", "") or ""
if tail.startswith(s): # LLM 自己标注 actionable=false 的动作信号 → 直接降级(不再依赖否定词表)
verdict = s if verdict in ("买入", "可买入", "可加仓") and _sj.get("actionable") is False:
break verdict = "关注"
break print(f" [RECONCILE] {code} SIGNAL_JSON actionable=false,信号降级为关注", flush=True)
except Exception:
verdict = ""
if not verdict:
for line in fa.split("\n"):
if "【综合结论】" in line:
# 2026-08-25 开头匹配(601866教训:"关注(条件性买入机会)"被顺序扫描误抓"买入"
# 综合结论词的规范位置=【综合结论】之后紧跟的第一个词
tail = line.split("【综合结论】", 1)[1].strip()
# 长词在前防前缀误抓(弱势持有>持有, 可买入/可加仓>买入)
for s in ("可买入", "可加仓", "弱势持有", "买入", "卖出", "止盈", "关注", "观望", "持有"):
if tail.startswith(s):
verdict = s
break
break
if verdict: if verdict:
new_sig = verdict new_sig = verdict
# ── 矛盾降级(2026-07-24 老爸:688660综合结论=买入但操作建议说"继续空仓观望暂不执行")── # ── 矛盾降级(2026-07-24 老爸:688660综合结论=买入但操作建议说"继续空仓观望暂不执行")──