"""phash blacklist: zdegenerowane wartości phasha Revision ID: 0025_phash_blacklist Revises: 0024_saved_searches Create Date: 2026-07-27 Audyt duplikatów po phashu wykazał 73 wartości występujące przy ≥10 scenach każda (łącznie 4375 scen), z rekordzistką dzieloną przez 892 sceny o 892 różnych tytułach. To zaślepki i czarne klatki, nie odciski scen. Tabela pamięta takie wartości na stałe, żeby po wyczyszczeniu wierszy nie wracały przy kolejnych ingestach. """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "0025_phash_blacklist" down_revision: str | None = "0024_saved_searches" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.create_table( "phash_blacklist", sa.Column("value", sa.String(length=128), nullable=False), sa.Column("scene_count", sa.Integer(), nullable=False), sa.Column( "detected_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False, ), sa.PrimaryKeyConstraint("value", name="pk_phash_blacklist"), ) def downgrade() -> None: op.drop_table("phash_blacklist")