feat(store-mapping): JD 缓存 deeplink 失效标记(对标淘宝)

store_mapping 加 jd_deeplink_invalid_at 列 + 迁移(down_revision=store_mapping_tb_dl_invalid);
mark_jd_deeplink_invalid 按 id_jd 标记 + lookup_nearest 过滤已失效 JD 候选;
/internal/store-mapping/invalidate 接 jd 分支。配 pricebot 京东缓存 deeplink 失效回退。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-15 20:41:39 +08:00
parent 9ec9d2389d
commit 43db832b2c
5 changed files with 101 additions and 6 deletions
+6 -3
View File
@@ -95,11 +95,14 @@ def invalidate_store_mapping(
x_internal_secret: Annotated[str | None, Header()] = None,
) -> StoreMappingInvalidateOut:
_check_secret(x_internal_secret)
if payload.platform != "taobao":
# 当前只接淘宝; 其它平台先 no-op(affected=0), 不报错 — 向后兼容 pricebot 将来扩展。
if payload.platform == "taobao":
affected = repo.mark_taobao_deeplink_invalid(db, payload.shop_id)
elif payload.platform == "jd":
affected = repo.mark_jd_deeplink_invalid(db, payload.shop_id)
else:
# 当前只接淘宝/京东; 其它平台先 no-op(affected=0), 不报错 — 向后兼容 pricebot 将来扩展。
logger.info("store_mapping invalidate 跳过: platform=%s 暂不支持", payload.platform)
return StoreMappingInvalidateOut(ok=True, affected=0)
affected = repo.mark_taobao_deeplink_invalid(db, payload.shop_id)
logger.info(
"store_mapping invalidate platform=%s shop_id=%s → 标记失效 %d",
payload.platform, payload.shop_id, affected,