fix(action): 12维操作建议写入action+技术路径action权限保护+RR区间显示修复

- batch parse_response提取【操作建议】→ save_result写action(根治: action字段只有技术路径写,
  旧'盈亏比不足不建议买入'与12维买入分析同框矛盾)
- write_holding_strategy: 技术路径不得覆盖新鲜(<20h)12维 action(与信号权威同级)
- 前端: rr_high>0即显示低~高区间(rr_low=0是合法信息: 区下沿=止损贴底即损)
- server: SEND_FILE_MAX_AGE_DEFAULT=0 禁静态缓存
This commit is contained in:
hmo
2026-07-22 23:16:43 +08:00
parent f7f7fe3ca0
commit 0f2c6555df
4 changed files with 27 additions and 3 deletions
+10 -1
View File
@@ -341,7 +341,7 @@ def parse_response(text):
绝不用"包含关键词的第一行"——修改点段落会引用旧脏值(如"原买入区间95.0~99.0"),
曾导致脏数据被反复写回(17只股票背着95~99区间,LLM新区间形同虚设)。"""
result = {"signal": "", "entry_low": 0, "entry_high": 0, "stop_loss": 0, "take_profit": 0, "position": "",
"zone_cleared": False}
"zone_cleared": False, "action_advice": ""}
def _section_line(name):
"""匹配节标题行:行首(可含空白)【名称】,返回该行内容"""
@@ -387,6 +387,11 @@ def parse_response(text):
result["take_profit"] = float(nums[0])
break
# 操作建议(只认【操作建议】节行)→ action 字段,前端"当前操作策略"列的唯一新鲜来源
al = _section_line("操作建议")
if al:
result["action_advice"] = re.sub(r'^\s*【操作建议】\s*', '', al).strip()[:200]
# 仓位:只有买入信号才需要,提取百分比数字(只认【建议仓位】节行)
result["position"] = ""
if result["signal"] == "买入":
@@ -460,6 +465,10 @@ def save_result(code, full_text, parsed):
if parsed["position"]:
updates.append("position_advice=?")
params.append(parsed["position"])
if parsed.get("action_advice"):
# 12维操作建议 → action(前端"当前操作策略"列;防技术路径旧值与分析矛盾)
updates.append("action=?")
params.append(parsed["action_advice"])
params.append(code)
sql = f"UPDATE holding_strategies SET {', '.join(updates)} WHERE code=? AND status='active'"