增加停车场信息

main
zc 3 months ago
parent b02900d50e
commit 54a52fe536
  1. 30
      app/api/chat/ai/chat_service.py
  2. 11
      app/core/init_app.py

@ -290,31 +290,33 @@ async def query_flow(request: Request, spot: str) -> str:
print(f"[Redis] 查询缓存失败: {e}")
# Step 2: MySQL 查询(使用连接池)
print(f"Querying MySQL for spot: {spot}")
try:
pool = request.app.state.mysql_pool
async with pool.acquire() as conn:
async with conn.cursor() as cur:
# 查询景区客流信息
query = "SELECT SUM(t1.init_num) AS init_num, SUM(t1.out_num) AS out_num,t3.realtime_load_capacity FROM equipment_passenger_flow.flow_current_video t1 LEFT JOIN cyjcpt_bd.zhly_video_manage t2 ON t1.mac_address = t2.mac_address LEFT JOIN cyjcpt_bd.zhly_scenic_basic t3 ON t2.video_scenic_id = t3.id WHERE t3.`name` LIKE %s"
search_spot = f"%{spot}%"
await cur.execute(query, (search_spot,))
row = await cur.fetchone()
# 查询停车场信息
park_query = "SELECT t3.park_name AS park_name,IFNULL(t3.rate_info,'暂无收费标准信息') AS rate_info,t3.total_count AS total_count,t4.space AS space,t1.distance_value AS distance_value FROM cyjcpt_bd.scenic_pack_distance t1 LEFT JOIN cyjcpt_bd.zhly_scenic_basic t2 ON t1.scenic_id = t2.id LEFT JOIN cyjcpt_bd.park_info t3 ON t1.park_code = t3.park_code LEFT JOIN equipment_passenger_flow.park_current t4 ON t1.park_code = t4.park_code WHERE t2.`name` LIKE %s AND t1.distance_value <= 1000 AND t3.total_count != 0 ORDER BY t1.distance_value ASC LIMIT 2"
park_search_spot = f"%{spot}%"
await cur.execute(park_query, (park_search_spot,))
park_row = await cur.fetchall()
except Exception as e:
print(f"[MySQL] 查询失败: {e}")
return f"**未找到景区【{spot}】的信息,请检查名称是否正确。\n\n(内容仅供参考)"
print("数据库查询结果", row)
if not row:
print(f"No data found for spot: {spot}")
return f"**未找到景区【{spot}】的信息,请检查名称是否正确。\n\n(内容仅供参考)"
#随机生成剩余车位数量进行测试
car_num = random.randint(0, 100)
jl_num = random.randint(50, 200)
# 修改结果拼接部分,使用新的列名
result = f"**{spot} 客流**\n\n进入人数: {row[0]}\n离开人数: {row[1]}\n\n景区瞬时承载量:{row[2]};停车场名称:临时地上停车场 ,距离:{jl_num}米,空余车位:{car_num},总车位:100,收费标准:30分钟内免费,超出后3元/小时。(内容仅供参考)"
# Step 3: 写入 Redis 缓存
print(f"Writing data to Redis cache for key: {cache_key}")
result = ""
if row :
result = f"{spot} 客流\n\n进入人数: {row[0]}\n离开人数: {row[1]}\n\n景区瞬时承载量:{row[2]}"
else:
result = f"未找到景区【{spot}】的客流相关信息"
if park_row:
for park_row in park_row:
result += f"停车场名称:{park_row[0]} ,距离:{park_row[4]}米,空余车位:{park_row[3]},总车位:{park_row[2]},收费标准:{park_row[1]}"
else:
result += "停车场信息:暂无数据。"
try:
await redis_client.setex(cache_key, 120, result)
except Exception as e:

@ -213,7 +213,16 @@ async def init_db():
shutil.rmtree("migrations")
await command.init_db(safe=True)
await command.upgrade(run_in_transaction=True)
try:
# 移除 run_in_transaction=True 参数
await command.upgrade()
except Exception as e:
logger.error(f"Migration upgrade failed: {e}")
# 如果升级失败,尝试清理并重新初始化
shutil.rmtree("migrations", ignore_errors=True)
await command.init_db(safe=True)
await command.migrate()
await command.upgrade()
else:
logger.info("✅ Migration already applied, skipping migrate + upgrade.")

Loading…
Cancel
Save