Przeglądaj źródła

articlePromotion

wangyunpeng 7 miesięcy temu
rodzic
commit
2dfcc2f977
20 zmienionych plików z 591 dodań i 1274 usunięć
  1. 1 1
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProduceAuditLayoutContentObjVO.java
  2. 69 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProduceContentListItemVO.java
  3. 30 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanDetailVO.java
  4. 13 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanInputSourceGroupOrderParam.java
  5. 25 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanInputSourceGroupParam.java
  6. 20 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanInputSourceParam.java
  7. 17 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/SaveFilterConditionParam.java
  8. 74 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCCrawlerPlanSaveService.java
  9. 75 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCProduceContentListService.java
  10. 73 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCProducePlanDetailService.java
  11. 85 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCProducePlanSaveService.java
  12. 2 2
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCWaitingPublishContentService.java
  13. 98 113
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/ArticlePromotionService.java
  14. 1 1
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/DataDashboardService.java
  15. 2 2
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/filter/strategy/BadStrategy.java
  16. 3 3
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/recall/RecallService.java
  17. 0 920
      long-article-recommend-service/src/main/resources/file/ProduceConfig.json
  18. 0 122
      long-article-recommend-service/src/main/resources/file/长文_帖子结果库_根据计划id获取内容.json
  19. 0 107
      long-article-recommend-service/src/main/resources/file/长文_抓取计划_根据计划id获取状态.json
  20. 3 3
      long-article-recommend-service/src/test/java/com/tzld/longarticle/recommend/server/FilterStrategyTest.java

+ 1 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/ProduceAuditLayoutContentObjVO.java → long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProduceAuditLayoutContentObjVO.java

@@ -1,4 +1,4 @@
-package com.tzld.longarticle.recommend.server.model.vo;
+package com.tzld.longarticle.recommend.server.model.vo.aigc;
 
 import lombok.Getter;
 import lombok.Setter;

+ 69 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProduceContentListItemVO.java

@@ -0,0 +1,69 @@
+package com.tzld.longarticle.recommend.server.model.vo.aigc;
+
+import com.tzld.longarticle.recommend.server.model.vo.IdNameVO;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class ProduceContentListItemVO {
+    private String id;
+    private String coverImageUrl;
+    private List<String> imageUrls;
+    private String title;
+    private String bodyText;
+    private List<String> animationUrls;
+    private String prePublishContentId;
+    private String prePublishContentIdLink;
+    private String actionAccountId;
+    private String commentDetail;
+    private String letterDetail;
+    private String receiveId;
+    private String receiveIdLink;
+    private String receiveContent;
+    private String sendAccountId;
+//    private PublishAccountSimpleVO sendAccountData;
+    private String replyCommentDetail;
+    private String replyLetterDetail;
+    private List<String> inputSrtTexts;
+    private List<String> inputImageUrls;
+    private Integer produceAgainFlag;
+    private Long produceAgainCount;
+    private Long produceAgainTimestamp;
+    private List<String> compositeVideoUrls;
+    private Integer compositeStatus;
+    private Integer compositeCount;
+    private Integer uploadVideoFlag;
+    private IdNameVO<String> sourceProducePlan;
+//    private List<ProducePlanQuoteVO<String>> quotePublishPlans;
+    private String referContentTitle;
+    private String referContentLink;
+    private String referContentAccountName;
+    private String referContentAccountLink;
+    private Integer referContentChannel;
+//    private List<ProduceReferContentVO> referContents;
+    private Long produceTimestamp;
+    private Integer auditStatus;
+    private String auditAccount;
+    private Long auditTimestamp;
+    private List<Integer> editModuleTypes;
+    private String editAccount;
+    private Long editTimestamp;
+    private Integer produceStatus;
+    private String errorMsg;
+//    private List<ProducePlanErrorDetailVO> errorDetails;
+    private String tagJson;
+//    private List<CrawlerContentMiniProgramVO> miniProgramList;
+//    private List<ListFieldValueVO> expressionValue;
+    private Integer reviewFlag;
+//    private List<ProduceContentReviewStatusVO> reviewStatusList;
+    private Integer reviewSetCount;
+    private Integer reviewFinishCount;
+    private List<String> reviewInfoList;
+    private Long lastReviewTimestamp;
+
+}

+ 30 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanDetailVO.java

@@ -0,0 +1,30 @@
+package com.tzld.longarticle.recommend.server.model.vo.aigc;
+
+import com.alibaba.fastjson.JSONArray;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class ProducePlanDetailVO {
+    private String id;
+    private String name;
+    private Integer produceModal;
+    private String planTag;
+    private Integer tagPenetrateFlag;
+    private Integer inputType;
+    private Integer inputModal;
+    private Integer inputChannel;
+    private Integer layoutType;
+    private Integer activeManualReview;
+    private Integer activeManualReviewCount;
+    private Integer autoComposite;
+    private Integer dailyProduceNum;
+    private Integer totalProduceNum;
+    private Integer maxConcurrentNum;
+    private List<ProducePlanInputSourceGroupParam> inputSourceGroups;
+    private JSONArray moduleGroups;
+    private JSONArray tasks;
+}

+ 13 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanInputSourceGroupOrderParam.java

@@ -0,0 +1,13 @@
+package com.tzld.longarticle.recommend.server.model.vo.aigc;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class ProducePlanInputSourceGroupOrderParam {
+    private Integer orderField;
+    private String orderType;
+}

+ 25 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanInputSourceGroupParam.java

@@ -0,0 +1,25 @@
+package com.tzld.longarticle.recommend.server.model.vo.aigc;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class ProducePlanInputSourceGroupParam {
+    private Integer inputType;
+    private String groupId;
+    private String exampleCaseId;
+    private String groupName;
+    private Integer groupIndex;
+    private Integer batchActive;
+    private List<ProducePlanInputSourceParam> inputSources;
+    private Integer filterMatchMode;
+    private List<SaveFilterConditionParam> contentFilters;
+    private List<ProducePlanInputSourceGroupOrderParam> contentOrders;
+    private Integer perInputCount;
+    private Integer samplingType;
+    private Integer randomMinCount;
+    private Integer inputMaxUseCount;
+}

+ 20 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/ProducePlanInputSourceParam.java

@@ -0,0 +1,20 @@
+package com.tzld.longarticle.recommend.server.model.vo.aigc;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class ProducePlanInputSourceParam {
+    private Integer contentType;
+    private Integer inputSourceType;
+    private Integer inputSourceSubType;
+    private String fieldName;
+    private String inputSourceValue;
+    private String inputSourceLabel;
+    private Integer inputSourceModal;
+    private Integer inputSourceChannel;
+
+}

+ 17 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/aigc/SaveFilterConditionParam.java

@@ -0,0 +1,17 @@
+package com.tzld.longarticle.recommend.server.model.vo.aigc;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class SaveFilterConditionParam {
+    private Integer conditionType;
+    private Integer operator;
+    private List<String> data;
+
+}

+ 74 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCCrawlerPlanSaveService.java

@@ -0,0 +1,74 @@
+package com.tzld.longarticle.recommend.server.remote.aigc;
+
+import cn.hutool.core.io.resource.ResourceUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.longarticle.recommend.server.common.HttpPoolFactory;
+import com.tzld.longarticle.recommend.server.model.vo.IdNameVO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.StatusLine;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+@Slf4j
+public class AIGCCrawlerPlanSaveService {
+
+    private final CloseableHttpClient client = HttpPoolFactory.aigcPool();
+
+    public IdNameVO<String> createArticleUrlPlan(String planName, List<String> urlList, String tag) {
+        IdNameVO<String> result = new IdNameVO<>();
+        if (urlList == null || urlList.isEmpty()) {
+            return null;
+        }
+        // 从配置中读取模板文件路径
+        String templateFile = ResourceUtil.readUtf8Str("file/长文_抓取计划_根据url列表抓取.json");
+        // 读取模板文件内容
+        JSONObject template = JSONObject.parseObject(templateFile);
+        String apiUrl = template.getString("api_url");
+        JSONObject data = template.getJSONObject("data");
+        // 设置请求参数
+        JSONObject params = data.getJSONObject("params");
+        params.put("name", planName);
+        if (tag != null) {
+            params.put("planTag", tag);
+        }
+        params.put("inputModeValues", urlList);
+        // 将数据转为 JSON 格式
+        String requestData = data.toString();
+        try {
+            HttpPost httpPost = new HttpPost(apiUrl);
+            StringEntity stringEntity = new StringEntity(requestData, StandardCharsets.UTF_8);
+            httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
+            httpPost.setEntity(stringEntity);
+            CloseableHttpResponse response = client.execute(httpPost);
+            StatusLine statusLine = response.getStatusLine();
+            if (statusLine.getStatusCode() == 200) {
+                HttpEntity responseEntity = response.getEntity();
+                if (Objects.nonNull(responseEntity)) {
+                    String responseBody = EntityUtils.toString(responseEntity, "UTF-8");
+                    JSONObject jsonObject = JSONObject.parseObject(responseBody);
+                    if (jsonObject.getInteger("code") == 0) {
+                        JSONObject responseData = jsonObject.getJSONObject("data");
+                        String planId = responseData.getString("id");
+                        String returnedPlanName = responseData.getString("name");
+                        log.info("plan_name: {}, plan_id: {}", returnedPlanName, planId);
+                        result.setId(planId);
+                        result.setName(returnedPlanName);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("createArticleUrlPlan error", e);
+        }
+        return result;
+    }
+}

+ 75 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCProduceContentListService.java

@@ -0,0 +1,75 @@
+package com.tzld.longarticle.recommend.server.remote.aigc;
+
+import cn.hutool.core.io.resource.ResourceUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.longarticle.recommend.server.common.HttpPoolFactory;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProduceContentListItemVO;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProducePlanDetailVO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.StatusLine;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+@Service
+@Slf4j
+public class AIGCProduceContentListService {
+
+    private final CloseableHttpClient client = HttpPoolFactory.aigcPool();
+
+    public Map<String, Object> list(List<String> planIdList, int pageNum, int pageSize, List<Integer> produceStatus) {
+        Map<String, Object> result = new HashMap<>();
+        if (planIdList.isEmpty()) {
+            System.out.println("getProduceContentListByPlanIdListRaw: planIdList empty");
+            result.put("contentList", new ArrayList<>());
+            result.put("totalCnt", 0);
+            return result;
+        }
+
+        String templateFile = ResourceUtil.readUtf8Str("file/长文_生成结果库_根据计划id获取内容.json");
+        // 读取模板文件内容
+        JSONObject template = JSONObject.parseObject(templateFile);
+        String apiUrl = template.getString("api_url");
+        JSONObject data = template.getJSONObject("data");
+
+        data.getJSONObject("params").getJSONArray("filterItems").getJSONObject(0)
+                .put("selectValues", produceStatus);
+        data.getJSONObject("params").getJSONArray("filterItems").getJSONObject(1)
+                .put("selectValues", planIdList);
+        data.getJSONObject("params").put("pageNum", pageNum);
+        data.getJSONObject("params").put("pageSize", pageSize);
+
+        String response = HttpRequest.post(apiUrl, data.toString(), Headers.HEADERS);
+        JSONObject jsonResponse = JSONObject.parseObject(response);
+
+        int totalCnt = jsonResponse.getJSONObject("data").getInteger("totalCount");
+        List<ProduceContentListItemVO> contentList = jsonResponse.getJSONObject("data").parseArray("data", ProduceContentListItemVO.class);
+        result.put("contentList", contentList);
+        result.put("totalCnt", totalCnt);
+        return result;
+    }
+
+    private JSONObject getBaseInfo() {
+        JSONObject baseInfo = new JSONObject();
+        baseInfo.put("token", "79dcb40af1de43b1bd9fe3a731dbaa15");
+        baseInfo.put("appType", 9);
+        baseInfo.put("platform", "pc");
+        baseInfo.put("appVersionCode", 1000);
+        baseInfo.put("clientTimestamp", 1);
+        baseInfo.put("fid", 1);
+        baseInfo.put("loginUid", 1);
+        baseInfo.put("pageSource", 1);
+        baseInfo.put("requestId", 1);
+        baseInfo.put("rid", 1);
+        baseInfo.put("uid", 1);
+        return baseInfo;
+    }
+}

+ 73 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCProducePlanDetailService.java

@@ -0,0 +1,73 @@
+package com.tzld.longarticle.recommend.server.remote.aigc;
+
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.longarticle.recommend.server.common.HttpPoolFactory;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProducePlanDetailVO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.StatusLine;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Objects;
+
+@Service
+@Slf4j
+public class AIGCProducePlanDetailService {
+
+    private final CloseableHttpClient client = HttpPoolFactory.aigcPool();
+
+    public ProducePlanDetailVO articleGetProducePlanDetail(String planId) {
+        String apiUrl = "http://aigc-api.cybertogether.net/aigc/produce/plan/detail";
+
+        // 构建请求的 JSON Payload
+        JSONObject payload = new JSONObject();
+        JSONObject params = new JSONObject();
+        params.put("id", planId);
+        payload.put("params", params);
+        payload.put("baseInfo", getBaseInfo());
+        try {
+            HttpPost httpPost = new HttpPost(apiUrl);
+            StringEntity stringEntity = new StringEntity(payload.toJSONString(), StandardCharsets.UTF_8);
+            httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
+            httpPost.setEntity(stringEntity);
+            CloseableHttpResponse response = client.execute(httpPost);
+            StatusLine statusLine = response.getStatusLine();
+            if (statusLine.getStatusCode() == 200) {
+                HttpEntity responseEntity = response.getEntity();
+                if (Objects.nonNull(responseEntity)) {
+                    String responseBody = EntityUtils.toString(responseEntity, "UTF-8");
+                    JSONObject jsonObject = JSONObject.parseObject(responseBody);
+                    if (jsonObject.getInteger("code") == 0) {
+                        return jsonObject.getObject("data", ProducePlanDetailVO.class);
+                    }
+                }
+            }
+        } catch (IOException e) {
+            log.error("articleGetProducePlanDetail error", e);
+        }
+        return null;
+    }
+
+    private JSONObject getBaseInfo() {
+        JSONObject baseInfo = new JSONObject();
+        baseInfo.put("token", "79dcb40af1de43b1bd9fe3a731dbaa15");
+        baseInfo.put("appType", 9);
+        baseInfo.put("platform", "pc");
+        baseInfo.put("appVersionCode", 1000);
+        baseInfo.put("clientTimestamp", 1);
+        baseInfo.put("fid", 1);
+        baseInfo.put("loginUid", 1);
+        baseInfo.put("pageSource", 1);
+        baseInfo.put("requestId", 1);
+        baseInfo.put("rid", 1);
+        baseInfo.put("uid", 1);
+        return baseInfo;
+    }
+}

+ 85 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCProducePlanSaveService.java

@@ -0,0 +1,85 @@
+package com.tzld.longarticle.recommend.server.remote.aigc;
+
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.longarticle.recommend.server.common.HttpPoolFactory;
+import com.tzld.longarticle.recommend.server.model.vo.IdNameVO;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProducePlanDetailVO;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProducePlanInputSourceParam;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.StatusLine;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+@Slf4j
+public class AIGCProducePlanSaveService {
+
+    private final CloseableHttpClient client = HttpPoolFactory.aigcPool();
+
+    private static String apiUrl = "http://aigc-api.cybertogether.net/aigc/produce/plan/save";
+
+    public IdNameVO<String> save(String planName, String planId, ProducePlanDetailVO detail) {
+        // 添加新的依赖计划
+        List<ProducePlanInputSourceParam> inputSources = detail.getInputSourceGroups().get(0).getInputSources();
+        ProducePlanInputSourceParam newInputSource = new ProducePlanInputSourceParam();
+        newInputSource.setContentType(1);
+        newInputSource.setInputSourceType(2);
+        newInputSource.setInputSourceValue(planId);
+        newInputSource.setInputSourceLabel(String.format("原始帖子-长文-微信公众号-内容添加计划-%s", planName));
+        newInputSource.setInputSourceModal(3);
+        newInputSource.setInputSourceChannel(5);
+        inputSources.add(newInputSource);
+
+        // 准备请求参数
+        JSONObject payload = new JSONObject();
+        payload.put("params", detail);
+        payload.put("baseInfo", getBaseInfo());
+        try {
+            HttpPost httpPost = new HttpPost(apiUrl);
+            StringEntity stringEntity = new StringEntity(payload.toJSONString(), StandardCharsets.UTF_8);
+            httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
+            httpPost.setEntity(stringEntity);
+            CloseableHttpResponse response = client.execute(httpPost);
+            StatusLine statusLine = response.getStatusLine();
+            if (statusLine.getStatusCode() == 200) {
+                HttpEntity responseEntity = response.getEntity();
+                if (Objects.nonNull(responseEntity)) {
+                    String responseBody = EntityUtils.toString(responseEntity, "UTF-8");
+                    JSONObject jsonObject = JSONObject.parseObject(responseBody);
+                    if (jsonObject.getInteger("code") == 0) {
+                        return jsonObject.getObject("data", IdNameVO.class);
+                    }
+                }
+            }
+        } catch (IOException e) {
+            log.error("articleGetProducePlanDetail error", e);
+        }
+        return null;
+    }
+
+    private JSONObject getBaseInfo() {
+        JSONObject baseInfo = new JSONObject();
+        baseInfo.put("token", "79dcb40af1de43b1bd9fe3a731dbaa15");
+        baseInfo.put("appType", 9);
+        baseInfo.put("platform", "pc");
+        baseInfo.put("appVersionCode", 1000);
+        baseInfo.put("clientTimestamp", 1);
+        baseInfo.put("fid", 1);
+        baseInfo.put("loginUid", 1);
+        baseInfo.put("pageSource", 1);
+        baseInfo.put("requestId", 1);
+        baseInfo.put("rid", 1);
+        baseInfo.put("uid", 1);
+        return baseInfo;
+    }
+}

+ 2 - 2
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/AIGCRemoteService.java → long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/remote/aigc/AIGCWaitingPublishContentService.java

@@ -1,4 +1,4 @@
-package com.tzld.longarticle.recommend.server.remote;
+package com.tzld.longarticle.recommend.server.remote.aigc;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -23,7 +23,7 @@ import java.util.*;
  */
 @Service
 @Slf4j
-public class AIGCRemoteService {
+public class AIGCWaitingPublishContentService {
     private final CloseableHttpClient client = HttpPoolFactory.aigcPool();
     private static final String aigcGetAllContentUrl = "http://aigc-api.cybertogether.net/aigc/publish/content/gzhWaitingPublishContent";
 

+ 98 - 113
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/ArticlePromotionService.java

@@ -1,27 +1,24 @@
 package com.tzld.longarticle.recommend.server.service.recommend;
 
-import cn.hutool.core.io.resource.ResourceUtil;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.TypeReference;
-import com.tzld.longarticle.recommend.server.common.HttpPoolFactory;
+import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.DatastatSortStrategy;
 import com.tzld.longarticle.recommend.server.model.vo.IdNameVO;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProduceContentListItemVO;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProducePlanDetailVO;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProducePlanInputSourceParam;
+import com.tzld.longarticle.recommend.server.remote.aigc.AIGCCrawlerPlanSaveService;
+import com.tzld.longarticle.recommend.server.remote.aigc.AIGCProduceContentListService;
+import com.tzld.longarticle.recommend.server.remote.aigc.AIGCProducePlanDetailService;
+import com.tzld.longarticle.recommend.server.remote.aigc.AIGCProducePlanSaveService;
 import com.tzld.longarticle.recommend.server.repository.longArticle.DatastatSortStrategyRepository;
 import com.tzld.longarticle.recommend.server.util.DateUtils;
 import com.tzld.longarticle.recommend.server.util.TitleSimilarCheckUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.http.HttpEntity;
-import org.apache.http.StatusLine;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -31,27 +28,33 @@ public class ArticlePromotionService {
 
     @Autowired
     DatastatSortStrategyRepository datastatSortStrategyRepository;
+    @Autowired
+    AIGCCrawlerPlanSaveService aigcCrawlerPlanSaveService;
+    @Autowired
+    AIGCProducePlanDetailService aigcProducePlanDetailService;
+    @Autowired
+    AIGCProducePlanSaveService aigcProducePlanSaveService;
+    @Autowired
+    AIGCProduceContentListService aigcProduceContentListService;
+
+    @ApolloJsonValue("${articlePromotionProduceConfig:{}}")
+    private Map<String, Map<String, Map<String, String>>> produceConfig;
 
-    private final CloseableHttpClient client = HttpPoolFactory.aigcPool();
-    private static List<String> contentPoolType = Arrays.asList("autoArticlePoolLevel1", "autoArticlePoolLevel3", "autoArticlePoolLevel4");
+    private final List<String> contentPoolType = Arrays.asList("autoArticlePoolLevel1", "autoArticlePoolLevel3", "autoArticlePoolLevel4");
 
     public void articlePromotion(String pos, String way, String accountNickName, String tag,
                                  Integer viewCountFilter, Double viewCountRateFilter, List<Integer> positionFilter) {
         String today = DateUtils.getCurrentDateStr("yyyyMMdd");
-
         // 获取内部表现
         List<DatastatSortStrategy> list = datastatSortStrategyRepository.getByViewCountGreaterThanEqualAndReadRateGreaterThanEqualAndPositionIn(
                 viewCountFilter, viewCountRateFilter, positionFilter);
         log.info("优质{}文章数量: {}", accountNickName, list.size());
-
         List<DatastatSortStrategy> distinct = filterSameTitle(list);
         distinct.sort(Comparator.comparing(DatastatSortStrategy::getDateStr, Comparator.reverseOrder()));
         log.info("优质{}文章数量(去重后): {}", accountNickName, distinct.size());
-
         addUrlListToAccount(accountNickName, distinct, pos, way, today, tag);
     }
 
-
     private List<DatastatSortStrategy> filterSameTitle(List<DatastatSortStrategy> list) {
         List<DatastatSortStrategy> result = new ArrayList<>();
         List<String> titles = new ArrayList<>();
@@ -71,148 +74,116 @@ public class ArticlePromotionService {
     private void addUrlListToAccount(String accountNickName, List<DatastatSortStrategy> list, String pos, String way,
                                      String today, String tag) {
         List<String> urlList = list.stream().map(DatastatSortStrategy::getLink).collect(Collectors.toList());
-        // 获取生产配置
-        Map<String, Map<String, Map<String, String>>> produceConfig = getProduceConfig();
         if (!produceConfig.containsKey(accountNickName)) {
             log.info("account_nickname not in produceConfig: " + accountNickName);
             String planName = String.format("%d_%s_%s_%s【%s】_%s", list.size(), today, accountNickName, pos, way, today);
-            createArticleUrlPlan(planName, urlList, tag);
+            aigcCrawlerPlanSaveService.createArticleUrlPlan(planName, urlList, tag);
             return;
         }
-
         String produceId = produceConfig.get(accountNickName).get(pos).get(way).trim();
-        List<Map<String, String>> contentList = getProduceContentList(accountNickName, pos, way);
-
+        List<ProduceContentListItemVO> contentList = getProduceContentList(accountNickName, pos, way);
         // 获取已访问的标题和URL
         List<String> visitedTitleList = contentList.stream()
-                .flatMap(content -> Arrays.stream(new String[]{content.get("referContentTitle"), content.get("title")}))
-                .distinct()
-                .collect(Collectors.toList());
-
-        Set<String> visitedUrlIdList = contentList.stream()
-                .map(content -> getUrlId(content.get("referContentLink")))
+                .flatMap(content -> Arrays.stream(new String[]{content.getReferContentTitle(), content.getTitle()}))
+                .distinct().collect(Collectors.toList());
+        Set<String> visitedUrlIdList = contentList.stream().map(content -> getUrlId(content.getReferContentLink()))
                 .collect(Collectors.toSet());
 
-        List<String> thisUrlIdList = urlList.stream()
-                .map(this::getUrlId)
-                .collect(Collectors.toList());
-
         // 筛选URL和标题
         List<String> filterUrlList = new ArrayList<>();
-        List<String> filterTitleList = new ArrayList<>();
-        for (int i = 0; i < list.size(); i++) {
-            DatastatSortStrategy item = list.get(i);
+        for (DatastatSortStrategy item : list) {
             String url = item.getLink();
-            String urlId = thisUrlIdList.get(i);
+            String urlId = getUrlId(item.getLink());
             String title = item.getTitle();
             String wxSn = item.getWxSn();
-
             if (visitedUrlIdList.contains(urlId)) {
                 continue;
             }
             if (TitleSimilarCheckUtil.isDuplicateContent(title, visitedTitleList, TitleSimilarCheckUtil.ARTICLE_PROMOTION_THRESHOLD)) {
                 continue;
             }
-
             filterUrlList.add(url);
-            filterTitleList.add(title);
-
-            // 调用爬虫 detail 接口并保存数据
+            // todo 调用爬虫 detail 接口并保存数据
             Map<String, String> detail = getArticleDetail(url);
             if (detail != null) {
                 String level = pos.equals("【1】") ? contentPoolType.get(0) : contentPoolType.get(1);
                 saveArticlePoolPromotionSource(detail.get("channel_content_id"), wxSn, title, level);
             }
         }
-
         if (filterUrlList.isEmpty()) {
             log.info("url_list empty: " + accountNickName + ", " + pos + ", " + way);
             return;
         }
-
         int urlLen = filterUrlList.size();
         String planName = String.format("%d_%s_%s_%s【%s】_%s", urlLen, today, accountNickName, pos, way, today);
         log.info("url_len: " + list.size() + ", " + urlLen);
-
-        IdNameVO<String> planInfo = createArticleUrlPlan(planName, filterUrlList, tag);
-        if (produceId == null || produceId.isEmpty()) {
+        IdNameVO<String> planInfo = aigcCrawlerPlanSaveService.createArticleUrlPlan(planName, filterUrlList, tag);
+        if (produceId.isEmpty()) {
             log.info("{}, {}, produce plan not exist: {}, {}, {}", planInfo.getName(), planInfo.getId(), accountNickName, pos, way);
             return;
         }
-
         articleAddDependPlan(produceId, planInfo.getId(), planInfo.getName());
     }
 
-    private Map<String, Map<String, Map<String, String>>> getProduceConfig() {
-        // 返回生产配置的逻辑
-        String json = ResourceUtil.readUtf8Str("file/ProduceConfig.json");
-        return JSONObject.parseObject(json,
-                new TypeReference<Map<String, Map<String, Map<String, String>>>>() {
-                });
+    private List<ProduceContentListItemVO> getProduceContentList(String accountNickName, String pos, String way) {
+        List<String> planIdList = getProducePlanIdList(accountNickName, pos, way);
+        Map<String, Object> contentData = getProduceContentListByPlanIdList(planIdList);
+        return (List<ProduceContentListItemVO>) contentData.get("contentList");
     }
 
-    private IdNameVO<String> createArticleUrlPlan(String planName, List<String> urlList, String tag) {
-        IdNameVO<String> result = new IdNameVO<>();
-        if (urlList == null || urlList.isEmpty()) {
-            return null;
+    public List<String> getProducePlanIdList(String accountNickname, String pos, String way) {
+        List<String> res = new ArrayList<>();
+        if (!produceConfig.containsKey(accountNickname)) {
+            return res;
         }
-
-        // 从配置中读取模板文件路径
-        String templateFile = ResourceUtil.readUtf8Str("file/长文_抓取计划_根据url列表抓取.json");
-        if (templateFile == null) {
-            return null;
+        Map<String, Map<String, String>> accountConfig = produceConfig.get(accountNickname);
+        for (String posKey : accountConfig.keySet()) {
+            if (pos != null && !pos.equals(posKey)) {
+                continue;
+            }
+            Map<String, String> posConfig = accountConfig.get(posKey);
+            for (String wayKey : posConfig.keySet()) {
+                if (way != null && !way.equals(wayKey)) {
+                    continue;
+                }
+                String planId = posConfig.get(wayKey).trim();
+                if (!planId.isEmpty()) {
+                    res.add(planId);
+                }
+            }
         }
+        return res;
+    }
 
-        // 读取模板文件内容
-        JSONObject template = JSONObject.parseObject(templateFile);
-
-        String apiUrl = template.getString("api_url");
-        JSONObject data = template.getJSONObject("data");
-
-        // 设置请求参数
-        JSONObject params = data.getJSONObject("params");
-        params.put("name", planName);
-        if (tag != null) {
-            params.put("planTag", tag);
+    public Map<String, Object> getProduceContentListByPlanIdList(List<String> planIdList) {
+        Map<String, Object> result = new HashMap<>();
+        if (planIdList.isEmpty()) {
+            System.out.println("getProduceContentListByPlanIdList: planIdList empty");
+            result.put("contentList", new ArrayList<>());
+            result.put("totalCnt", 0);
+            return result;
         }
-        params.put("inputModeValues", urlList);
-
-        // 将数据转为 JSON 格式
-        String requestData = data.toString();
-        try {
-            HttpPost httpPost = new HttpPost(apiUrl);
-            StringEntity stringEntity = new StringEntity(requestData, StandardCharsets.UTF_8);
-            httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
-            httpPost.setEntity(stringEntity);
-            CloseableHttpResponse response = client.execute(httpPost);
-            StatusLine statusLine = response.getStatusLine();
-            if (statusLine.getStatusCode() == 200) {
-                HttpEntity responseEntity = response.getEntity();
-                if (Objects.nonNull(responseEntity)) {
-                    String responseBody = EntityUtils.toString(responseEntity, "UTF-8");
-                    JSONObject jsonObject = JSONObject.parseObject(responseBody);
-                    if (jsonObject.getInteger("code") == 0) {
-                        JSONObject responseData = jsonObject.getJSONObject("data");
-                        String planId = responseData.getString("id");
-                        String returnedPlanName = responseData.getString("name");
-                        log.info("plan_name: {}, plan_id: {}", returnedPlanName, planId);
-                        result.setId(planId);
-                        result.setName(returnedPlanName);
-                    }
-                }
+        int pageSize = 500;
+        List<Integer> produceStatus = Arrays.asList(1,2,3,4,5,6);
+        Map<String, Object> rawData = aigcProduceContentListService.list(planIdList, 1, 1, produceStatus);
+        int totalCnt = (int) rawData.get("totalCnt");
+        int pageNumMax = totalCnt / pageSize;
+        List<ProduceContentListItemVO> allContent = new ArrayList<>();
+        for (int i = 0; i <= pageNumMax; i++) {
+            Map<String, Object> pageData = aigcProduceContentListService.list(planIdList, i + 1, pageSize, produceStatus);
+            allContent.addAll((Collection<? extends ProduceContentListItemVO>) pageData.get("contentList"));
+        }
+        List<ProduceContentListItemVO> filteredContent = new ArrayList<>();
+        for (ProduceContentListItemVO content : allContent) {
+            if (StringUtils.hasText(content.getTitle())) {
+                filteredContent.add(content);
             }
-        } catch (Exception e) {
-            log.error("createArticleUrlPlan error", e);
         }
-
+        result.put("contentList", filteredContent);
+        result.put("totalCnt", filteredContent.size());
         return result;
     }
 
-    private List<Map<String, String>> getProduceContentList(String accountNickName, String pos, String way) {
-        // 返回生产内容列表的逻辑
-        return new ArrayList<>();
-    }
-
     public String getUrlId(String url) {
         if (url == null) {
             return null;
@@ -231,7 +202,6 @@ public class ArticlePromotionService {
             String sn = params.get("sn");
             String mid = params.get("mid");
             String idx = params.get("idx");
-
             if (biz != null && sn != null && mid != null && idx != null) {
                 return String.format("biz=%s_mid=%s_idx=%s_sn=%s", biz, mid, idx, sn);
             }
@@ -243,7 +213,7 @@ public class ArticlePromotionService {
     }
 
     // 辅助方法:解析查询参数
-    private static Map<String, String> parseQueryString(String url) {
+    private Map<String, String> parseQueryString(String url) {
         // 示例解析逻辑
         Map<String, String> params = new java.util.HashMap<>();
         if (url.contains("?")) {
@@ -269,9 +239,24 @@ public class ArticlePromotionService {
     }
 
     private void articleAddDependPlan(String produceId, String planId, String planName) {
-        // 添加依赖计划的逻辑
-        log.info("Added dependency: " + produceId + " -> " + planId + " (" + planName + ")");
+        // 获取生产计划的详细信息
+        ProducePlanDetailVO detail = aigcProducePlanDetailService.articleGetProducePlanDetail(produceId);
+        if (detail == null) {
+            log.info("Failed to fetch produce plan detail.");
+            return;
+        }
+        // 获取依赖计划 ID 列表
+        List<ProducePlanInputSourceParam> inputSources = detail.getInputSourceGroups().get(0).getInputSources();
+        List<String> dependPlanIds = new ArrayList<>();
+        for (ProducePlanInputSourceParam inputSource : inputSources) {
+            dependPlanIds.add(inputSource.getInputSourceValue());
+        }
+        // 如果计划 ID 已存在,直接返回
+        if (dependPlanIds.contains(planId)) {
+            log.info("depend_plan_id exist: {}", planId);
+            return;
+        }
+        aigcProducePlanSaveService.save(planName, planId, detail);
     }
 
-
 }

+ 1 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/DataDashboardService.java

@@ -23,7 +23,7 @@ import com.tzld.longarticle.recommend.server.model.param.PublishContentParam;
 import com.tzld.longarticle.recommend.server.model.vo.FirstContentScoreExport;
 import com.tzld.longarticle.recommend.server.model.vo.IntermediateIndicatorsExport;
 import com.tzld.longarticle.recommend.server.model.vo.NewSortStrategyExport;
-import com.tzld.longarticle.recommend.server.model.vo.ProduceAuditLayoutContentObjVO;
+import com.tzld.longarticle.recommend.server.model.vo.aigc.ProduceAuditLayoutContentObjVO;
 import com.tzld.longarticle.recommend.server.repository.aigc.*;
 import com.tzld.longarticle.recommend.server.repository.crawler.AccountAvgInfoRepository;
 import com.tzld.longarticle.recommend.server.repository.crawler.ArticleDetailInfoRepository;

+ 2 - 2
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/filter/strategy/BadStrategy.java

@@ -2,7 +2,7 @@ package com.tzld.longarticle.recommend.server.service.recommend.filter.strategy;
 
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.longarticle.recommend.server.model.dto.Content;
-import com.tzld.longarticle.recommend.server.remote.AIGCRemoteService;
+import com.tzld.longarticle.recommend.server.remote.aigc.AIGCWaitingPublishContentService;
 import com.tzld.longarticle.recommend.server.service.recommend.filter.FilterParam;
 import com.tzld.longarticle.recommend.server.service.recommend.filter.FilterResult;
 import com.tzld.longarticle.recommend.server.service.recommend.filter.FilterStrategy;
@@ -19,7 +19,7 @@ import java.util.List;
 public class BadStrategy implements FilterStrategy {
 
     @Autowired
-    private AIGCRemoteService aigcRemoteService;
+    private AIGCWaitingPublishContentService aigcWaitingPublishContentService;
 
     @ApolloJsonValue("${badTitles:[]}")
     private static List<String> badTitles;

+ 3 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/recall/RecallService.java

@@ -14,7 +14,7 @@ import com.tzld.longarticle.recommend.server.model.entity.crawler.Article;
 import com.tzld.longarticle.recommend.server.model.entity.crawler.ArticleDetailInfo;
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.ArticleCategory;
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.ArticlePoolPromotionSource;
-import com.tzld.longarticle.recommend.server.remote.AIGCRemoteService;
+import com.tzld.longarticle.recommend.server.remote.aigc.AIGCWaitingPublishContentService;
 import com.tzld.longarticle.recommend.server.repository.aigc.CrawlerMetaArticleRepository;
 import com.tzld.longarticle.recommend.server.repository.crawler.AccountAvgInfoRepository;
 import com.tzld.longarticle.recommend.server.repository.crawler.AccountCorrelationRepository;
@@ -65,7 +65,7 @@ public class RecallService implements ApplicationContextAware {
     @Autowired
     CrawlerMetaArticleRepository crawlerMetaArticleRepository;
     @Autowired
-    AIGCRemoteService aigcRemoteService;
+    AIGCWaitingPublishContentService aigcWaitingPublishContentService;
     @Autowired
     AccountIndexAvgViewCountService accountIndexAvgViewCountService;
     @Autowired
@@ -150,7 +150,7 @@ public class RecallService implements ApplicationContextAware {
     }
 
     private List<Content> getAllContent(RecallParam param) {
-        List<Content> content = aigcRemoteService.getAllContent(param);
+        List<Content> content = aigcWaitingPublishContentService.getAllContent(param);
         if (CollectionUtils.isEmpty(content)) {
             FeishuMessageSender.sendWebHookMessage(FeishuRobotIdEnum.RECOMMEND.getRobotId(),
                     "内容召回失败\n"

+ 0 - 920
long-article-recommend-service/src/main/resources/file/ProduceConfig.json

@@ -1,920 +0,0 @@
-{
-  "文章联想_v1": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240802080355355308981",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "账号联想_v1": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240802021606053813696",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "次条利用池_v1": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240804003153130851174",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "头条利用池_v1": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240802143345289374071",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "头条利用池_v2": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240802171417146947657",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "买号(7老)利用池": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240722173910406354866",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "一级利用池": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240722172106621853929",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "二级利用池": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240722171934234321806",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "三级利用池": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240722171903994980781",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "all": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240619065638039678211",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "买号(7老)": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "20240717134102812837584",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "指尖奇文": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619134542078136922",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150015057273348",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "老友欢聚地": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135136709957703",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145939700385880",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "生活百态观": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135355095726865",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145905550944001",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "退休老年圈": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135325636564473",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145651682680591",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "人生百事观": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135303864280211",
-      "metaso_v6": "20240627011538166839002"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150049064956907",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "畅聊奇闻": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135417379978694",
-      "metaso_v6": "20240627011625369570686"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145719647110806",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "便捷生活好方法": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135437205390582",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150156522383672",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "趣味晚年": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240627010500078504066",
-      "metaso_v6": "20240619174630506699369"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620144255253939206",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "快乐精选集": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240714164137042321634",
-      "metaso_v6": "20240619174714266351653"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620144502584415706",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "老友快乐谈": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240627010602025684655",
-      "metaso_v6": "20240619174744395696472"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620144608760115389",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "幸福启示": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240714164117345513209",
-      "metaso_v6": "20240619174810985681762"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620144721106250461",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "生活指示录": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240714164057308955191",
-      "metaso_v6": "20240619174837425970293"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620144804890613455",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "态度说": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240627010628731841889",
-      "metaso_v6": "20240619174903746219850"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620144925698737830",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "幸福妙招合集": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240627010652634645284",
-      "metaso_v6": "20240619174929810475216"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145008715100040",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "喜乐生活派": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240717090014005862918",
-      "metaso_v6": "20240619174952916604259"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145041908938651",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "路边闲聊社": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619144459943499013",
-      "metaso_v6": "20240619175014885374566"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145301628584858",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "都市镜头": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619144522175396636",
-      "metaso_v6": "20240619175111438640542"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145345798678601",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "天天学生活技巧": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240717085954024528751",
-      "metaso_v6": "20240619175129772903031"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145409686973229",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "老来生活家": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240627011256635889174",
-      "metaso_v6": "20240619175149533397431"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145539840948858",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "生活晓常识": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240714164033574268429",
-      "metaso_v6": "20240619175220306941746"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620145615118296851",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "情为老友": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619144433914418041",
-      "metaso_v6": "20240624234359392962863"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150231114561621",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "趣味生活达人": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240719075051374305103",
-      "metaso_v6": "20240619175038305624281"
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150329506848179",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "音药金曲厅": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135638091488314",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150406308651076",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "生活情感叁读": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135704525482328",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150439125918056",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "心灵情感驿站": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135525121453992",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150520727865407",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "生活良读": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135729722903060",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150558023343302",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "祝福养心厅": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240624235322236462213",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150649016805823",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "缘来养心厅": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135457787133327",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150709796326757",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "音药养心馆": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135613012890962",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150736899611790",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "票圈正能量": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135813195419691",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150802444512365",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "票圈美文速递": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135751447262273",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150831653696454",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "票圈最新消息": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240619135837022448677",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240620150854864561123",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "票圈极速版": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240622081711978679528",
-      "metaso_v6": ""
-    },
-    "【3-8】": {
-      "bing_v1": "20240622081948700745264",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "幸福晚年知音": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240714164013250695197",
-      "metaso_v6": "20240624132200428942877"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624135837374916828",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "奇趣百味生活": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240723161713178487742",
-      "metaso_v6": "20240624132237983472872"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624135907372955213",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "乐享生活小窍门": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240717085917306445525",
-      "metaso_v6": "20240624132300148451729"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624135917131523966",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "看不够妙招": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240717085858257828553",
-      "metaso_v6": "20240624134354447790502"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624135927496900961",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "无忧自在生活": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240723161624895222132",
-      "metaso_v6": "20240624132320440489860"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624135937235856611",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "无忧潮生活": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240717085835438450110",
-      "metaso_v6": "20240624132343891797372"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624135946820843667",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "无忧生活小妙招": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240714163940219653626",
-      "metaso_v6": "20240624132407021137050"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624135956356654156",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "巷尾风声": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240624134449968606209",
-      "metaso_v6": "20240624132436019369092"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624140005629185547",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "实用妙招800个": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240719074342974320739",
-      "metaso_v6": "20240624132505957988929"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624140015939232442",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  },
-  "小贝生活课堂": {
-    "【1】": {
-      "bing_v1": "",
-      "direct": "",
-      "metaso_v6": ""
-    },
-    "【2】": {
-      "bing_v1": "",
-      "direct": "20240717085935048670085",
-      "metaso_v6": "20240624132527369730715"
-    },
-    "【3-8】": {
-      "bing_v1": "20240624140025297917686",
-      "direct": "",
-      "metaso_v6": ""
-    }
-  }
-}

+ 0 - 122
long-article-recommend-service/src/main/resources/file/长文_帖子结果库_根据计划id获取内容.json

@@ -1,122 +0,0 @@
-{
-    "describe": "长文_帖子结果库_根据计划id获取内容",
-    "api_url": "http://aigc-api.cybertogether.net/aigc/crawler/content/list",
-    "res": {
-        "code": 0,
-        "msg": "success",
-        "data": {
-            "totalCount": 1,
-            "data": [
-                {
-                    "id": "4957108",
-                    "channel": 5,
-                    "channelContentId": "b9c2352defc1c70f6000bed5f2d4bc2c",
-                    "contentLink": "http://mp.weixin.qq.com/s?__biz=Mzg4MTk3MDMzMA==&mid=2247495126&idx=2&sn=b1c3b30a6bdcdcb5d41ec5d5a2ab9eff&chksm=cf5f7023f828f9359f452e735c2c1dd9c8c3bcd77d358b6c71450db548bc6dd3e704d7e134d1#rd",
-                    "coverImageUrl": "http://res.cybertogether.net/crawler/image/d003329fb2a2664c7b83825db9817720.jpeg",
-                    "videoUrl": null,
-                    "title": "华春莹代表中国,用《琉球地位未定论》,好好给日本上了一课",
-                    "content": null,
-                    "contentContactInfo": null,
-                    "status": null,
-                    "failReason": null,
-                    "taskJson": null,
-                    "outputJson": null,
-                    "tagJson": null,
-                    "channelAccountId": "5bd2b7c9dc76dc0c061ab91ac9c836e4",
-                    "accountLink": "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=Mzg4MTk3MDMzMA==&scene=124#wechat_redirect",
-                    "accountName": "庆彬有理",
-                    "accountAvatarUrl": null,
-                    "accountDescription": "数字经济智库高级研究员日本横滨国立大学特聘教授国际问题研究者",
-                    "accountBackgroundUrl": null,
-                    "accountFollowerCount": null,
-                    "accountPublishCount": null,
-                    "accountLikeCount": null,
-                    "accountLikeFollowerRate": "0",
-                    "keyFrameUrls": null,
-                    "voiceUrl": null,
-                    "srt": null,
-                    "topics": null,
-                    "analyzeTasks": null,
-                    "analyzeStatus": null,
-                    "keyFrameTags": null,
-                    "srtTags": null,
-                    "imageElementTags": null,
-                    "contentTags": null,
-                    "sourceCrawlerPlans": [
-                        {
-                            "id": "20240618064316453133944",
-                            "name": "算法-票圈美文速递-20240618_30"
-                        },
-                        {
-                            "id": "20240618083435678510787",
-                            "name": "测试"
-                        }
-                    ],
-                    "viewCount": 100001,
-                    "playCount": null,
-                    "likeCount": 2393,
-                    "collectCount": null,
-                    "commentCount": null,
-                    "crawlerCommentCount": 7,
-                    "lookingCount": 735,
-                    "midAdNum": null,
-                    "bottomAdNum": null,
-                    "publishTimestamp": 1716482280000,
-                    "crawlerTimestamp": 1716496149321,
-                    "sourceCrawlerPlan": null,
-                    "sourcePretreatPlan": null,
-                    "quoteGenerateContents": [
-                        {
-                            "id": "20240617095235976423066",
-                            "name": null,
-                            "produceModal": 3
-                        },
-                        {
-                            "id": "20240618044830290938828",
-                            "name": null,
-                            "produceModal": 3
-                        }
-                    ],
-                    "manMadePostTags": null,
-                    "manMadeTitleTags": null,
-                    "manMadeContentTags": null,
-                    "manMadeImageTags": null,
-                    "manMadeVideoTags": null,
-                    "manMadeAudioTags": null,
-                    "manMadeSrtTags": null,
-                    "keyPoints": null,
-                    "hotPoints": null
-                }
-            ]
-        }
-    },
-    "data": {
-        "params": {
-            "filterItems": [
-                {
-                    "itemName": "sourceCrawlerPlans",
-                    "selectValues": [
-                        "20240618083435678510787"
-                    ]
-                }
-            ],
-            "listFieldFormula": [],
-            "pageNum": 1,
-            "pageSize": 50,
-            "contentModal": 3
-        },
-        "baseInfo": {
-            "token": "79dcb40af1de43b1bd9fe3a731dbaa15",
-            "appType": 9,
-            "platform": "pc",
-            "appVersionCode": 1000,
-            "clientTimestamp": 1,
-            "fid": 1,
-            "loginUid": 1,
-            "pageSource": 1,
-            "requestId": 1,
-            "rid": 1,
-            "uid": 1
-        }
-    }
-}

+ 0 - 107
long-article-recommend-service/src/main/resources/file/长文_抓取计划_根据计划id获取状态.json

@@ -1,107 +0,0 @@
-{
-    "describe": "长文_抓取计划_根据计划id获取状态",
-    "api_url": "http://aigc-api.cybertogether.net/aigc/crawler/plan/list/contentCrawlerPlan",
-    "res": {
-        "code": 0,
-        "msg": "success",
-        "data": {
-            "totalCount": 1,
-            "data": [
-                {
-                    "id": "20240618083435678510787",
-                    "name": "测试",
-                    "frequencyType": 2,
-                    "planTag": null,
-                    "tagPenetrateFlag": 0,
-                    "executeRate": null,
-                    "executeTimeInterval": null,
-                    "addChannel": null,
-                    "taskJson": null,
-                    "outputJson": null,
-                    "status": null,
-                    "channel": 5,
-                    "crawlerMode": 5,
-                    "modeValues": [
-                        "内容ID/https://mp.weixin.qq.com/s?__biz=Mzg4MTk3MDMzMA==&mid=2247495126&idx=2&sn=b1c3b30a6bdcdcb5d41ec5d5a2ab9eff&chksm=cf5f7023f828f9359f452e735c2c1dd9c8c3bcd77d358b6c71450db548bc6dd3e704d7e134d1#rd"
-                    ],
-                    "filters": null,
-                    "crawlerTotalNum": 1,
-                    "lastCrawlerTimestamp": 1718699726645,
-                    "nextCrawlerTimestamp": 1718786126645,
-                    "crawlerLastNum": 1,
-                    "quote": null,
-                    "createTimestamp": 1718699675678,
-                    "createUserName": "xiaohui.young",
-                    "crawlerStatus": 1,
-                    "updateData": {
-                        "planType": 2,
-                        "frequencyType": 2,
-                        "planTag": null,
-                        "tagPenetrateFlag": 0,
-                        "id": "20240618083435678510787",
-                        "name": "测试",
-                        "contentModal": 3,
-                        "channel": 5,
-                        "crawlerMode": 5,
-                        "imageSearchModeValues": [],
-                        "inputModeValues": [
-                            "https://mp.weixin.qq.com/s?__biz=Mzg4MTk3MDMzMA==&mid=2247495126&idx=2&sn=b1c3b30a6bdcdcb5d41ec5d5a2ab9eff&chksm=cf5f7023f828f9359f452e735c2c1dd9c8c3bcd77d358b6c71450db548bc6dd3e704d7e134d1#rd"
-                        ],
-                        "selectModeValues": [],
-                        "modePublishTimeStart": null,
-                        "modePublishTimeEnd": null,
-                        "accountFilters": [],
-                        "filterAccountMatchMode": 1,
-                        "contentFilters": [],
-                        "filterContentMatchMode": 1,
-                        "crawlerComment": 0,
-                        "executeRate": null,
-                        "executeDate": null,
-                        "executeWindowStart": null,
-                        "executeWindowEnd": null,
-                        "executeTimeInterval": null,
-                        "executeNum": null,
-                        "addModal": null,
-                        "addChannel": null,
-                        "fileUpload": null,
-                        "prompt": null,
-                        "acelFlag": null,
-                        "inputGroup": null
-                    },
-                    "errorMsg": null,
-                    "expressionValue": null,
-                    "relPublishAccounts": null
-                }
-            ]
-        }
-    },
-    "data": {
-        "params": {
-            "filterItems": [
-                {
-                    "itemName": "id",
-                    "selectValues": [
-                        "20240618083435678510787"
-                    ]
-                }
-            ],
-            "listFieldFormula": [],
-            "pageNum": 1,
-            "pageSize": 50,
-            "contentModal": 3
-        },
-        "baseInfo": {
-            "token": "79dcb40af1de43b1bd9fe3a731dbaa15",
-            "appType": 9,
-            "platform": "pc",
-            "appVersionCode": 1000,
-            "clientTimestamp": 1,
-            "fid": 1,
-            "loginUid": 1,
-            "pageSource": 1,
-            "requestId": 1,
-            "rid": 1,
-            "uid": 1
-        }
-    }
-}

+ 3 - 3
long-article-recommend-service/src/test/java/com/tzld/longarticle/recommend/server/FilterStrategyTest.java

@@ -4,7 +4,7 @@ import cn.hutool.core.io.resource.ResourceUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.tencentcloudapi.tms.v20201229.models.TextModerationResponse;
 import com.tzld.longarticle.recommend.server.model.dto.Content;
-import com.tzld.longarticle.recommend.server.remote.AIGCRemoteService;
+import com.tzld.longarticle.recommend.server.remote.aigc.AIGCWaitingPublishContentService;
 import com.tzld.longarticle.recommend.server.remote.ArticleSensitiveRemoteService;
 import com.tzld.longarticle.recommend.server.repository.crawler.AccountAvgInfoRepository;
 import com.tzld.longarticle.recommend.server.model.entity.crawler.AccountAvgInfo;
@@ -34,7 +34,7 @@ public class FilterStrategyTest {
     @Resource
     FilterStrategy historyTitleStrategy;
     @Resource
-    AIGCRemoteService aigcRemoteService;
+    AIGCWaitingPublishContentService aigcWaitingPublishContentService;
     @Resource
     ArticleSensitiveRemoteService articleSensitiveRemoteService;
     @Resource
@@ -62,7 +62,7 @@ public class FilterStrategyTest {
         param.setAccountName("票圈最新消息");
         param.setAccountId("20231212144543068928298");
         param.setPlanId("20240724092832149199870");
-        List<Content> content = aigcRemoteService.getAllContent(param);;
+        List<Content> content = aigcWaitingPublishContentService.getAllContent(param);;
         FilterParam filterParam = new FilterParam();
         filterParam.setAccountName(param.getAccountName());
         filterParam.setContents(content);