#!/usr/bin/env python3
"""修复decisions.json中所有决策的trigger字段（由regenerate_all负责填充）"""

import json, sys, os
from mo_data import read_portfolio, read_decisions, read_watchlist
from mofin_db import get_conn, write_holding_strategy

try:
    dec = read_decisions()
except Exception as e:
    print(f"读decisions.json失败: {e}")
    sys.exit(1)

count = 0
for d in dec.get("decisions", []):
    trig = d.get("trigger", {})
    if trig:
        continue  # 已有trigger，跳过
    
    sl = d.get("stop_loss", 0) or 0
    tp = d.get("take_profit", 0) or 0
    el = d.get("entry_low", 0) or 0
    eh = d.get("entry_high", 0) or 0
    code = d.get("code", "")
    name = d.get("name", "")
    
    new_trig = {}
    if sl and float(sl) > 0:
        new_trig["stop_loss"] = float(sl)
    if el and eh and float(el) > 0 and float(eh) > 0:
        new_trig["entry_zone"] = f"{float(el)}~{float(eh)}"
    if tp and float(tp) > 0:
        new_trig["take_profit_zone"] = f"0~{float(tp)}"
    
    d["trigger"] = new_trig
    count += 1
    if new_trig:
        print(f"  {code} {name}: trigger={new_trig}")

# DB 写入（替代 json.dump）
conn = get_conn()
for d in dec.get("decisions", []):
    write_holding_strategy(conn, d.get("code", ""), d.get("name", ""), d)
conn.close()
print(f"\n共{count}只，已更新trigger字段")
