更新ios
This commit is contained in:
49
app.py
49
app.py
@@ -18308,10 +18308,8 @@ 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()
|
||||||
|
|
||||||
summary = {
|
# 构建基础数据
|
||||||
'stock_code': seccode,
|
latest_trade = {
|
||||||
'stock_name': trade_result.SECNAME if trade_result else None,
|
|
||||||
'latest_trade': {
|
|
||||||
'date': format_date(trade_result.TRADEDATE) if trade_result else None,
|
'date': format_date(trade_result.TRADEDATE) if trade_result else None,
|
||||||
'close': format_decimal(trade_result.F007N) 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,
|
'change_percent': format_decimal(trade_result.F010N) if trade_result else None,
|
||||||
@@ -18319,7 +18317,48 @@ def get_market_summary(seccode):
|
|||||||
'amount': format_decimal(trade_result.F011N) 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,
|
'pe_ratio': format_decimal(trade_result.F026N) if trade_result else None,
|
||||||
'turnover_rate': format_decimal(trade_result.F012N) if trade_result else None,
|
'turnover_rate': format_decimal(trade_result.F012N) if trade_result else None,
|
||||||
} 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 = {
|
||||||
|
'stock_code': seccode,
|
||||||
|
'stock_name': trade_result.SECNAME if trade_result else None,
|
||||||
|
'latest_trade': latest_trade,
|
||||||
'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,
|
||||||
|
|||||||
Reference in New Issue
Block a user