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