Ver código fonte

Merge branch 'wyp/dailySafeScoreExport' of Server/long-article-recommend into master

wangyunpeng 5 meses atrás
pai
commit
36db16a693

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/mapper/aigc/AigcBaseMapper.java

@@ -68,4 +68,6 @@ public interface AigcBaseMapper {
     List<PublishAccountTypeDTO> getAccountTypeList(List<String> ghIds);
 
     List<String> getOnlyMiniprogramArticle(Integer offset, Integer pageSize);
+
+    List<ProduceTaskAtom> getProduceScoreGreaterThan(Long startTimeStamp, Long endTimeStamp);
 }

+ 61 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/entity/aigc/ProduceTaskAtom.java

@@ -0,0 +1,61 @@
+package com.tzld.longarticle.recommend.server.model.entity.aigc;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Entity
+@Table(name = "produce_task_atom")
+public class ProduceTaskAtom {
+
+    @Id
+    @Column(name = "task_atom_id")
+    private String taskAtomId;
+    @Column(name = "task_exe_id")
+    private String taskExeId;
+    @Column(name = "module_exe_id")
+    private String moduleExeId;
+    @Column(name = "plan_exe_id")
+    private String planExeId;
+    @Column(name = "plan_id")
+    private String planId;
+    @Column(name = "produce_module_type")
+    private Integer produceModuleType;
+    @Column(name = "task_id")
+    private String taskId;
+    @Column(name = "task_type")
+    private Integer taskType;
+    @Column(name = "status")
+    private Integer status;
+    @Column(name = "error_msg")
+    private String errorMsg;
+    @Column(name = "model")
+    private String model;
+    @Column(name = "regenerate_status")
+    private Integer regenerateStatus;
+    @Column(name = "regenerate_base_atom_id")
+    private String regenerateBaseAtomId;
+    @Column(name = "exe_timestamp")
+    private Long exeTimestamp;
+    @Column(name = "finish_timestamp")
+    private Long finishTimestamp;
+    @Column(name = "create_timestamp")
+    private Long createTimestamp;
+    @Column(name = "model_param")
+    private String modelParam;
+    @Column(name = "input")
+    private String input;
+    @Column(name = "prompt")
+    private String prompt;
+    @Column(name = "output")
+    private String output;
+
+}

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

@@ -0,0 +1,13 @@
+package com.tzld.longarticle.recommend.server.model.vo;
+
+import lombok.Data;
+
+@Data
+public class ProduceSafeScoreExport {
+
+    private String dateStr;
+    private String produceContentId;
+    private String score;
+    private String title;
+
+}

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

@@ -27,10 +27,7 @@ import com.tzld.longarticle.recommend.server.model.entity.longArticle.DatastatSc
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.DatastatSortStrategy;
 import com.tzld.longarticle.recommend.server.model.param.MiniprogramTaskParam;
 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.ProducePlanAuditExport;
+import com.tzld.longarticle.recommend.server.model.vo.*;
 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;
@@ -98,14 +95,15 @@ public class DataDashboardService {
 
     @ApolloJsonValue("${export.account.ghId:[]}")
     private static List<String> ghIdList;
-    private static final String sheetToken = "M0pLs3uF6hfL0htn2dMcB9eFn8e";
+    private static final String dailyDetailSheetToken = "M0pLs3uF6hfL0htn2dMcB9eFn8e";
+    private static final String dailySafeSheetToken = "Xoass3ZGYhi9BVtZDoMclGFpnYe";
 
     public void export(String beginDate, String endDate) {
         List<String> dateStrList = DateUtils.getBeforeDays(beginDate, endDate, 5);
         // 滚动删除,仅保留最近14天内容
         List<String> delDateStrList = DateUtils.getBeforeDays(null, null, 14);
         exportFeishuNewSortStrategy(dateStrList, ArticleTypeEnum.QUNFA.getVal(), StatusEnum.ZERO.getCode(),
-                sheetToken, "7d4e12", delDateStrList);
+                dailyDetailSheetToken, "7d4e12", delDateStrList);
     }
 
     @XxlJob("scheduledExport")
@@ -114,21 +112,21 @@ public class DataDashboardService {
         // 滚动删除,仅保留最近14天内容
         List<String> delDateStrList = DateUtils.getBeforeDays(null, null, 14);
         exportFeishuNewSortStrategy(dateStrList, ArticleTypeEnum.QUNFA.getVal(), StatusEnum.ZERO.getCode(),
-                sheetToken, "7d4e12", delDateStrList);
+                dailyDetailSheetToken, "7d4e12", delDateStrList);
         return ReturnT.SUCCESS;
     }
 
     public void exportWuXianLiu(String beginDate, String endDate) {
         List<String> dateStrList = DateUtils.getBeforeDays(beginDate, endDate, 5);
         exportFeishuNewSortStrategy(dateStrList, ArticleTypeEnum.WUXIANLIU.getVal(), StatusEnum.ONE.getCode(),
-                sheetToken, "Ucycvw", null);
+                dailyDetailSheetToken, "Ucycvw", null);
     }
 
     @XxlJob("scheduledExportWuXianLiu")
     public ReturnT<String> scheduledExportWuXianLiu(String param) {
         List<String> dateStrList = DateUtils.getBeforeDays(null, null, 5);
         exportFeishuNewSortStrategy(dateStrList, ArticleTypeEnum.WUXIANLIU.getVal(), StatusEnum.ONE.getCode(),
-                sheetToken, "Ucycvw", null);
+                dailyDetailSheetToken, "Ucycvw", null);
         return ReturnT.SUCCESS;
     }
 
@@ -837,7 +835,7 @@ public class DataDashboardService {
         HttpEntity<Object> queryEntity = new HttpEntity<>(httpHeaders);
         ResponseEntity<String> queryResponseEntity = restTemplate.exchange(
                 String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/values/%s!A"
-                        + startRowIndex + ":A", sheetToken, sheetId),
+                        + startRowIndex + ":A", dailyDetailSheetToken, sheetId),
                 HttpMethod.GET, queryEntity, String.class);
         JSONArray values = JSON.parseObject(queryResponseEntity.getBody())
                 .getJSONObject("data")
@@ -874,7 +872,7 @@ public class DataDashboardService {
                                 "    }\n" +
                                 "}", sheetId, deleteStartRow, deleteStartRow + Math.min(4000, delCount - delNum + startRowIndex) - 1),
                         httpHeaders);
-                ResponseEntity<String> response = restTemplate.exchange(String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/dimension_range", sheetToken),
+                ResponseEntity<String> response = restTemplate.exchange(String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/dimension_range", dailyDetailSheetToken),
                         HttpMethod.DELETE, deleteEntity, String.class);
                 JSONObject responseJSON = JSONObject.parseObject(response.getBody());
                 if (0 != responseJSON.getInteger("code")) {
@@ -888,13 +886,13 @@ public class DataDashboardService {
     @XxlJob("scheduleExportIntermediateIndicators")
     public ReturnT<String> scheduleIntermediateIndicatorsExport(String param) {
         List<String> dateStrList = DateUtils.getBeforeDays(null, null, 3);
-        exportFeishuIntermediateIndicators(dateStrList, sheetToken, "OuaLWV");
+        exportFeishuIntermediateIndicators(dateStrList, dailyDetailSheetToken, "OuaLWV");
         return ReturnT.SUCCESS;
     }
 
     public void intermediateIndicatorsExport(String beginDate, String endDate) {
         List<String> dateStrList = DateUtils.getBeforeDays(beginDate, endDate, 3);
-        exportFeishuIntermediateIndicators(dateStrList, sheetToken, "OuaLWV");
+        exportFeishuIntermediateIndicators(dateStrList, dailyDetailSheetToken, "OuaLWV");
     }
 
     private void exportFeishuIntermediateIndicators(List<String> dateStrList, String sheetToken, String sheetId) {
@@ -1538,13 +1536,13 @@ public class DataDashboardService {
     @XxlJob("scheduleExportFirstContentScore")
     public ReturnT<String> scheduleExportFirstContentScore(String param) {
         List<String> dateStrList = DateUtils.getBeforeDays(null, null, 3);
-        exportFeishuFirstContentScore(dateStrList, sheetToken, "XBFd16");
+        exportFeishuFirstContentScore(dateStrList, dailyDetailSheetToken, "XBFd16");
         return ReturnT.SUCCESS;
     }
 
     public void firstContentScoreExport(String beginDate, String endDate) {
         List<String> dateStrList = DateUtils.getBeforeDays(beginDate, endDate, 3);
-        exportFeishuFirstContentScore(dateStrList, sheetToken, "XBFd16");
+        exportFeishuFirstContentScore(dateStrList, dailyDetailSheetToken, "XBFd16");
     }
 
     private void exportFeishuFirstContentScore(List<String> dateStrList, String sheetToken, String sheetId) {
@@ -1749,7 +1747,7 @@ public class DataDashboardService {
         List<ProducePlanAuditExport> exportList = new ArrayList<>();
         dateStrList = Lists.reverse(dateStrList);
         for (String dateStr : dateStrList) {
-            Map<String, ProducePlanAuditExport> yesterdayMap = getOldProducePlanAuditExport(dateStr, sheetToken, "28RgAZ");
+            Map<String, ProducePlanAuditExport> yesterdayMap = getOldProducePlanAuditExport(dateStr, dailyDetailSheetToken, "28RgAZ");
             exportList.addAll(buildProducePlanAuditExport(dateStr, yesterdayMap));
         }
         if (CollectionUtil.isEmpty(exportList)) {
@@ -1774,7 +1772,7 @@ public class DataDashboardService {
             }
         }
 
-        doSendFeishuSheet(dateStrList, sheetToken, "28RgAZ", rowNum, rows,
+        doSendFeishuSheet(dateStrList, dailyDetailSheetToken, "28RgAZ", rowNum, rows,
                 2, null, null);
     }
 
@@ -1884,4 +1882,71 @@ public class DataDashboardService {
         return exportList;
     }
 
+
+    @XxlJob("dailySafeScoreExport")
+    public ReturnT<String> dailySafeScoreExportJob(String param) {
+        List<String> dateStrList = DateUtils.getBeforeDays(null, null, 3);
+        dailySafeScore(dateStrList);
+        return ReturnT.SUCCESS;
+    }
+
+    public void dailySafeScore(String dateStr) {
+        List<String> dateStrList = DateUtils.getBeforeDays(dateStr, null, 3);
+        if (!StringUtils.hasText(dateStr)) {
+            dateStrList = DateUtils.getBeforeDays(null, null, 3);
+        }
+        dailySafeScore(dateStrList);
+    }
+
+    public void dailySafeScore(List<String> dateStrList) {
+        List<ProduceSafeScoreExport> exportList = getProduceSafeScoreExport(dateStrList.get(0));
+        if (CollectionUtil.isEmpty(exportList)) {
+            return;
+        }
+        int rowNum = exportList.size();
+        List<List<Object>> rows = new ArrayList<>();
+        Field[] fields = ProduceSafeScoreExport.class.getDeclaredFields();
+        for (ProduceSafeScoreExport datum : exportList) {
+            List<Object> rowDatas = new ArrayList<>();
+            rows.add(rowDatas);
+
+            for (Field field : fields) {
+                field.setAccessible(true);
+                try {
+                    rowDatas.add(field.get(datum));
+                } catch (IllegalAccessException e) {
+                    log.error("获取值出错:{}", field.getName());
+                } catch (Exception e) {
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+        }
+
+        doSendFeishuSheet(dateStrList, dailySafeSheetToken, "9fc2e8", rowNum, rows,
+                2, null, null);
+    }
+
+    private List<ProduceSafeScoreExport> getProduceSafeScoreExport(String dateStr) {
+        List<ProduceSafeScoreExport> result = new ArrayList<>();
+        Long startTimeStamp = DateUtils.getStartOfDay(dateStr, "yyyyMMdd") * 1000;
+        Long endTimeStamp = DateUtils.getTodayStart();
+        List<ProduceTaskAtom> list = aigcBaseMapper.getProduceScoreGreaterThan(startTimeStamp, endTimeStamp);
+        Set<String> titles = new HashSet<>();
+        for (ProduceTaskAtom produceTaskAtom : list) {
+            if (titles.contains(produceTaskAtom.getInput())) {
+                continue;
+            }
+            ProduceSafeScoreExport res = new ProduceSafeScoreExport();
+            res.setProduceContentId(produceTaskAtom.getPlanExeId());
+            res.setScore(produceTaskAtom.getOutput());
+            res.setDateStr(DateUtils.getDateString(produceTaskAtom.getCreateTimestamp()));
+            String title = JSONObject.parseObject(produceTaskAtom.getInput()).getJSONArray("refDataList")
+                    .getJSONObject(0).getString("dataValue");
+            res.setTitle(title);
+            titles.add(title);
+            result.add(res);
+        }
+        return result;
+    }
+
 }

+ 7 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/web/recommend/DataDashboardController.java

@@ -50,4 +50,11 @@ public class DataDashboardController {
         }).start();
     }
 
+    @GetMapping("/export/dailySafeScore")
+    public void dailySafeScore(String dateStr) {
+        new Thread(() -> {
+            service.dailySafeScore(dateStr);
+        }).start();
+    }
+
 }

+ 15 - 0
long-article-recommend-service/src/main/resources/mapper/aigc/AigcBaseMapper.xml

@@ -355,4 +355,19 @@
         limit #{offset}, #{pageSize}
     </select>
 
+    <select id="getProduceScoreGreaterThan"
+            resultType="com.tzld.longarticle.recommend.server.model.entity.aigc.ProduceTaskAtom">
+        select atom.plan_exe_id, atom.input, atom.output, atom.create_timestamp
+        from produce_task_atom atom
+         join produce_plan_module_task_exe_record exe on exe.task_exe_id = atom.task_exe_id
+         join produce_plan_exe_record record on exe.plan_exe_id = record.plan_exe_id
+         join produce_plan_module_task task on task.task_id = exe.task_id
+        where task.name in ('title 安全分', 'titile 安全分')
+          and atom.create_timestamp between #{startTimeStamp} and #{endTimeStamp}
+          and atom.output >= 7
+          and record.status in (2, 6, 9)
+          and record.audit_status in (1, 3)
+        order by create_timestamp desc
+    </select>
+
 </mapper>