From 51877df13075ad10ef51107f15bcd21f1661febe Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 17 三月 2026 09:48:01 +0800
Subject: [PATCH] #AI
---
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/provider/AiTaskSummaryService.java | 85 +++++++++++++++++++++++++++++++++++-------
1 files changed, 71 insertions(+), 14 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiTaskSummaryService.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/provider/AiTaskSummaryService.java
similarity index 72%
rename from rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiTaskSummaryService.java
rename to rsf-server/src/main/java/com/vincent/rsf/server/ai/service/provider/AiTaskSummaryService.java
index 73029a5..4c2f2ca 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiTaskSummaryService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/provider/AiTaskSummaryService.java
@@ -1,6 +1,7 @@
-package com.vincent.rsf.server.ai.service;
+package com.vincent.rsf.server.ai.service.provider;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.server.ai.model.AiDiagnosticToolResult;
import com.vincent.rsf.server.ai.model.AiPromptContext;
import com.vincent.rsf.server.manager.entity.Task;
import com.vincent.rsf.server.manager.enums.TaskStsType;
@@ -12,27 +13,62 @@
import java.util.*;
@Service
-public class AiTaskSummaryService implements AiPromptContextProvider {
+public class AiTaskSummaryService implements AiDiagnosticDataProvider {
+
+ private static final String TOOL_CODE = "task_summary";
+ private static final String TOOL_NAME = "浠诲姟鎽樿";
@Resource
private TaskMapper taskMapper;
+ /**
+ * 杩斿洖浠诲姟宸ュ叿榛樿椤哄簭銆�
+ */
@Override
- public boolean supports(AiPromptContext context) {
- if (context == null || context.getQuestion() == null) {
- return false;
- }
- String normalized = context.getQuestion().toLowerCase(Locale.ROOT);
- return normalized.contains("task")
- || normalized.contains("浠诲姟")
- || normalized.contains("鍑哄簱浠诲姟")
- || normalized.contains("鍏ュ簱浠诲姟")
- || normalized.contains("绉诲簱浠诲姟")
- || normalized.contains("澶囪揣浠诲姟");
+ public int getOrder() {
+ return 20;
}
+ /**
+ * 杩斿洖浠诲姟宸ュ叿缂栫爜銆�
+ */
@Override
- public String buildContext(AiPromptContext context) {
+ public String getToolCode() {
+ return TOOL_CODE;
+ }
+
+ /**
+ * 杩斿洖浠诲姟宸ュ叿灞曠ず鍚嶃��
+ */
+ @Override
+ public String getToolName() {
+ return TOOL_NAME;
+ }
+
+ /**
+ * 杩斿洖浠诲姟宸ュ叿榛樿璇存槑銆�
+ */
+ @Override
+ public String getDefaultToolPrompt() {
+ return "缁撳悎浠诲姟鎽樿璇嗗埆绉帇銆佸紓甯哥姸鎬佸拰鏈�杩戝彉鏇翠换鍔°��";
+ }
+
+ /**
+ * 姹囨�讳换鍔$姸鎬佸拰鏈�杩戝彉鏇翠换鍔★紝鐢熸垚浠诲姟鎽樿宸ュ叿缁撴灉銆�
+ */
+ @Override
+ public AiDiagnosticToolResult buildDiagnosticData(AiPromptContext context) {
+ return new AiDiagnosticToolResult()
+ .setToolCode(getToolCode())
+ .setToolName(getToolName())
+ .setSeverity("INFO")
+ .setSummaryText(buildTaskSummary());
+ }
+
+ /**
+ * 鍩轰簬 man_task 鐢熸垚浠诲姟鎬昏銆佺姸鎬佸垎甯冦�佺被鍨嬪垎甯冨拰鏈�杩戜换鍔℃憳瑕併��
+ */
+ private String buildTaskSummary() {
List<Task> activeTasks = taskMapper.selectList(new LambdaQueryWrapper<Task>()
.select(Task::getTaskCode, Task::getTaskStatus, Task::getTaskType, Task::getOrgLoc, Task::getTargLoc, Task::getUpdateTime)
.eq(Task::getStatus, 1));
@@ -75,6 +111,9 @@
return summary.toString();
}
+ /**
+ * 鏍煎紡鍖栦换鍔$姸鎬佺粺璁°��
+ */
private String formatStatuses(Map<Integer, Long> rows) {
List<String> parts = new ArrayList<>();
for (Map.Entry<Integer, Long> row : rows.entrySet()) {
@@ -83,6 +122,9 @@
return String.join("锛�", parts);
}
+ /**
+ * 鏍煎紡鍖栦换鍔$被鍨嬬粺璁°��
+ */
private String formatTypes(Map<Integer, Long> rows) {
List<String> parts = new ArrayList<>();
for (Map.Entry<Integer, Long> row : rows.entrySet()) {
@@ -91,6 +133,9 @@
return String.join("锛�", parts);
}
+ /**
+ * 鏍煎紡鍖栨渶杩戞洿鏂颁换鍔″垪琛ㄣ��
+ */
private String formatLatestTasks(List<Task> tasks) {
List<String> parts = new ArrayList<>();
for (Task task : tasks) {
@@ -106,6 +151,9 @@
return String.join("锛�", parts);
}
+ /**
+ * 灏嗕换鍔$姸鎬佺紪鐮佽浆鎹负鍙鏂囨銆�
+ */
private String resolveTaskStatus(Integer taskStatus) {
if (taskStatus == null) {
return "鏈煡鐘舵��";
@@ -118,6 +166,9 @@
return "鐘舵��" + taskStatus;
}
+ /**
+ * 灏嗕换鍔$被鍨嬬紪鐮佽浆鎹负鍙鏂囨銆�
+ */
private String resolveTaskType(Integer taskType) {
if (taskType == null) {
return "鏈煡绫诲瀷";
@@ -130,7 +181,13 @@
return "绫诲瀷" + taskType;
}
+ /**
+ * 缁熶竴澶勭悊绌哄瓧绗︿覆鏄剧ず銆�
+ */
private String emptyToDash(String value) {
return value == null || value.trim().isEmpty() ? "-" : value;
}
}
+
+
+
--
Gitblit v1.9.1