From a9a47c390681e4472ae302e81decabbdcda4b184 Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Mon, 29 Jun 2026 19:04:55 -0500 Subject: [PATCH] model used being carried thru --- src/transcription/db/operations.py | 17 +++++++++++------ src/transcription/models.py | 2 ++ src/transcription/providers/base.py | 4 +++- src/transcription/services/transcription.py | 14 ++++++++++++++ src/transcription/services/workflows.py | 2 ++ src/transcription/ui/components/transcript.py | 4 ++-- 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/transcription/db/operations.py b/src/transcription/db/operations.py index ce75d97..00919e1 100644 --- a/src/transcription/db/operations.py +++ b/src/transcription/db/operations.py @@ -51,10 +51,15 @@ def _ensure_sqlite_compat_columns(connection: Connection) -> None: inspector = inspect(connection) table_names = set(inspector.get_table_names()) - if "job" not in table_names: - return - columns = {column["name"] for column in inspector.get_columns("job")} - if "retry_count" not in columns: - connection.execute(text("ALTER TABLE job ADD COLUMN retry_count INTEGER NOT NULL DEFAULT 0")) - logger.warning("Applied SQLite compatibility schema patch table=job column=retry_count default=0") + if "job" in table_names: + job_columns = {column["name"] for column in inspector.get_columns("job")} + if "retry_count" not in job_columns: + connection.execute(text("ALTER TABLE job ADD COLUMN retry_count INTEGER NOT NULL DEFAULT 0")) + logger.warning("Applied SQLite compatibility schema patch table=job column=retry_count default=0") + + if "transcript" in table_names: + transcript_columns = {column["name"] for column in inspector.get_columns("transcript")} + if "model" not in transcript_columns: + connection.execute(text("ALTER TABLE transcript ADD COLUMN model VARCHAR NOT NULL DEFAULT 'unknown'")) + logger.warning("Applied SQLite compatibility schema patch table=transcript column=model default=unknown") diff --git a/src/transcription/models.py b/src/transcription/models.py index fef824e..d2ff2f8 100644 --- a/src/transcription/models.py +++ b/src/transcription/models.py @@ -65,6 +65,8 @@ class Transcript(SQLModel, table=True): """Revision number for this job's transcript history, starting at 0.""" provider: str """Name of the transcription provider used to generate this transcript.""" + model: str + """Model identifier used to generate this transcript revision.""" prompt_name: str """Name of the prompt used to generate this transcript.""" text: str | None = None diff --git a/src/transcription/providers/base.py b/src/transcription/providers/base.py index aa69a73..25a017e 100644 --- a/src/transcription/providers/base.py +++ b/src/transcription/providers/base.py @@ -28,12 +28,14 @@ class TranscriptionResult: prompt_name: str model: str - def to_transcript(self, job_id: UUID) -> Transcript: + def to_transcript(self, job_id: UUID, *, revision: int = 0) -> Transcript: """Convert a TranscriptionResult to a Transcript model instance.""" return Transcript( job_id=job_id, + revision=revision, provider=self.provider, prompt_name=self.prompt_name, + model=self.model, text=self.text, ) diff --git a/src/transcription/services/transcription.py b/src/transcription/services/transcription.py index 7baa74a..3225080 100644 --- a/src/transcription/services/transcription.py +++ b/src/transcription/services/transcription.py @@ -114,6 +114,7 @@ class TranscriptionService(ServiceBase): job_id=job_id, text=result.text, provider=result.provider, + model=result.model, prompt_name=result.prompt_name, session=session, ) @@ -125,6 +126,7 @@ class TranscriptionService(ServiceBase): text: str | None, error_detail: str | None = None, provider: str | None = None, + model: str | None = None, prompt_name: str = DEFAULT_PROMPT_FILE, session: AsyncSession | None = None, ) -> Transcript: @@ -139,6 +141,7 @@ class TranscriptionService(ServiceBase): job_id=job_id, revision=next_revision, provider=provider or self.settings.provider.value, + model=model or _resolve_transcript_model(provider=self.provider, settings=self.settings), prompt_name=prompt_name, text=text, error_detail=error_detail, @@ -181,6 +184,17 @@ def _transcript_job_query(job_id: UUID): ) # fmt: skip +def _resolve_transcript_model(*, provider: TranscriptionProvider, settings: Settings) -> str: + provider_model = getattr(provider, "model", None) + if isinstance(provider_model, str) and provider_model.strip(): + return provider_model + + if settings.provider_model and settings.provider_model.strip(): + return settings.provider_model + + return "unknown" + + async def transcribe_document_image( image_path: str | Path, *, diff --git a/src/transcription/services/workflows.py b/src/transcription/services/workflows.py index f6d1867..9c4a114 100644 --- a/src/transcription/services/workflows.py +++ b/src/transcription/services/workflows.py @@ -126,6 +126,7 @@ async def _finalize_transcribed( text=result.text, error_detail=None, provider=result.provider, + model=result.model, prompt_name=result.prompt_name, session=local_session, ) @@ -142,6 +143,7 @@ async def _finalize_transcribed( text=result.text, error_detail=None, provider=result.provider, + model=result.model, prompt_name=result.prompt_name, session=session, ) diff --git a/src/transcription/ui/components/transcript.py b/src/transcription/ui/components/transcript.py index 463b243..3e317ed 100644 --- a/src/transcription/ui/components/transcript.py +++ b/src/transcription/ui/components/transcript.py @@ -19,7 +19,7 @@ def render_transcript_revision_row( """Render one collapsible row for a single transcript revision.""" status_label = "Failed" if transcript.error_detail else "Transcribed" header = f"Revision {transcript.revision} | {status_label}" - caption = f"{transcript.provider} | {transcript.prompt_name} | {_format_created_at(transcript.created_at)}" + caption = f"{transcript.provider} | {transcript.model} | {_format_created_at(transcript.created_at)}" expansion = ui.expansion(text=header, caption=caption, value=initially_expanded, group="group").classes( f"{classes} rounded-borders bg-blue-grey-10" @@ -27,7 +27,7 @@ def render_transcript_revision_row( with expansion, ui.column().classes("w-full q-gutter-y-sm q-pa-sm"): _metadata_row(label="Provider", value=transcript.provider) - _metadata_row(label="Prompt", value=transcript.prompt_name) + _metadata_row(label="Model", value=transcript.model) _metadata_row(label="Created", value=_format_created_at(transcript.created_at)) if transcript.text: