浏览代码

新增用户审核不通过原因规格

qmj 4 小时之后
父节点
当前提交
696241a2a2
共有 1 个文件被更改,包括 60 次插入0 次删除
  1. 60 0
      specs/021-user-audit-rejection/spec.md

+ 60 - 0
specs/021-user-audit-rejection/spec.md

@@ -0,0 +1,60 @@
+# 用户审核不通过原因
+
+## 背景
+
+平台目前只支持“待审核”和“审核通过”两种用户审核状态,管理员无法明确记录商家或骑手资料审核不通过的原因。后续用户端需要根据审核结果提示用户补充资料,但本次不修改 App 前端。
+
+## 目标
+
+- 用户审核状态增加“审核不通过”。
+- 管理员审核商家或骑手资料不通过时,必须输入具体原因。
+- 原因随用户信息返回,供后续 App 展示和资料补充流程使用。
+
+## 数据模型
+
+- `info_user.audit_status` 状态语义:
+  - `0`:待审核。
+  - `1`:审核通过。
+  - `2`:审核不通过。
+- `info_user` 新增 `audit_reject_reason TEXT NULL`,Java 属性名为 `auditRejectReason`。
+- 不对审核不通过原因设置应用层字符数限制。
+- 当审核状态不是 `2` 时,保存操作必须将 `audit_reject_reason` 清空,避免旧原因与当前状态不一致。
+
+## 平台管理端
+
+- 修改商家审核页 `sjuser.vue` 和骑手审核页 `peisus.vue`。
+- 审核状态选项增加“审核不通过”。
+- 选择“审核不通过”时显示多行文本输入框,由管理员按实际情况自由填写。
+- 原因去除首尾空白后为空时禁止提交,并显示国际化错误提示。
+- 选择“待审核”或“审核通过”时隐藏原因输入框,提交前清空旧原因。
+- 新增用户可见文本必须补齐简体中文、繁体中文、英文和越南语。
+
+## 后端行为
+
+- 平台修改用户接口继续使用 `PUT /infouser/user`。
+- 当 `auditStatus = "2"` 时,`auditRejectReason` 去除首尾空白后必须非空;否则返回国际化业务错误,不更新用户。
+- 当 `auditStatus` 不等于 `"2"` 时,后端主动将 `auditRejectReason` 设为 `null`,不能只依赖前端清理。
+- 用户列表、平台用户详情和 App 用户信息接口沿用现有 `InfoUser` 返回结构,新增返回 `auditRejectReason`。
+- Entity、MyBatis `resultMap`、查询、插入和更新映射全部补齐该字段。
+
+## 数据库变更
+
+- 只将迁移 SQL 写入 `updatesql/sql.md`,不直接执行数据库变更。
+- SQL 为 `info_user` 新增 `audit_reject_reason TEXT NULL`。
+- 为 `sys_user_audit` 字典新增值 `2`,标签为“审核不通过”,供平台审核状态选项使用。
+
+## 验收标准
+
+1. 商家和骑手审核页均能选择“审核不通过”。
+2. 选择“审核不通过”但未填写有效原因时,前端和后端都拒绝保存。
+3. 填写原因后可以保存,重新打开用户资料时能正确回显。
+4. 将状态改为“待审核”或“审核通过”后,数据库中的旧原因被清空。
+5. `getuserinfo` 等返回用户信息的现有接口包含 `auditRejectReason`。
+6. 本次不修改商家或骑手 App 前端。
+
+## 非目标
+
+- 不提供固定原因或预设原因选项。
+- 不建立审核历史记录表。
+- 不记录每次审核的管理员、时间或历史原因。
+- 不实现 App 端红色提示、资料高亮或字段只读控制。