feat(backend): add direct /salute-speech/ transcription endpoint

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Daniil
2026-04-04 00:08:39 +03:00
parent c40aeab8be
commit 7f7db41bc3
+21 -4
View File
@@ -12,6 +12,7 @@ from cpv3.db.session import get_db
from cpv3.modules.transcription.schemas import (
Document,
GoogleSpeechParams,
SaluteSpeechParams,
TranscriptionCreate,
TranscriptionRead,
TranscriptionUpdate,
@@ -19,6 +20,7 @@ from cpv3.modules.transcription.schemas import (
)
from cpv3.modules.transcription.service import (
transcribe_with_google_speech,
transcribe_with_salute_speech,
transcribe_with_whisper,
)
from cpv3.modules.transcription.repository import TranscriptionRepository
@@ -62,7 +64,7 @@ async def retrieve_transcription_entry(
repo = TranscriptionRepository(db)
transcription = await repo.get_by_id(transcription_id)
if transcription is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found")
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Не найдено")
return TranscriptionRead.model_validate(transcription)
@@ -77,7 +79,7 @@ async def retrieve_transcription_by_artifact(
repo = TranscriptionRepository(db)
transcription = await repo.get_by_artifact_id(artifact_id)
if transcription is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found")
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Не найдено")
return TranscriptionRead.model_validate(transcription)
@@ -93,7 +95,7 @@ async def patch_transcription_entry(
repo = TranscriptionRepository(db)
transcription = await repo.get_by_id(transcription_id)
if transcription is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found")
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Не найдено")
transcription = await repo.update(transcription, body)
return TranscriptionRead.model_validate(transcription)
@@ -109,7 +111,7 @@ async def delete_transcription_entry(
repo = TranscriptionRepository(db)
transcription = await repo.get_by_id(transcription_id)
if transcription is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found")
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Не найдено")
await repo.deactivate(transcription)
return Response(status_code=status.HTTP_204_NO_CONTENT)
@@ -142,3 +144,18 @@ async def google_speech_transcribe(
file_key=body.file_path,
language_codes=body.language_codes,
)
@router.post("/salute-speech/", response_model=Document)
async def salute_speech_transcribe(
body: SaluteSpeechParams,
current_user: User = Depends(get_current_user),
storage: StorageService = Depends(get_storage),
) -> Document:
_ = current_user
return await transcribe_with_salute_speech(
storage,
file_key=body.file_path,
language=body.language,
model=body.model,
)