Files
group_xinghuo_jinrong/app/config/database.py
T
zhanghongyu_0626 9d4d4aaa6d feat(chat): Enhance session management with new API endpoints and filtering options
- Added `status` query parameter to `list_sessions_api` for filtering sessions by their status (active/closed).
- Introduced `close_all_sessions_api` endpoint to allow users to close all active sessions for the current actor.
- Updated `SessionRepository` to support status filtering in session listing and implemented logic for closing active sessions.
- Improved Redis connection settings for better performance and reliability.

This update enhances the chat functionality by providing more control over session management, improving user experience and system efficiency.
2026-09-10 22:30:07 +08:00

45 lines
1.2 KiB
Python

"""MySQL / Redis 连接工厂。"""
from functools import lru_cache
import redis
from sqlalchemy import create_engine
from sqlalchemy.engine import Engine
from app.config.settings import settings
def _mysql_url(database: str) -> str:
pwd = settings.mysql_password
auth = f"{settings.mysql_user}:{pwd}" if pwd else settings.mysql_user
return (
f"mysql+pymysql://{auth}@{settings.mysql_host}:{settings.mysql_port}"
f"/{database}?charset=utf8mb4"
)
@lru_cache
def get_agent_engine() -> Engine:
return create_engine(_mysql_url(settings.mysql_database), pool_pre_ping=True)
@lru_cache
def get_core_engine() -> Engine:
return create_engine(_mysql_url(settings.mysql_core_database), pool_pre_ping=True)
def _redis_kwargs() -> dict:
"""RESP2:兼容 Windows Redis 3.x(无 HELLO);Redis 7 Docker 同样可用。"""
return {
"decode_responses": True,
"protocol": 2,
"socket_timeout": 1,
"socket_connect_timeout": 0.5,
}
@lru_cache
def get_redis_client() -> redis.Redis:
"""Redis 单例客户端(客服线 VisitorMemory / ProfileHotCache 用)。"""
return redis.from_url(settings.redis_url, **_redis_kwargs())