1. Add 登陆功能
2. 调整字体大小 3. 新增部分功能
This commit is contained in:
@@ -252,7 +252,31 @@ def get_document_query_service() -> DocumentQueryService:
|
||||
|
||||
@lru_cache
|
||||
def get_conversation_store() -> InMemoryConversationStore:
|
||||
"""Return conversation store."""
|
||||
"""Return the active conversation store based on settings.
|
||||
|
||||
When session_backend='redis', sessions survive backend restarts and scale
|
||||
across multiple API worker processes. When session_backend='memory' (default),
|
||||
sessions are process-local and lost on restart.
|
||||
"""
|
||||
if settings.session_backend == "redis":
|
||||
import redis as redis_lib
|
||||
from app.infrastructure.session.redis_conversation_store import RedisConversationStore
|
||||
|
||||
# Build the Redis client from the same connection settings used by Celery.
|
||||
kwargs: dict = {
|
||||
"host": settings.redis_host,
|
||||
"port": settings.redis_port,
|
||||
"db": settings.redis_db,
|
||||
"decode_responses": False,
|
||||
}
|
||||
if settings.redis_password:
|
||||
kwargs["password"] = settings.redis_password
|
||||
|
||||
redis_client = redis_lib.Redis(**kwargs)
|
||||
return RedisConversationStore( # type: ignore[return-value]
|
||||
redis_client=redis_client,
|
||||
timeout_seconds=settings.session_timeout_minutes * 60,
|
||||
)
|
||||
return InMemoryConversationStore(
|
||||
max_sessions=settings.session_max_sessions,
|
||||
timeout_minutes=settings.session_timeout_minutes,
|
||||
@@ -284,6 +308,35 @@ def get_agent_session_service() -> AgentSessionService:
|
||||
return AgentSessionService(conversation_store=get_conversation_store())
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_celery_app():
|
||||
"""Return the shared Celery application instance.
|
||||
|
||||
Imported lazily so Celery is not required when running without workers
|
||||
(e.g., tests that mock bootstrap or dev without Redis).
|
||||
"""
|
||||
from app.infrastructure.tasks.celery_app import celery_app
|
||||
return celery_app
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_jwt_handler():
|
||||
"""Return the shared JWTHandler instance for token creation and validation."""
|
||||
from app.infrastructure.auth.jwt_handler import JWTHandler
|
||||
return JWTHandler(
|
||||
secret_key=settings.auth_secret_key,
|
||||
algorithm=settings.auth_algorithm,
|
||||
expire_minutes=settings.auth_token_expire_minutes,
|
||||
)
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_user_store():
|
||||
"""Return the PostgreSQL user store (lazy-connects on first call)."""
|
||||
from app.infrastructure.auth.user_store import PostgresUserStore
|
||||
return PostgresUserStore()
|
||||
|
||||
|
||||
def preload_runtime_dependencies() -> None:
|
||||
"""Warm dependencies that are safe and useful to preload during startup."""
|
||||
LLMFactory.preload_clients(["qwen", "deepseek"])
|
||||
|
||||
Reference in New Issue
Block a user