"""add eval_run_cases.is_pass (Спринт 8a — все кейсы, не только fails) Revision ID: l8f0e6d78i45 Revises: k7e9d5c67h34 Create Date: 2026-05-02 14:50:00.000000 Расширяем eval_run_cases: храним каждый прогнанный кейс, а не только расхождения. Это нужно для UI «Все кейсы прогона» с фильтром по pass/fail. Существующие записи (до этой миграции) — только fails, ставим им is_pass=false. """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = 'l8f0e6d78i45' down_revision: Union[str, None] = 'k7e9d5c67h34' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: with op.batch_alter_table('eval_run_cases') as batch: batch.add_column(sa.Column('is_pass', sa.Boolean(), nullable=True)) # Старые записи — это исключительно fails (pre-8a политика хранения). op.execute("UPDATE eval_run_cases SET is_pass = 0 WHERE is_pass IS NULL") with op.batch_alter_table('eval_run_cases') as batch: batch.alter_column('is_pass', nullable=False) def downgrade() -> None: with op.batch_alter_table('eval_run_cases') as batch: batch.drop_column('is_pass')