add a retranslate chinese function

This commit is contained in:
2026-10-06 14:47:22 +08:00
parent 4fd0fd36a4
commit b28f809c46
11 changed files with 448 additions and 9 deletions

View File

@@ -46,6 +46,8 @@ from .models import (
SentenceBoundaryDocument,
SentenceExplanationRequest,
SentenceExplanationResponse,
AdminSubtitleTranslationResponse,
SubtitleRetranslateRequest,
SubtitleTranslationResponse,
PasswordResetRequest,
SentenceTextUpdate,
@@ -668,6 +670,41 @@ def create_app(
background_tasks.add_task(_process_safely, processor, video_hash)
return {"video_hash": video_hash.lower(), "status": "processing_queued"}
@application.get(
"/api/v1/admin/videos/{video_hash}/subtitle-translation",
response_model=AdminSubtitleTranslationResponse,
dependencies=[Depends(require_admin)],
)
def get_admin_subtitle_translation(
video_hash: str = SHA256_PATH,
) -> AdminSubtitleTranslationResponse:
snapshot = application.state.subtitle_translations.admin_snapshot(video_hash)
if snapshot is None:
raise HTTPException(status_code=404, detail="Course is not available.")
return snapshot
@application.post(
"/api/v1/admin/videos/{video_hash}/subtitle-translation",
response_model=AdminSubtitleTranslationResponse,
dependencies=[Depends(require_admin)],
)
def retranslate_subtitles(
payload: Optional[SubtitleRetranslateRequest] = None,
video_hash: str = SHA256_PATH,
) -> AdminSubtitleTranslationResponse:
request = payload or SubtitleRetranslateRequest()
try:
return application.state.subtitle_translations.retranslate(
video_hash,
terms=[(item.source, item.zh) for item in request.terms],
)
except KeyError:
raise HTTPException(status_code=404, detail="Course is not available.") from None
except ValueError as exc:
raise HTTPException(status_code=422, detail=str(exc)) from exc
except AITutorError as exc:
raise HTTPException(status_code=503, detail=str(exc)) from exc
@application.put(
"/api/v1/admin/videos/{video_hash}/title",
response_model=VideoSummary,