fix: HK currency→CNY + portfolio_summary + LLM prompt evaluation.json→DB

This commit is contained in:
知微
2026-07-03 23:15:18 +08:00
parent 239590c0d4
commit 9bc0cca174
4 changed files with 136 additions and 1 deletions
+42
View File
@@ -0,0 +1,42 @@
"""Fix: HK stock currency=CYN, recalc portfolio_summary"""
import sqlite3, sys
sys.path.insert(0, '/home/hmo/MoFin')
from mo_models import is_hk_stock
from datetime import datetime
db = sqlite3.connect('/home/hmo/web-dashboard/data/mofin.db')
# 1. Fix all HK stock currency to CNY
fixed = 0
for r in db.execute("SELECT code, name, cost, price, shares, currency FROM holdings WHERE is_active=1"):
code, name, cost, price, shares, curr = r
if is_hk_stock(str(code)):
db.execute("UPDATE holdings SET currency='CNY' WHERE code=?", (code,))
print(f" FIXED HK currency: {code} {name}: {curr} -> CNY")
fixed += 1
print(f"Fixed {fixed} HK stock currencies\n")
# 2. Recalc portfolio_summary
rows = db.execute("SELECT code, shares, cost, price FROM holdings WHERE is_active=1").fetchall()
total_mv = sum((r[3] or 0) * (r[1] or 0) for r in rows)
total_cost = sum((r[2] or 0) * (r[1] or 0) for r in rows)
total_pnl = total_mv - total_cost
sr = db.execute("SELECT cash, frozen_cash FROM portfolio_summary WHERE id=1").fetchone()
cash = sr[0] or 0
frozen = sr[1] or 0
total_assets = total_mv + cash + frozen
position_pct = round(total_mv / total_assets * 100, 2) if total_assets > 0 else 0
db.execute("UPDATE portfolio_summary SET total_mv=?, total_assets=?, total_pnl=?, position_pct=?, updated_at=? WHERE id=1",
(round(total_mv,2), round(total_assets,2), round(total_pnl,2), position_pct, datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
print(f"portfolio_summary: mv={total_mv:.2f} ta={total_assets:.2f} pnl={total_pnl:.2f} pos={position_pct}%")
# 3. Check 00700 cost
r = db.execute("SELECT cost FROM holdings WHERE code='00700'").fetchone()
if r and (r[0] is None or r[0] == 0):
print("\n⚠️ 00700 腾讯 cost=0 — 需要从 holding.xls 重新导入")
db.commit()
db.close()
print("\nDone.")