fix(compare): platform_results 接受 dict, 修成功比价记录被 422 拒
客户端 fromComparison 把 done.params.platform_results(按 platform_id 键的 dict) 原样上报, 但 schema 误声明为 list → pydantic 422 → 成功记录从不落库, 记录页只剩 失败/终止 (2026-06-17 加该字段上报后复现)。改 dict | list 宽松存(仅进 raw_payload)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -78,8 +78,12 @@ class ComparisonRecordIn(BaseModel):
|
||||
comparison_results: list[ComparisonResultIn] = Field(default_factory=list)
|
||||
# 逐平台结局摘要(含失败平台的细分原因 status: store_not_found/items_not_found/below_minimum/
|
||||
# unsupported/...)。来自 done.params.platform_results,客户端透传;落 raw_payload(不单列),
|
||||
# admin「卡在哪一步」从这里读。list[dict] 宽松存(结构由 pricebot 定,只作 debug 展示)。
|
||||
platform_results: list = Field(default_factory=list)
|
||||
# admin「卡在哪一步」从这里读。
|
||||
# ⚠️ pricebot done.params.platform_results 是 **dict(按 platform_id 键)**, 不是 list ——
|
||||
# 客户端 fromComparison 原样 optJSONObject 透传上来 (见 android Protocol.kt)。早先误声明成
|
||||
# list 导致每条成功记录 422 被拒、记录页只剩失败/终止 (2026-06-17 引入 platform_results 上报后复现)。
|
||||
# 结构由 pricebot 定、仅作 debug 展示, 宽松存 dict; 兼容老的 list 形态以防回退。
|
||||
platform_results: dict | list = Field(default_factory=dict)
|
||||
skipped_dish_count: int | None = None
|
||||
skipped_dish_names: list[str] = Field(default_factory=list)
|
||||
total_dish_count: int | None = None
|
||||
|
||||
Reference in New Issue
Block a user