5efe624340
- 反馈:新增 GET /admin/api/feedbacks/summary(待审核/已采纳/未采纳/合计计数); 列表联表带出完整手机号 + 昵称(供 admin 点手机号查该用户全部反馈) - 低价审核:列表加 sort_by/sort_order(提交时间排序);联表带出手机号/昵称, 并按 comparison_record_id 关联比价记录带出 trace_id/trace_url + 机型/ROM/Android/app 版本 - feedback 表新增 app_version/device_model/rom_name/android_version 四列 + alembic 迁移; /api/v1/feedback 提交接口接收并落库,供 admin 反馈页展示「提交版本号」「机型OS版本」 (字段可空,旧端不传不影响提交) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: zzhyyyyy <2685922758@qq.com> Reviewed-on: #94 Co-authored-by: zhuzihao <zhuzihao@wonderable.ai> Co-committed-by: zhuzihao <zhuzihao@wonderable.ai>
57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
"""admin 反馈工单 schemas。"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from app.core.rewards import FEEDBACK_REWARD_MAX_COINS
|
|
|
|
|
|
class FeedbackOut(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
user_id: int
|
|
content: str
|
|
contact: str
|
|
images: list[str] | None = None
|
|
status: str
|
|
reject_reason: str | None = None
|
|
reward_coins: int | None = None
|
|
review_note: str | None = None
|
|
reviewed_by_admin_id: int | None = None
|
|
reviewed_at: datetime | None = None
|
|
created_at: datetime
|
|
# 提交端环境快照(feedback 表列):提交版本号 / 机型OS版本;改版前的历史反馈为 None
|
|
app_version: str | None = None
|
|
device_model: str | None = None
|
|
rom_name: str | None = None
|
|
android_version: str | None = None
|
|
# 联表瞬态字段(queries._attach_user_info 挂):列表展示完整手机号,点手机号查该用户全部反馈
|
|
phone: str | None = None
|
|
nickname: str | None = None
|
|
|
|
|
|
class FeedbackApproveRequest(BaseModel):
|
|
reward_coins: int = Field(
|
|
ge=1,
|
|
le=FEEDBACK_REWARD_MAX_COINS,
|
|
description="采纳后发放金币数",
|
|
)
|
|
note: str | None = Field(default=None, max_length=256, description="采纳要点/审核备注")
|
|
|
|
|
|
class FeedbackRejectRequest(BaseModel):
|
|
reason: str = Field(min_length=1, max_length=256, description="未采纳原因,用户端可见")
|
|
note: str | None = Field(default=None, max_length=256, description="运营内部审核备注")
|
|
|
|
|
|
class FeedbackSummary(BaseModel):
|
|
"""审核台顶部各状态计数(pending 含历史 new 态)。"""
|
|
|
|
pending: int
|
|
adopted: int
|
|
rejected: int
|
|
total: int
|