4506677483
Co-authored-by: xianze <ze@192.168.0.138> Reviewed-on: #13 Co-authored-by: zhangxianze <zhangxianze@wonderable.ai> Co-committed-by: zhangxianze <zhangxianze@wonderable.ai>
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
"""上报更低价 响应 schema。
|
|
|
|
请求是 multipart 表单(comparison_record_id / reported_platform_id / reported_price / images),
|
|
在路由里直接校验,不单独建请求 schema(同 feedback)。价格对外统一「分」(cents)。
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class ReportSubmitOut(BaseModel):
|
|
"""提交上报后的回执。"""
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
status: str
|
|
created_at: datetime
|
|
|
|
|
|
class ReportRecordOut(BaseModel):
|
|
"""一条上报记录(「上报记录」列表用)。价格单位:分。"""
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
store_name: str | None = None
|
|
dish_summary: str | None = None
|
|
# 原最低价(上报前系统给出的最低,反查比价记录 best_*)
|
|
original_platform_id: str | None = None
|
|
original_platform_name: str | None = None
|
|
original_price_cents: int | None = None
|
|
# 用户上报的更低价
|
|
reported_platform_id: str
|
|
reported_platform_name: str
|
|
reported_price_cents: int
|
|
images: list[str] = Field(default_factory=list)
|
|
status: str # pending / approved / rejected
|
|
reject_reason: str | None = None
|
|
reward_coins: int | None = None
|
|
created_at: datetime
|
|
|
|
|
|
class ReportRecordCounts(BaseModel):
|
|
"""四态计数,供前端筛选 chip 显示(全部/审核中/已通过/未通过)。"""
|
|
|
|
all: int = 0
|
|
pending: int = 0
|
|
approved: int = 0
|
|
rejected: int = 0
|
|
|
|
|
|
class ReportRecordsOut(BaseModel):
|
|
records: list[ReportRecordOut]
|
|
counts: ReportRecordCounts
|