diff --git a/deploy/profile-scripts/batch_reassess.py b/deploy/profile-scripts/batch_reassess.py index cc6172e4..f707676e 100644 --- a/deploy/profile-scripts/batch_reassess.py +++ b/deploy/profile-scripts/batch_reassess.py @@ -262,21 +262,20 @@ def collect_data(code): prefix = "sz" try: _pconn = sqlite3.connect(DB, timeout=30) - _lp = _pconn.execute("SELECT price, change_pct FROM live_prices WHERE code=?", (code,)).fetchone() - if _lp and _lp[0]: - data["price"] = float(_lp[0]) - data["change_pct"] = _lp[1] if _lp[1] is not None else "0" + # 价格: stock_daily(收盘价,全市场覆盖) 优先, live_prices(盘中) 其次 + _sd = _pconn.execute("SELECT close FROM stock_daily WHERE code=? ORDER BY date DESC LIMIT 1", (code,)).fetchone() + if _sd and _sd[0]: + data["price"] = float(_sd[0]) + else: + _lp = _pconn.execute("SELECT price FROM live_prices WHERE code=?", (code,)).fetchone() + data["price"] = float(_lp[0]) if _lp and _lp[0] else 0 + data["change_pct"] = "0" + # PE/市值: 从stock_fundamentals读(fundamentals_full_refresh全市场覆盖) + _ff = _pconn.execute("SELECT pe, pb, mcap_total FROM stock_fundamentals WHERE code=?", (code,)).fetchone() + if _ff: + data["pe"] = str(_ff[0]) if _ff[0] else "" + data["mcap"] = str(_ff[1]) if _ff[1] else "" # PB暂时不用,但mcap_total是市值 else: - _sd = _pconn.execute("SELECT close FROM stock_daily WHERE code=? ORDER BY date DESC LIMIT 1", (code,)).fetchone() - data["price"] = float(_sd[0]) if _sd and _sd[0] else 0 - data["change_pct"] = "0" - try: - _pfx = "hk" if len(str(code)) == 5 else ("sh" if str(code).startswith(("6","9")) else "sz") - _r = subprocess.run(["curl", "-s", f"http://qt.gtimg.cn/q={_pfx}{code}"], capture_output=True, timeout=10) - _parts = _r.stdout.decode("gbk", errors="ignore").split("~") - data["pe"] = _parts[39] if len(_parts) > 39 and _parts[39] else "" - data["mcap"] = _parts[44] if len(_parts) > 44 and _parts[44] else "" - except: data["pe"] = "" data["mcap"] = "" _pconn.close()