| """Document summarization endpoint.""" |
|
|
| import asyncio |
| from typing import Optional |
|
|
| from fastapi import APIRouter, Depends |
| from pydantic import BaseModel |
|
|
| router = APIRouter(prefix="/api") |
|
|
|
|
| class SummarizeRequest(BaseModel): |
| document_id: Optional[str] = None |
| text: Optional[str] = None |
| summary_type: str = "financial" |
|
|
|
|
| def get_summarizer(): |
| from core.bootstrap import get_summarizer_service as _get |
| return _get() |
|
|
|
|
| @router.post("/summarize") |
| async def summarize(request: SummarizeRequest, summarizer=Depends(get_summarizer)): |
| result = await asyncio.to_thread( |
| summarizer.summarize, |
| document_id=request.document_id, |
| text=request.text, |
| summary_type=request.summary_type, |
| ) |
| if "error" in result: |
| return result |
| return result |
|
|