generated from john/python-template
Github Copilot service realignment & cleanup
This commit is contained in:
@@ -7,13 +7,12 @@ import pytest
|
||||
|
||||
from transcription.config import Settings
|
||||
from transcription.db.models import Document
|
||||
from transcription.db.models import Job
|
||||
from transcription.db.models import JobSourceStatus
|
||||
from transcription.db.models import JobStatus
|
||||
from transcription.providers.base import TranscriptionResult
|
||||
from transcription.services import ServiceBundle
|
||||
from transcription.services.store import create_document_job
|
||||
from transcription.services.store import create_job_for_document
|
||||
from transcription.services.store import create_upload_job
|
||||
from transcription.services.workflows import advance_job
|
||||
|
||||
|
||||
@@ -31,8 +30,8 @@ def _build_services(default_session_factory) -> ServiceBundle:
|
||||
)
|
||||
object.__setattr__(
|
||||
services,
|
||||
"transcriptions",
|
||||
services.transcriptions.__class__(session_factory=default_session_factory),
|
||||
"sources",
|
||||
services.sources.__class__(session_factory=default_session_factory),
|
||||
)
|
||||
return services
|
||||
|
||||
@@ -53,7 +52,7 @@ class TestPipelineSuccessFlow:
|
||||
transcription_temperature=0.2,
|
||||
transcription_top_p=0.85,
|
||||
)
|
||||
upload_result = await create_upload_job(
|
||||
upload_result = await create_document_job(
|
||||
filename="pipeline.jpg",
|
||||
file_bytes=b"pipeline-bytes",
|
||||
session=async_session,
|
||||
@@ -109,9 +108,13 @@ class TestPipelineSuccessFlow:
|
||||
assert job.user_prompt is not None
|
||||
assert job.temperature == 0.2
|
||||
assert job.top_p == 0.85
|
||||
assert any(job_source.ai_metadata == {"finish_reason": "stop", "usage": {"total_tokens": 42}} for job_source in job.job_sources)
|
||||
assert any(
|
||||
job_source.raw_api_response == {"id": "resp_123", "choices": [{"message": {"content": "Pipeline transcript"}}]}
|
||||
job_source.ai_metadata == {"finish_reason": "stop", "usage": {"total_tokens": 42}}
|
||||
for job_source in job.job_sources
|
||||
)
|
||||
assert any(
|
||||
job_source.raw_api_response
|
||||
== {"id": "resp_123", "choices": [{"message": {"content": "Pipeline transcript"}}]}
|
||||
for job_source in job.job_sources
|
||||
)
|
||||
assert all(job_source.error_detail is None for job_source in job.job_sources)
|
||||
@@ -132,7 +135,7 @@ class TestPipelineSuccessFlow:
|
||||
|
||||
create_result = await create_job_for_document(
|
||||
document_id=document.id,
|
||||
uploads=[
|
||||
source_files=[
|
||||
("page-01.jpg", b"one"),
|
||||
("page-02.jpg", b"two"),
|
||||
("page-03.jpg", b"three"),
|
||||
@@ -176,7 +179,9 @@ class TestPipelineSuccessFlow:
|
||||
assert len(job.job_sources) == 3
|
||||
assert all(job_source.status == JobSourceStatus.TRANSCRIBED for job_source in job.job_sources)
|
||||
assert all(job_source.raw_transcription for job_source in job.job_sources)
|
||||
assert all(job_source.source is not None and job_source.source.raw_transcription for job_source in job.job_sources)
|
||||
assert all(
|
||||
job_source.source is not None and job_source.source.raw_transcription for job_source in job.job_sources
|
||||
)
|
||||
assert job.prompt_name == "transcribe_document.md"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -195,7 +200,7 @@ class TestPipelineSuccessFlow:
|
||||
|
||||
create_result = await create_job_for_document(
|
||||
document_id=document.id,
|
||||
uploads=[
|
||||
source_files=[
|
||||
("page-01.jpg", b"one"),
|
||||
("page-02.jpg", b"two"),
|
||||
],
|
||||
@@ -261,7 +266,7 @@ class TestPipelineSuccessFlow:
|
||||
|
||||
create_result = await create_job_for_document(
|
||||
document_id=document.id,
|
||||
uploads=[
|
||||
source_files=[
|
||||
("page-01.jpg", b"one"),
|
||||
("page-02.jpg", b"two"),
|
||||
],
|
||||
@@ -278,8 +283,8 @@ class TestPipelineSuccessFlow:
|
||||
page_one.raw_transcription = "existing transcript"
|
||||
page_two.status = JobSourceStatus.PENDING
|
||||
page_two.raw_transcription = None
|
||||
await services.transcriptions.update_job_source(job_source=page_one, session=async_session)
|
||||
await services.transcriptions.update_job_source(job_source=page_two, session=async_session)
|
||||
await services.sources.update_job_source(job_source=page_one, session=async_session)
|
||||
await services.sources.update_job_source(job_source=page_two, session=async_session)
|
||||
await services.jobs.update_job_state(job_id=job.id, status=JobStatus.QUEUED, session=async_session)
|
||||
await async_session.commit()
|
||||
|
||||
@@ -334,7 +339,7 @@ class TestPipelineFailureFlow:
|
||||
):
|
||||
"""Upload followed by worker processing persists error detail and failed status on the job."""
|
||||
settings = Settings(openrouter_api_key="test-key", upload_dir=tmp_path)
|
||||
upload_result = await create_upload_job(
|
||||
upload_result = await create_document_job(
|
||||
filename="pipeline.jpg",
|
||||
file_bytes=b"pipeline-bytes",
|
||||
session=async_session,
|
||||
@@ -371,7 +376,9 @@ class TestPipelineFailureFlow:
|
||||
assert job.status == JobStatus.FAILED
|
||||
assert all(job_source.raw_transcription is None for job_source in job.job_sources)
|
||||
assert any(job_source.error_detail is not None for job_source in job.job_sources)
|
||||
error_detail = next(job_source.error_detail for job_source in job.job_sources if job_source.error_detail is not None)
|
||||
error_detail = next(
|
||||
job_source.error_detail for job_source in job.job_sources if job_source.error_detail is not None
|
||||
)
|
||||
assert "pipeline provider failure" in error_detail
|
||||
assert "[internal_unexpected_error]" in error_detail
|
||||
assert "error_id=" in error_detail
|
||||
|
||||
Reference in New Issue
Block a user