Skip to content

材质审核技术方案

Steven Qiu edited this page Oct 12, 2021 · 1 revision

新增数据表

moderation_whitelist

字段 描述
user_id 整型值,表示用户 UID
operator 整型值,表示授予该用户免审权限的管理员 UID
joined_at 字符串,表示用户被授予免审权限的时间

moderation_record

字段 描述
tid 整型值,表示对应材质的 TID
porn_score 机审鉴黄评分;[0,100] 间整数;默认值 -1,表示未进行机审鉴黄
porn_label 机审鉴黄类型;字符串;默认值空
politics_score 机审鉴政评分;[0,100] 间整数;默认值 -1,表示未进行机审鉴政
politics_label 机审鉴政类型;字符串;默认值空
review_state 审核状态;MISS 不满足机审条件(长或宽小于 50px)、USER 用户拥有免审权限、MANUAL 等待人工审核,APPROVED 审核通过,REJECTED 审核拒绝;默认 MANUAL
operator 整型值,表示材质的审核者的 UID,允许 null(机审直接通过或机审转人工时)
updated_at 字符串,表示材质最后被审核的时间

插件配置

相关设置项设于 .env 文件中。

  • 机审阈值
    • 得分 小于 该阈值的材质自动过审
    • 默认值 60
  • APPID
  • BucketName
  • Region
  • SecretId
  • SecretKey
  • BizType

审核时机

上传新材质时

触发 texture.uploaded 事件后,将对应材质先设为私密,触发审核。

私有材质转公开时

触发 texture.privacy.success 事件且材质状态更新为公开后,将对应材质先设为私密,触发审核。

审核触发

以下操作会触发审核:

  • 上传公开材质
    • 直接触发审核流程
  • 私有材质转为公开
    • 若材质 review_stateREJECTED,则 拒绝 将私有材质转为公开
      • 将「拒绝并设为隐私」的材质再次设为公开的情况
    • 若材质 review_stateMISSUSERMANUALAPPROVED,则无需操作
      • 材质无需审核,或已在审核流程中,或已审核过
    • 若材质无对应审核记录,则触发审核
      • 上传时即为私密的材质转公开

审核流程

  1. 如材质符合下述任一情况,则 review_state 字段设为对应值,operator 字段的值留空,流程结束
    • 材质长小于等于 50px,或宽小于等于 50px,设为 MISS
    • 材质上传者拥有材质免审权限,设为 USER
  2. 判断材质是否已审核过(符合以下任一情况),如已审核过则直接返回先前的审核结果
    • 存在 TID 相同的材质审核记录
      • 「公开材质转私密后再转公开」的情况
    • 存在 Hash 相同的材质审核记录
      • 「用户上传先前已被审核设为私密的材质」的情况
  3. 调用 腾讯云图片审核接口,参数如下:
    • Host 中的 BucketNameAPPIDRegion: 使用配置值
    • ci-process: sensitive-content-recognition
    • detect-type: porn,politics
    • detect-url: 材质 URL,如 https://mcskin.littleservice.cn/raw/1.png
    • biz-type: 使用配置值,未配置则不包含该参数
  4. 将识别结果入库(porn_scoreporn_labelpolitics_scorepolitics_label),并将 operator 字段的值留空(null
  5. 若机审鉴黄评分及鉴政评分均 小于 机审阈值,则 review_state 字段设为 APPROVED 并将材质设为公开,否则设为 MANUAL
  6. 更新 updated_at 字段为当前时间

人工审核

「人工审核」是一个管理页面,其左侧为材质列表(默认仅显示待审核材质,可根据搜索参数显示不同的材质),右侧为信息显示及操作界面。

待审核材质

待审核材质是 review_stateMANUAL 的材质。

信息显示

当在待审核材质列表点击材质时,会在右侧信息显示界面显示相关信息:

  • 机审鉴黄评分
  • 机审鉴黄标签
  • 机审鉴政评分
  • 机审鉴政标签
  • 材质展开图(原图)

操作界面

操作界面放置多个按钮,用于操作当前选中的材质:

  • 通过
    • 适用于健全材质
    • review_state 设为 APPROVED,并将材质设为公开
  • 拒绝并设为隐私
    • 适用于擦边球或尺度较大的材质
    • review_state 设为 REJECTED,且
    • 将材质设为隐私
      • 若用户积分足够支付余下的积分,则扣除积分
      • 否则直接删除材质,且不退回积分
  • 拒绝并删除
    • 适用于确定违规的材质
    • 直接删除材质,且不退回积分

不论审核结果为何,都应将 moderation_record 表中 operator 字段的值设为审核该材质的管理员的 UID,并向材质上传者发送站内通知。

用户管理界面

插件增加一个配置页面,用于配置免审用户。