Implementation: - Performance knobs: llm_batch_max_rows, llm_concurrency, insert_concurrency, multi_lang_mode, batch_aggressiveness, max_in_flight_batches - Alembic migration f7a8b9c0d1e2 (idempotent, nullable, non-destructive) - LLM provider capabilities: throughput_class, reasoning_control, supports_json_object, default/max_llm_concurrency - TargetSchemaValidationRequest with conditional validator (sqllab/direct_db) - Scheduler: background dispatch, local imports for lazy bootstrap GRACE-Poly compliance: - Semantic anchors on orchestrator_aggregator, orchestrator_sql, llm_provider - Shared module _llm_http.py: _apply_reasoning_control extraction (INV_4) - Alembic migration anchors per C3/C1 template - Four renamed Svelte components: RunOutcomeSummary, DetectionQualityCard, LanguageStatList, SourceLanguageOverride QA (this session): - 11 backend test regressions fixed: spec'd MagicMock null fields for new columns, _check_translation_cache_bulk retarget, scheduler mock wiring, language_detection=auto assertions, token budget constant update - 4 frontend eslint errors fixed: SvelteSet/SvelteDate imports, unused lang parameter, dead isTransientError - Production bugfix: job_to_response() mapped 6 missing fields - Pre-existing auth test failure documented (dependencies.py untouched) - Axiom: 6440 contracts, 0 warnings
50 lines
2.2 KiB
Python
50 lines
2.2 KiB
Python
# #region Alembic.AddTranslationRunObservabilityMetrics [C:3] [TYPE Module] [SEMANTICS alembic,translate,metrics]
|
|
# @defgroup Alembic Persist independent source, translation, and insert metrics for translation runs.
|
|
|
|
"""add translation run observability metrics
|
|
|
|
Revision ID: e6f7a8b9c0d1
|
|
Revises: f5e6d7c8b9a0
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
|
|
revision: str = "e6f7a8b9c0d1"
|
|
down_revision: str | Sequence[str] | None = "f5e6d7c8b9a0"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
|
|
# #region Alembic.AddTranslationRunObservabilityMetrics.Upgrade [C:3] [TYPE Function] [SEMANTICS alembic,translate,metrics]
|
|
# @ingroup Alembic
|
|
# @BRIEF Add nullable run metrics so historical runs remain explicitly unknown.
|
|
def upgrade() -> None:
|
|
op.add_column("translation_runs", sa.Column("source_records_read", sa.Integer(), nullable=True))
|
|
op.add_column("translation_runs", sa.Column("eligible_records", sa.Integer(), nullable=True))
|
|
op.add_column("translation_runs", sa.Column("translated_records", sa.Integer(), nullable=True))
|
|
op.add_column("translation_runs", sa.Column("same_language_skipped_records", sa.Integer(), nullable=True))
|
|
op.add_column("translation_runs", sa.Column("insert_rows_prepared", sa.Integer(), nullable=True))
|
|
op.add_column("translation_runs", sa.Column("insert_rows_affected", sa.Integer(), nullable=True))
|
|
|
|
|
|
# #endregion Alembic.AddTranslationRunObservabilityMetrics.Upgrade
|
|
|
|
# #region Alembic.AddTranslationRunObservabilityMetrics.Downgrade [C:2] [TYPE Function] [SEMANTICS alembic,translate,metrics]
|
|
# @ingroup Alembic
|
|
# @BRIEF Remove translation-run observability metrics.
|
|
def downgrade() -> None:
|
|
op.drop_column("translation_runs", "insert_rows_affected")
|
|
op.drop_column("translation_runs", "insert_rows_prepared")
|
|
op.drop_column("translation_runs", "same_language_skipped_records")
|
|
op.drop_column("translation_runs", "translated_records")
|
|
op.drop_column("translation_runs", "eligible_records")
|
|
op.drop_column("translation_runs", "source_records_read")
|
|
|
|
|
|
# #endregion Alembic.AddTranslationRunObservabilityMetrics.Downgrade
|
|
# #endregion Alembic.AddTranslationRunObservabilityMetrics
|