"""上报更低价 响应 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