更新ios

This commit is contained in:
2026-01-23 14:54:27 +08:00
parent d8700a3b5c
commit b9177fcbf0

57
app.py
View File

@@ -18308,18 +18308,57 @@ def get_market_summary(seccode):
with engine.connect() as conn: with engine.connect() as conn:
pledge_result = conn.execute(pledge_query, {'seccode': seccode}).fetchone() pledge_result = conn.execute(pledge_query, {'seccode': seccode}).fetchone()
# 构建基础数据
latest_trade = {
'date': format_date(trade_result.TRADEDATE) if trade_result else None,
'close': format_decimal(trade_result.F007N) if trade_result else None,
'change_percent': format_decimal(trade_result.F010N) if trade_result else None,
'volume': format_decimal(trade_result.F004N) if trade_result else None,
'amount': format_decimal(trade_result.F011N) if trade_result else None,
'pe_ratio': format_decimal(trade_result.F026N) if trade_result else None,
'turnover_rate': format_decimal(trade_result.F012N) if trade_result else None,
} if trade_result else None
# 交易时间内从 ClickHouse 获取实时价格
if latest_trade:
now = beijing_now()
current_date = now.date()
current_time = now.time()
morning_start = dt_time(9, 30)
morning_end = dt_time(11, 30)
afternoon_start = dt_time(13, 0)
afternoon_end = dt_time(15, 0)
is_trading_time = (
current_date in trading_days_set and
((morning_start <= current_time <= morning_end) or
(afternoon_start <= current_time <= afternoon_end) or
(morning_end < current_time < afternoon_start))
)
if is_trading_time:
try:
# 标准化股票代码
if seccode.startswith('6'):
full_code = f"{seccode}.SH"
elif seccode.startswith(('8', '9', '4')):
full_code = f"{seccode}.BJ"
else:
full_code = f"{seccode}.SZ"
cached_price = get_latest_price_with_cache(full_code)
if cached_price and cached_price.get('price') and cached_price['price'] > 0:
latest_trade['close'] = cached_price['price']
latest_trade['change_percent'] = cached_price.get('change_pct') or latest_trade['change_percent']
print(f"[market-summary] 实时价格更新: {full_code} -> {cached_price['price']} ({cached_price.get('change_pct', 0):+.2f}%)")
except Exception as e:
print(f"[market-summary] 获取实时价格失败: {e}")
summary = { summary = {
'stock_code': seccode, 'stock_code': seccode,
'stock_name': trade_result.SECNAME if trade_result else None, 'stock_name': trade_result.SECNAME if trade_result else None,
'latest_trade': { 'latest_trade': latest_trade,
'date': format_date(trade_result.TRADEDATE) if trade_result else None,
'close': format_decimal(trade_result.F007N) if trade_result else None,
'change_percent': format_decimal(trade_result.F010N) if trade_result else None,
'volume': format_decimal(trade_result.F004N) if trade_result else None,
'amount': format_decimal(trade_result.F011N) if trade_result else None,
'pe_ratio': format_decimal(trade_result.F026N) if trade_result else None,
'turnover_rate': format_decimal(trade_result.F012N) if trade_result else None,
} if trade_result else None,
'latest_funding': { 'latest_funding': {
'date': format_date(funding_result.TRADEDATE) if funding_result else None, 'date': format_date(funding_result.TRADEDATE) if funding_result else None,
'financing_balance': format_decimal(funding_result.F001N) if funding_result else None, 'financing_balance': format_decimal(funding_result.F001N) if funding_result else None,