"""add user.debug_trace_enabled + comparison_record.trace_url

调试链接权限功能：
  - user.debug_trace_enabled：运营后台给指定用户开「复制调试链接」权限
  - comparison_record.trace_url：比价记录页「复制调试链接」的数据（pricebot done 帧给，
    dir 名含落盘时分秒、前端/server 拼不出，必须落库）

注：本迁移最初基于旧 main（#31，双 head）写、down_revision 曾指向那对父；但 #33 已用
a8c47fc4dc39 合并了那对双 head，故改为线性接在 a8c47fc4dc39 之后、只负责加两列
（避免与 a8c47fc4dc39 平行再造一个双 head）。

Revision ID: f8d3b1e60a27
Revises: a8c47fc4dc39
Create Date: 2026-06-10 02:40:00.000000

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = "f8d3b1e60a27"
down_revision: Union[str, Sequence[str], None] = "a8c47fc4dc39"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # sa.false() 渲染成 PG 的 false / SQLite 的 0，两端兼容（避免字符串 "false" 在 SQLite 上存歪）
    op.add_column(
        "user",
        sa.Column(
            "debug_trace_enabled",
            sa.Boolean(),
            nullable=False,
            server_default=sa.false(),
        ),
    )
    op.add_column(
        "comparison_record",
        sa.Column("trace_url", sa.String(length=512), nullable=True),
    )


def downgrade() -> None:
    op.drop_column("comparison_record", "trace_url")
    op.drop_column("user", "debug_trace_enabled")
