"""drop the dead per-tag centroid subsystem (#1189 cleanup)

The v2 pivot replaced per-tag SigLIP centroids with learned heads + CCIP.
Nothing read the centroids anymore — they were recomputed (on merge + a daily
beat) but never consumed for suggestions or auto-apply. Remove the storage +
its two now-unused settings columns. (The recompute tasks, beat, endpoint,
service, and UI card are removed in the same change.)

Revision ID: 0066
Revises: 0065
Create Date: 2026-06-30
"""
from typing import Sequence, Union

import sqlalchemy as sa
from alembic import op

revision: str = "0066"
down_revision: Union[str, None] = "0065"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    op.drop_table("tag_reference_embedding")
    op.drop_column("ml_settings", "centroid_similarity_threshold")
    op.drop_column("ml_settings", "min_reference_images")


def downgrade() -> None:
    op.add_column(
        "ml_settings",
        sa.Column(
            "min_reference_images", sa.Integer(), nullable=False,
            server_default="5",
        ),
    )
    op.add_column(
        "ml_settings",
        sa.Column(
            "centroid_similarity_threshold", sa.Float(), nullable=False,
            server_default="0.55",
        ),
    )
    op.create_table(
        "tag_reference_embedding",
        sa.Column("tag_id", sa.Integer(), nullable=False),
        sa.Column("embedding", sa.LargeBinary(), nullable=False),
        sa.Column("reference_count", sa.Integer(), nullable=False),
        sa.Column("model_version", sa.String(length=128), nullable=False),
        sa.Column(
            "updated_at", sa.DateTime(timezone=True),
            server_default=sa.func.now(), nullable=False,
        ),
        sa.ForeignKeyConstraint(["tag_id"], ["tag.id"], ondelete="CASCADE"),
        sa.PrimaryKeyConstraint("tag_id"),
    )
