"""store_mapping 加淘宝 deeplink 失效标记列 taobao_deeplink_invalid_at Revision ID: store_mapping_tb_dl_invalid Revises: coupon_engage_per_package Create Date: 2026-06-15 00:00:00.000000 缓存的淘宝店内搜索 deeplink 会失效(打开是"页面出错了"降级页)。pricebot 比价撞到错误页时 回退正常搜店, 并 server→server 通知把该 shopId 的 deeplink 标记失效。本列记失效时刻 (NULL=有效); lookup 反查时过滤掉已失效的淘宝候选, 不再返回坏 deeplink。 只加淘宝一列(当前只接淘宝); 用时间戳而非布尔: 留痕可审计、可统计失效率, 且不销毁原 deeplink。 无需索引: 过滤总叠在 name_taobao== 之后, 候选集已小。 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = 'store_mapping_tb_dl_invalid' down_revision: Union[str, Sequence[str], None] = 'coupon_engage_per_package' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: with op.batch_alter_table('store_mapping', schema=None) as batch_op: batch_op.add_column(sa.Column('taobao_deeplink_invalid_at', sa.DateTime(timezone=True), nullable=True)) def downgrade() -> None: with op.batch_alter_table('store_mapping', schema=None) as batch_op: batch_op.drop_column('taobao_deeplink_invalid_at')