add banbanmini backend

This commit is contained in:
HycJack
2026-03-24 15:04:36 +08:00
parent 0d0f995dc2
commit 7510ca6df1
197 changed files with 13008 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
from services.interrupt_handler import interrupt_handler
from services.audio_session import audio_session_manager
from utils.logger import session_logger
async def handle_old_session_cleanup(old_session, session_key):
"""
清理旧会话资源
Args:
old_session: 需要清理的会话对象
session_key: 会话键 (device_id, session_id)
"""
try:
device_id, session_id = session_key
session_logger.info(device_id, session_id, "开始主动清理旧会话资源")
if hasattr(old_session, "register_interrupt_handlers"):
await old_session.register_interrupt_handlers()
await interrupt_handler.set_interrupt_state(session_key, True)
await interrupt_handler.handle_interrupt(session_key)
except Exception as e:
session_logger.error("unknown", "unknown", f"清理旧会话资源时出错: {e}")
async def cleanup_device_sessions(device_id):
"""
清理设备所有会话
Args:
device_id: 设备ID
"""
sessions_to_clean = []
for session_key, session in await audio_session_manager.get_all_sessions():
if session_key[0] == device_id:
sessions_to_clean.append((session_key, session))
for session_key, session in sessions_to_clean:
if hasattr(session, "set_interrupted"):
session_logger.info(
device_id, session_key[1], "WebSocket连接断开中断会话"
)
await session.set_interrupted(True)
await interrupt_handler.handle_interrupt(session_key)
else:
await interrupt_handler.set_interrupt_state(session_key, True)
if session.llm_service and hasattr(session.llm_service, "closed"):
session.llm_service.closed = True
for session_key, _ in sessions_to_clean:
await audio_session_manager.remove_session(session_key)
await interrupt_handler.remove_session(session_key)
session_logger.info(
device_id, session_key[1], "已从会话管理器中移除会话"
)