"""store_mapping 加京东 deeplink 失效标记列 jd_deeplink_invalid_at Revision ID: store_mapping_jd_dl_invalid Revises: store_mapping_tb_dl_invalid Create Date: 2026-06-15 00:00:00.000000 京东同淘宝: 缓存的店内搜索 deeplink 会失效(打开是"当前门店超出配送范围"页)。pricebot 比价撞到 失效页时回退正常搜店, 并 server→server 通知把该 storeId 的 deeplink 标记失效。本列记失效时刻 (NULL=有效); lookup 反查时过滤掉已失效的京东候选, 不再返回坏 deeplink。 与淘宝 taobao_deeplink_invalid_at 对称; 用时间戳而非布尔: 留痕可审计、可统计失效率, 不销毁原 deeplink。 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = 'store_mapping_jd_dl_invalid' down_revision: Union[str, Sequence[str], None] = 'store_mapping_tb_dl_invalid' 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('jd_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('jd_deeplink_invalid_at')