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