sales-assistant-py-new/app/chat_qa_query/api/router/query_router.py

47 lines
1.8 KiB
Python

from typing import Annotated
from fastapi import APIRouter
from fastapi.params import Depends
from sqlalchemy.ext.asyncio import AsyncSession
from app.chat_qa_query.api.qa_dependencies import get_assistant_session, get_qa_query_service
from app.chat_qa_query.api.schema.query_qa_schema import QueryQASchema
from app.chat_qa_query.service.query_qa_service import QueryQAService
from app.client.embedding_client_manager import embedding_client
from app.core.log import logger
from app.repository.archive_messages_repository import ArchiveMessagesRepository
from app.repository.milvus.summary_repository import SummaryRepository
from app.summary.service import SummaryService
query_qa_router = APIRouter()
@query_qa_router.post("/api/qa/query")
async def query_handler(query: QueryQASchema, query_service: Annotated[QueryQAService, Depends(get_qa_query_service)]):
logger.info(f"请求参数:{query.external_str},历史top15:{query.messages_top15}")
return await query_service.query(query.external_str, query.messages_top15)
async def get_summary_service(
session: Annotated[AsyncSession, Depends(get_assistant_session)],
) -> SummaryService:
archive_messages_repository = ArchiveMessagesRepository(session)
summary_repository = SummaryRepository()
return SummaryService(
archive_messages_repository=archive_messages_repository,
embedding_client=embedding_client,
summary_repository=summary_repository,
)
@query_qa_router.get("/api/summary/real-time")
async def real_time_summary_handler(
from_user: str,
to_user: str,
summary_service: Annotated[SummaryService, Depends(get_summary_service)],
):
logger.info(f"实时总结请求: from_user={from_user}, to_user={to_user}")
result = await summary_service.real_time_summary(from_user, to_user)
return result