9ec9d2389d
加 taobao_deeplink_invalid_at 列(迁移+model);mark_taobao_deeplink_invalid 按 shopId 标记所有行;lookup_nearest 过滤失效淘宝候选;新增 POST /internal/store-mapping/invalidate。+ 7 单测。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Reviewed-on: #53
77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
"""平台店铺映射内部上报的收发模型。
|
|
|
|
pricebot 在淘宝比价拿到 shopId 后 server→server POST 一行映射。所有字段可空(按比价
|
|
角色稀疏填充),server 端只校验共享密钥 + 幂等(trace_id)落库。
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class StoreMappingIn(BaseModel):
|
|
"""一次比价的跨平台店铺映射上报体(一行)。"""
|
|
|
|
trace_id: str
|
|
business_type: str = "food"
|
|
source_platform: str | None = None
|
|
|
|
# 跨平台身份(按角色稀疏填充)
|
|
id_taobao: str | None = None
|
|
name_taobao: str | None = None
|
|
id_meituan: str | None = None
|
|
name_meituan: str | None = None
|
|
id_jd: str | None = None
|
|
name_jd: str | None = None
|
|
|
|
# 地理
|
|
city: str | None = None
|
|
geohash: str | None = None
|
|
lng: float | None = None
|
|
lat: float | None = None
|
|
taobao_address: str | None = None
|
|
|
|
# 溯源
|
|
source_device_id: str | None = None
|
|
source_user_id: int | None = None
|
|
|
|
# 淘宝原料(可复跳 / 可重解析 / 调试)
|
|
taobao_share_url: str | None = None
|
|
taobao_resolved_url: str | None = None
|
|
taobao_deeplink: str | None = None
|
|
|
|
# 美团原料(poi_id_str 非稳定主键, 单列存; 见 model 注释)
|
|
meituan_poi_id_str: str | None = None
|
|
meituan_share_url: str | None = None
|
|
meituan_resolved_url: str | None = None
|
|
meituan_deeplink: str | None = None
|
|
|
|
# 京东原料(venderId 单列存, storeId 进 id_jd; 见 model 注释)
|
|
jd_vender_id: str | None = None
|
|
jd_share_url: str | None = None
|
|
jd_resolved_url: str | None = None
|
|
jd_deeplink: str | None = None
|
|
|
|
attrs: dict | None = None
|
|
|
|
|
|
class StoreMappingOut(BaseModel):
|
|
"""上报结果。inserted=1 为新建该 trace 行,0 为合并进已存在行(填空,不覆盖);
|
|
row_id 为该 trace 对应行 id。"""
|
|
|
|
inserted: int
|
|
row_id: int | None = None
|
|
|
|
|
|
class StoreMappingInvalidateIn(BaseModel):
|
|
"""标记某平台某 shopId 的缓存 deeplink 失效(pricebot 撞错误页回退时上报)。"""
|
|
|
|
platform: str # 目前只支持 "taobao"
|
|
shop_id: str # 失效的店铺 id(淘宝 = shopId = id_taobao)
|
|
|
|
|
|
class StoreMappingInvalidateOut(BaseModel):
|
|
"""标记结果。affected = 本次新标记失效的行数(按 shopId 标记所有匹配行)。"""
|
|
|
|
ok: bool
|
|
affected: int
|