1.文章自动审核流程(业务说明,具体实现)
涉及表:wm_news表、wm_sensitive表
业务流程:
1.当自媒体用户提交发布文章之后,会通过RabbitMQ发送自动审核消息
2.自媒体微服务会监听自动审核消息,当收到消息时,开始自动审核文章
3.判断文章是否是待审核状态(status=1)
4.文章不是待审核状态,结束审核
5.对文章文本和图片进行审核
6.通过自设的敏感词对文章内容进行审核,审核不通过 修改文章状态为不通过(status=2)
7.调用阿里云的文本审核服务,进行文本审核,审核不通过,文章状态设为2(审核失败);审核不确定,文章状态设为3(人工审核)
8.调用阿里云的图片审核服务,进行图片审核,审核不通过,文章状态设为2(审核失败);审核不确定,文章状态设为3(人工审核)
9.如果审核通过,判断发布时间,是否小于等于当前时间。如果小于等于,直接发消息通知,文章微服务,发布文章
10.如果未到发布时间,将消息发送到RabbitMQ的死信队列,并设置消息失效时间。
实现流程:
1.当自媒体用户提交发布文章之后,会通过RabbitMQ发送自动审核消息
2.自媒体微服务会监听自动审核消息,当收到消息时,开始自动审核文章
3.判断文章是否是待审核状态(status=1)
4.文章不是待审核状态,结束审核
5.对文章文本和图片进行审核
6.抽取出文章中 所有的文本内容 和 所有的图片url集合 Map
步骤:
(1)检查文章内容是否为空
(2)抽取文章所有文本
String content = contentMaps.stream() .filter(map -> “text”.equals(map.get(“type”))) //过滤type = text .map(text -> (String) text.get(“value”)) //获取文本 .collect(Collectors.joining(“html“)); //以html拼接文本 content = content + “html“ + wmNews.getTitle();
(3)抽取文章内容中的所有图片
List
4)抽取文章封面的所有图片 if (StringUtils.isNotBlank(wmNews.getImages())) { List
(5)去重 images = images.stream().distinct().collect(Collectors.toList());
7.通过自设的敏感词对文章内容进行审核,审核不通过 修改文章状态为不通过(status=2)
步骤:
(1)查询数据库所有的敏感词
(2)判断远程调用是否成功
(3)将查询到的敏感词转换为DFA数据模型
(4)使用DFA工具,检查敏感词
(5)核失败,将文章状态修改为 2
- 调用阿里云的文本审核服务,进行文本审核,审核不通过,文章状态设为2(审核失败);
审核不确定,文章状态设为3(人工审核)
步骤:
(1)调用阿里云文本审核,将待审核的文本传入进出
(2)获取审核结果 pass:审核通过 block:审核不通过 review:不确定
9.调用阿里云的图片审核服务,进行图片审核,审核不通过,文章状态设为2(审核失败);
审核不确定,文章状态设为3(人工审核)
步骤:
(1)调用阿里云图片审核,将待审核的图片传入进出
(2)获取审核结果 pass:审核通过 block:审核不通过 review:不确定
10.如果审核通过,判断发布时间,是否小于等于当前时间。如果小于等于,直接发消息通知,文章微服务,发布文章
11.如果未到发布时间,将消息发送到RabbitMQ的死信队列,并设置消息失效时间。
