# SPDX-License-Identifier: GPL-3.0-only """The processing pipeline: audio -> transcript -> summary, using the provider layer. Run as a background task after upload. Updates the recording's status as it goes so the web UI can show progress (queued -> transcribing -> summarising -> done). """ from __future__ import annotations from . import store from .providers import build_summariser, build_transcriber def process(rec_id: str) -> None: path = store.audio_path(rec_id) try: store.set_status(rec_id, "transcribing") transcript = build_transcriber().transcribe(path) store.set_status(rec_id, "summarising") summary = build_summariser().summarise(rec_id, transcript.text) store.set_result( rec_id, language=transcript.language, transcript={ "text": transcript.text, "segments": [s.model_dump() for s in transcript.segments], }, summary={ "overview": summary.overview, "key_points": summary.key_points, "action_items": summary.action_items, }, ) except Exception as exc: # surface any provider/network error to the UI store.set_status(rec_id, "error", f"{type(exc).__name__}: {exc}")