27f76918b2
本 PR 汇合三块运营后台改动(原 #50 仅含其中「加固」一块,已并入本 PR 并关闭)。 ## 1. review 加固 (436b2a3) - 超管防自锁:降级/禁用最后一个 active super_admin 前校验,杜绝零超管死局 - 时间筛选统一 tz-aware(列为 timestamptz),比较绝对时刻、不依赖 DB 会话时区 - 上报审核 / 调余额(set·扣减)加行锁,防并发/连点重复发钱 - ad_audit 复算排序补 id 次级键;health-check 限 finance;调账/拒绝 reason 去空白校验 ## 2. 反馈改版 (5a18dbb) - contact 可选、截图≤6;admin 反馈列表筛选/排序;admin·wallet 接口调整 + docs ## 3. 列表页码分页 (1a7a624) - CursorPage 加 total;新增 offset_paginate(count 与分页同源) - 上报/审计日志从 id 游标改 offset 分页(支持跳页) - 用户 / 提现 / 上报 / 审计日志 四页接入页码分页 测试:admin 套件 47 passed。前端配套改动见 shaguabijia-admin-web。 --------- Co-authored-by: OuYingJun1024 <1034284404@qq.com> Reviewed-on: #51 Co-authored-by: ouzhou <ouzhou@wonderable.ai> Co-committed-by: ouzhou <ouzhou@wonderable.ai>
2.1 KiB
2.1 KiB
feedback — 用户帮助与反馈
模型
app/models/feedback.py· 仓库app/repositories/feedback.py· 接口 feedback · admin admin-feedbacks-list / admin-feedback-handle · ← 索引 · 总览
App「帮助与反馈」每次提交写一行。content 必填;contact 原必填,原型改版后客户端不再采集,新数据存空串(列保持 NOT NULL、免迁移,历史数据仍有值);images 为可选截图(≤6 张)。后台人工处理后置 handled。与 price_report(结构化上报更低价)不同,本表是自由文本反馈。
用在哪 / 增删改查
- C(插入):
POST /api/v1/feedback(multipart:content+ 可选contact+ 可选images;create_feedback)。截图先经core.media落/media/feedback/拿相对路径,再随反馈写入,status='new'。 - U(更新):admin 处理反馈
update_feedback_status→status='handled'(同事务写admin_audit_log)。 - D:无。
- R:admin 反馈列表(可按
status筛)。C 端当前无"我的反馈列表"读接口。
字段
| 列 | 类型 | 约束 / 默认 | 说明(取值 / join) |
|---|---|---|---|
id |
Integer | PK, autoincrement | |
user_id |
Integer | FK→user.id, index, NOT NULL | 提交用户 |
content |
Text | NOT NULL | 反馈正文 |
contact |
String(128) | NOT NULL | 联系方式(微信/QQ/手机)。客户端改版后不再采集,新数据为空串;列仍 NOT NULL |
images |
JSON | nullable | 截图相对 URL 列表 /media/feedback/...;无图为 NULL |
status |
String(16) | NOT NULL, default new |
取值:new(待处理)/ handled(已处理) |
created_at |
DateTime(tz) | server_default now(), index | 提交时间 |
关系 / Join Key
user_id→user.id(多对一)。- admin 处理时被
admin_audit_log记录(target_type='feedback'、target_id=本行 id)。
索引与约束
- PK
id;indexuser_id、created_at。
注意
images用通用JSON(本表未用 JSONB variant,与 comparison/savings 不同)。