e69788eb41
运营后台审核用户上报的「某平台比我们算的最低价更便宜」+截图。 - routers/price_report.py:列表 + /summary、approve|reject(require operator) - repositories:list_price_reports + price_report_summary(queries)、review_price_report(mutations) - core/rewards.py:PRICE_REPORT_REWARD_COINS=1000(通过即发,grant_coins 由 router 同事务调) - admin/main.py:注册 price_report_router 跨端配套:前端 admin-web feat/price-report-review;端上金币刷新 android feat/price-report-review。 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: xianze <ze@192.168.0.128> Reviewed-on: #33 Co-authored-by: zhangxianze <zhangxianze@wonderable.ai> Co-committed-by: zhangxianze <zhangxianze@wonderable.ai>
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
"""admin 上报更低价审核 schemas。"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class PriceReportOut(BaseModel):
|
|
"""admin 列表项:price_report 全字段(审核要看的快照 + 截图 + 状态 + 奖励)。"""
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
user_id: int
|
|
comparison_record_id: int | None = None
|
|
# 选中比价记录的快照
|
|
store_name: str | None = None
|
|
dish_summary: str | None = None
|
|
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] = []
|
|
# 审核
|
|
status: str
|
|
reject_reason: str | None = None
|
|
reward_coins: int | None = None
|
|
reviewed_at: datetime | None = None
|
|
created_at: datetime
|
|
|
|
|
|
class PriceReportRejectRequest(BaseModel):
|
|
reason: str = Field(min_length=1, max_length=256, description="拒绝理由,用户端记录页会看到")
|
|
|
|
|
|
class PriceReportSummary(BaseModel):
|
|
"""审核台顶部各状态计数。"""
|
|
|
|
pending: int
|
|
approved: int
|
|
rejected: int
|
|
total: int
|