From 5360ea7f9c277328cdc69c7f20a66f06d4550850 Mon Sep 17 00:00:00 2001 From: poturaevpetr Date: Wed, 18 Mar 2026 01:31:29 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BA=D0=BB=D1=8E=D1=81=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D1=80=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=D0=BD?= =?UTF-8?q?=D0=B0=D0=B2=D0=B0=D0=BD=D0=B8=D1=8E=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiApp/routers/ai_conclusion_router.py | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/apiApp/routers/ai_conclusion_router.py b/apiApp/routers/ai_conclusion_router.py index e591428..d8b3296 100644 --- a/apiApp/routers/ai_conclusion_router.py +++ b/apiApp/routers/ai_conclusion_router.py @@ -62,6 +62,41 @@ class AiConclusionResponse(BaseModel): error: Optional[str] = None +class ConclusionByFilenameResponse(BaseModel): + """Заключение по имени файла""" + filename: str + audio_id: str + conclusion: Dict[str, Any] + index_date: Optional[datetime] = None + end_date: Optional[datetime] = None + + +@ai_conclusion_router.get("/conclusion/by-filename/{filename}", response_model=ConclusionByFilenameResponse) +async def get_conclusion_by_filename(filename: str, db: Session = Depends(get_db)): + """ + Возвращает заключение по распознаванию по имени файла. + Имя файла задаётся в path (то же, что сохранено в БД при загрузке). + """ + audio = db.query(Audio).filter(Audio.filename == filename).first() + if not audio: + raise HTTPException(status_code=404, detail=f"Файл не найден: {filename}") + + conclusion_row = db.query(AiConclusion).filter(AiConclusion.audio_id == audio.id).first() + if not conclusion_row: + raise HTTPException( + status_code=404, + detail=f"Заключение по распознаванию для файла не найдено: {filename}" + ) + + return ConclusionByFilenameResponse( + filename=audio.filename, + audio_id=str(audio.id), + conclusion=conclusion_row.conclusion or {}, + index_date=conclusion_row.index_date, + end_date=conclusion_row.end_date, + ) + + @ai_conclusion_router.post("/conclusion/save", response_model=AiConclusionResponse) async def save_ai_conclusion(request: AiConclusionRequest, db: Session = Depends(get_db)): """