f868414966
- 新增反馈审核字段和迁移,支持 pending/adopted/rejected、未采纳原因和采纳金币 - 增加用户端反馈历史 records 接口和 admin 采纳/拒绝接口 - 采纳时同事务写状态、金币流水和审计日志,拦截重复审核 - 验证:pytest tests/test_feedback.py tests/test_admin_write.py tests/test_admin_read.py --------- Co-authored-by: lowmaster-chen <1119780489@qq.com> Reviewed-on: #66 Co-authored-by: chenshuobo <chenshuobo@wonderable.ai> Co-committed-by: chenshuobo <chenshuobo@wonderable.ai>
51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
"""反馈相关响应 schema。请求是 multipart 表单(content/contact/images),在路由里直接校验。"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class FeedbackOut(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
status: str
|
|
created_at: datetime
|
|
|
|
|
|
class FeedbackQrConfigOut(BaseModel):
|
|
"""反馈页二维码卡配置(运营后台可配)。App 反馈页据此渲染整张「加群二维码」卡。
|
|
|
|
image_url 是相对 /media 路径(客户端按自己的 BASE_URL 拼绝对地址),为空 → 客户端走本地兜底。
|
|
"""
|
|
|
|
enabled: bool
|
|
image_url: str | None = None
|
|
title: str
|
|
group_name: str
|
|
subtitle: str
|
|
|
|
|
|
class FeedbackRecordOut(BaseModel):
|
|
id: int
|
|
content: str
|
|
images: list[str] = Field(default_factory=list)
|
|
status: str
|
|
reject_reason: str | None = None
|
|
reward_coins: int | None = None
|
|
created_at: datetime
|
|
|
|
|
|
class FeedbackRecordCountsOut(BaseModel):
|
|
all: int = 0
|
|
pending: int = 0
|
|
adopted: int = 0
|
|
rejected: int = 0
|
|
|
|
|
|
class FeedbackRecordsOut(BaseModel):
|
|
records: list[FeedbackRecordOut]
|
|
counts: FeedbackRecordCountsOut
|
|
|