diff --git a/deploy/profile-scripts/mo_models.py b/deploy/profile-scripts/mo_models.py index 3dee7b1b..17224104 100644 --- a/deploy/profile-scripts/mo_models.py +++ b/deploy/profile-scripts/mo_models.py @@ -65,14 +65,26 @@ def normalize_code(code): # ── 港币汇率 ────────────────────────────────────────────────────────── def get_hk_rate(): - """获取 HKD→CNY 汇率。优先用 hk_rate 模块(支持API+缓存),失败回退 0.87""" + """获取 HKD→CNY 汇率。优先用 hk_rate 模块(支持API+缓存),失败回退 fx_rate 表最新锁定值""" try: from hk_rate import hkd_to_cny return hkd_to_cny() except Exception: pass - # 最后的兜底 - return 0.87 + # 2026-08-25 兜底改读 fx_rate 表最新锁定值(daily_close 锁定,不再硬编码0.87—— + # 硬编码与锁定值偏差1.2%会导致港币市值计算漂移) + try: + import sqlite3 as _sq + _c = _sq.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) + _r = _c.execute( + "SELECT rate FROM fx_rate WHERE currency_pair='HKD_CNY' AND is_active=1 " + "ORDER BY id DESC LIMIT 1").fetchone() + _c.close() + if _r and _r[0]: + return float(_r[0]) + except Exception: + pass + return 0.87 # fx_rate 表也没有时的最终兜底 def to_cny(price, code):