From 08bbb5775eb310034dc186118780944837989090 Mon Sep 17 00:00:00 2001 From: marco Date: Sun, 21 Jun 2026 05:11:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(compare-record):=20platform=5Fresults=20?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=20list=E2=86=92dict=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=A4=B1=E8=B4=A5=E6=AF=94=E4=BB=B7=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=20422=20=E4=B8=A2=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ComparisonRecordIn.platform_results 误声明为 list,但 pricebot/客户端透传的是 dict ({platform_id: {status,reason,...}})。该字段仅「失败/部分失败」比价 done 帧才带,故 成功比价一直正常入库、部分失败比价上报被 pydantic 422 拒导致不入库、记录页查不到。 改 dict 后用线上真实 body 验证通过;字段仅随 raw_payload 落库、无结构化列、零副作用。 Co-Authored-By: Claude Opus 4.8 --- app/schemas/compare_record.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/schemas/compare_record.py b/app/schemas/compare_record.py index 5f7306c..23c0fea 100644 --- a/app/schemas/compare_record.py +++ b/app/schemas/compare_record.py @@ -71,8 +71,9 @@ 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「卡在哪一步」从这里读。dict{platform_id: {...}} 宽松存(结构由 pricebot 定——是 + # 按平台 id 索引的 dict 而非 list,只作 debug 展示)。 + platform_results: dict = 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