|
@@ -4,17 +4,27 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.tzld.longarticle.recommend.server.common.enums.recommend.ArticleCategoryStatusEnum;
|
|
|
+import com.tzld.longarticle.recommend.server.mapper.aigc.PublishContentMapper;
|
|
|
import com.tzld.longarticle.recommend.server.mapper.longArticle.ArticleAuditMapper;
|
|
|
import com.tzld.longarticle.recommend.server.mapper.longArticle.ArticleCategoryMapper;
|
|
|
+import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper;
|
|
|
+import com.tzld.longarticle.recommend.server.model.dto.PublishContentDTO;
|
|
|
import com.tzld.longarticle.recommend.server.model.dto.kimi.KimiResult;
|
|
|
import com.tzld.longarticle.recommend.server.model.entity.aigc.ProducePlan;
|
|
|
import com.tzld.longarticle.recommend.server.model.entity.aigc.ProducePlanExeRecord;
|
|
|
+import com.tzld.longarticle.recommend.server.model.entity.aigc.PublishAccount;
|
|
|
import com.tzld.longarticle.recommend.server.model.entity.longArticle.ArticleCategory;
|
|
|
+import com.tzld.longarticle.recommend.server.model.entity.longArticle.ArticleUnsafeTitle;
|
|
|
+import com.tzld.longarticle.recommend.server.model.entity.longArticle.IllegalArticles;
|
|
|
import com.tzld.longarticle.recommend.server.model.entity.longArticle.LongArticleTitleAudit;
|
|
|
+import com.tzld.longarticle.recommend.server.model.param.PublishContentParam;
|
|
|
import com.tzld.longarticle.recommend.server.remote.DeepSeekApiService;
|
|
|
import com.tzld.longarticle.recommend.server.repository.aigc.ProducePlanExeRecordRepository;
|
|
|
import com.tzld.longarticle.recommend.server.repository.aigc.ProducePlanRepository;
|
|
|
+import com.tzld.longarticle.recommend.server.repository.aigc.PublishAccountRepository;
|
|
|
import com.tzld.longarticle.recommend.server.repository.longArticle.ArticleCategoryRepository;
|
|
|
+import com.tzld.longarticle.recommend.server.repository.longArticle.ArticleUnsafeTitleRepository;
|
|
|
+import com.tzld.longarticle.recommend.server.repository.longArticle.IllegalArticlesRepository;
|
|
|
import com.tzld.longarticle.recommend.server.repository.longArticle.LongArticleTitleAuditRepository;
|
|
|
import com.tzld.longarticle.recommend.server.util.TitleSimilarCheckUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -33,10 +43,7 @@ import org.springframework.util.StringUtils;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.FileOutputStream;
|
|
|
import java.io.IOException;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@SpringBootTest(classes = Application.class)
|
|
@@ -57,6 +64,16 @@ public class ArticleVideoAuditTest {
|
|
|
ArticleCategoryRepository articleCategoryRepository;
|
|
|
@Autowired
|
|
|
DeepSeekApiService deepSeekApiService;
|
|
|
+ @Autowired
|
|
|
+ ArticleUnsafeTitleRepository articleUnsafeTitleRepository;
|
|
|
+ @Autowired
|
|
|
+ IllegalArticlesRepository illegalArticlesRepository;
|
|
|
+ @Autowired
|
|
|
+ PublishAccountRepository publishAccountRepository;
|
|
|
+ @Autowired
|
|
|
+ PublishContentMapper publishContentMapper;
|
|
|
+ @Autowired
|
|
|
+ LongArticleBaseMapper longArticleBaseMapper;
|
|
|
|
|
|
@Value("${kimiCategoryPrompt:}")
|
|
|
private String kimiCategoryPrompt;
|
|
@@ -193,8 +210,8 @@ public class ArticleVideoAuditTest {
|
|
|
List<ArticleCategory> newList = articleCategoryRepository.getByStatusAndVersion(
|
|
|
ArticleCategoryStatusEnum.SUCCESS.getCode(), 2);
|
|
|
List<String> newIds = newList.stream().map(ArticleCategory::getProduceContentId)
|
|
|
- .filter(o ->!o.startsWith("video"))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ .filter(o -> !o.startsWith("video"))
|
|
|
+ .collect(Collectors.toList());
|
|
|
List<ArticleCategory> saveList = new ArrayList<>();
|
|
|
for (String oldId : oldIds) {
|
|
|
if (newIds.contains(oldId)) {
|
|
@@ -216,4 +233,70 @@ public class ArticleVideoAuditTest {
|
|
|
articleCategoryMapper.batchInsertArticleCategory(saveList);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void unsafeReAudit() {
|
|
|
+ List<ArticleUnsafeTitle> unsafeTitleList = articleUnsafeTitleRepository.getByStatus(1);
|
|
|
+ List<IllegalArticles> illegalArticlesList = illegalArticlesRepository.findAll();
|
|
|
+ Map<String, List<String>> illegalMap = illegalArticlesList.stream()
|
|
|
+ .collect(Collectors.groupingBy(IllegalArticles::getTitle, Collectors.mapping(IllegalArticles::getIllegalReason, Collectors.toList())));
|
|
|
+ unsafeTitleList = unsafeTitleList.stream()
|
|
|
+ .filter(o -> {
|
|
|
+ List<String> illegalReasons = illegalMap.get(o.getTitle());
|
|
|
+ if (CollectionUtils.isNotEmpty(illegalReasons)) {
|
|
|
+ for (String illegalReason : illegalReasons) {
|
|
|
+ if (!illegalReason.contains("导流")) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ })
|
|
|
+ .filter(o -> o.getCreateTimestamp() < 1737302400000L)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<String> ghIds = unsafeTitleList.stream().map(ArticleUnsafeTitle::getGhId).distinct().collect(Collectors.toList());
|
|
|
+ // 获取发布账号
|
|
|
+ List<PublishAccount> publishAccountList = publishAccountRepository.getAllByGhIdIn(ghIds);
|
|
|
+ Map<String, PublishAccount> publishAccountMap = publishAccountList.stream().collect(Collectors.toMap(PublishAccount::getGhId, o -> o));
|
|
|
+ List<PublishContentParam> publishContentParamList = unsafeTitleList.stream().map(article -> {
|
|
|
+ PublishContentParam item = new PublishContentParam();
|
|
|
+ item.setTitle(article.getTitle());
|
|
|
+ PublishAccount account = publishAccountMap.get(article.getGhId());
|
|
|
+ if (Objects.nonNull(account)) {
|
|
|
+ item.setPublishAccountId(account.getId());
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ List<PublishContentDTO> publishContents = new ArrayList<>();
|
|
|
+ for (List<PublishContentParam> partitions : Lists.partition(publishContentParamList, 100)) {
|
|
|
+ publishContents.addAll(publishContentMapper.getPublishContentByTitle(partitions));
|
|
|
+ }
|
|
|
+ for (PublishContentDTO publishContent : publishContents) {
|
|
|
+ if (publishContent.getSourceType() != 1) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String sourceId = publishContent.getSourceId();
|
|
|
+ LongArticleTitleAudit titleAudit = titleAuditRepository.getByContentId(sourceId);
|
|
|
+ if (Objects.nonNull(titleAudit)) {
|
|
|
+ if (titleAudit.getStatus() == 1) {
|
|
|
+ longArticleBaseMapper.updateUnsafeStatusByTitle(publishContent.getTitle(), 0);
|
|
|
+ }
|
|
|
+// titleAudit.setStatus(0);
|
|
|
+// titleAuditRepository.save(titleAudit);
|
|
|
+// } else {
|
|
|
+// ProducePlanExeRecord exeRecord = exeRecordRepository.getByPlanExeId(sourceId);
|
|
|
+// ProducePlan producePlan = producePlanRepository.getById(exeRecord.getPlanId());
|
|
|
+// titleAudit = new LongArticleTitleAudit();
|
|
|
+// titleAudit.setContentId(sourceId);
|
|
|
+// titleAudit.setStatus(0);
|
|
|
+// titleAudit.setFlowPoolLevel(producePlan.getPlanTag());
|
|
|
+// titleAudit.setProducePlanId(producePlan.getId());
|
|
|
+// titleAudit.setCreateTimestamp(System.currentTimeMillis());
|
|
|
+// titleAuditRepository.save(titleAudit);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|