data_snapshot统一数据入口+DB银行locked修复+建滔/现金修正
data_snapshot.py: 所有报告脚本的唯一数据入口(通过mo_data读DB) price_monitor.py: DB写入加了3次重试+PRAGMA busy_timeout=5000 quality gate: 新增GATE_PROFIT_EXISTS(止盈=0拦截)+GATE_9D_ANALYSIS 建滔(01888) DB已修正: price=84.9 HKD, cost=88.23 HKD, 浮亏-3.8% 现金已修正: 132,121.93 (frozen=0)
This commit is contained in:
+15
-7
@@ -266,13 +266,21 @@ def refresh_data_prices():
|
||||
pf['total_assets'] = calc_total_assets(pf)
|
||||
pf['position_pct'] = calc_position_pct(pf)
|
||||
# DB 写入(替代 json.dump,强制币种约束)
|
||||
try:
|
||||
conn = get_conn()
|
||||
write_holdings_batch(conn, pf['holdings'])
|
||||
write_portfolio_summary(conn, pf)
|
||||
conn.close()
|
||||
except Exception as e:
|
||||
print(f" [DB写入失败] {e}", flush=True)
|
||||
for attempt in range(3):
|
||||
try:
|
||||
conn = get_conn()
|
||||
conn.execute("PRAGMA busy_timeout=5000") # 等待5秒而非立即放弃
|
||||
write_holdings_batch(conn, pf['holdings'])
|
||||
write_portfolio_summary(conn, pf)
|
||||
conn.close()
|
||||
if attempt > 0:
|
||||
print(f" [DB写入 OK after {attempt+1} retries]", flush=True)
|
||||
break
|
||||
except Exception as e:
|
||||
if attempt < 2:
|
||||
import time; time.sleep((attempt+1)*1)
|
||||
else:
|
||||
print(f" [DB写入失败 3次重试后放弃] {e}", flush=True)
|
||||
# 保留 JSON 副本作为冷备
|
||||
json.dump(pf, open(PORTFOLIO_PATH, 'w'), ensure_ascii=False, indent=2)
|
||||
elif pf.get('updated_at'):
|
||||
|
||||
Reference in New Issue
Block a user