From 88ae1e650fc2fc30928edfe8f3cc39108d8d1ccd Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 06 五月 2026 15:44:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New_pro' into dev_New_pro
---
src/main/java/com/ruoyi/ai/assistant/ApproveTodoIntentExecutor.java | 44 ++++++++++++++++++++++++++++++++------------
1 files changed, 32 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/ruoyi/ai/assistant/ApproveTodoIntentExecutor.java b/src/main/java/com/ruoyi/ai/assistant/ApproveTodoIntentExecutor.java
index 5911521..9f8499d 100644
--- a/src/main/java/com/ruoyi/ai/assistant/ApproveTodoIntentExecutor.java
+++ b/src/main/java/com/ruoyi/ai/assistant/ApproveTodoIntentExecutor.java
@@ -44,7 +44,7 @@
extractTimeRange(text)
);
}
- if (containsAny(text, "娴佽浆", "杩涘害", "鑺傜偣", "鏃ュ織")) {
+ if (containsAny(text, "娴佽浆", "杩涘害", "鑺傜偣", "鏃ュ織", "鍗″湪", "鍗″埌", "褰撳墠瀹℃壒浜�", "澶勭悊璁板綍")) {
return StringUtils.hasText(approveId)
? approveTodoTools.getTodoProgress(memoryId, approveId)
: missingApproveId("todo_progress", "鏌ヨ瀹℃壒杩涘害闇�瑕佹彁渚涙祦绋嬬紪鍙枫��");
@@ -54,19 +54,20 @@
? approveTodoTools.getTodoDetail(memoryId, approveId)
: missingApproveId("todo_detail", "鏌ヨ瀹℃壒璇︽儏闇�瑕佹彁渚涙祦绋嬬紪鍙枫��");
}
- if (containsAny(text, "鍙栨秷瀹℃牳", "鎾ら攢瀹℃牳", "鍥為��瀹℃牳")) {
+ if (containsAny(text, "鍙栨秷瀹℃牳", "鎾ら攢瀹℃牳", "鍥為��瀹℃牳", "鎾ら攢瀹℃壒", "鎾ゅ洖瀹℃壒")
+ || (containsAny(text, "鎾ら攢", "鎾ゅ洖") && containsAny(text, "瀹℃壒鎿嶄綔", "瀹℃牳鎿嶄綔"))) {
return StringUtils.hasText(approveId)
- ? approveTodoTools.cancelReviewTodo(memoryId, approveId, extractTail(text, "鍘熷洜"))
+ ? approveTodoTools.cancelReviewTodo(memoryId, approveId, firstNonBlank(extractTail(text, "鍘熷洜"), extractTail(text, "澶囨敞")))
: missingApproveId("cancel_review_action", "鍙栨秷瀹℃牳闇�瑕佹彁渚涙祦绋嬬紪鍙枫��");
}
- if (containsAny(text, "鍒犻櫎")) {
+ if (containsAny(text, "鍒犻櫎", "绉婚櫎")) {
return StringUtils.hasText(approveId)
? approveTodoTools.deleteTodo(memoryId, approveId)
: missingApproveId("delete_action", "鍒犻櫎瀹℃壒鍗曢渶瑕佹彁渚涙祦绋嬬紪鍙枫��");
}
if (containsAny(text, "椹冲洖", "鎷掔粷")) {
return StringUtils.hasText(approveId)
- ? approveTodoTools.reviewTodo(memoryId, approveId, "reject", extractTail(text, "鍘熷洜"))
+ ? approveTodoTools.reviewTodo(memoryId, approveId, "reject", firstNonBlank(extractTail(text, "鍘熷洜"), extractTail(text, "澶囨敞")))
: missingApproveId("review_action", "椹冲洖瀹℃壒闇�瑕佹彁渚涙祦绋嬬紪鍙枫��");
}
if (containsAny(text, "瀹℃牳閫氳繃", "瀹℃壒閫氳繃", "閫氳繃瀹℃壒", "鍚屾剰瀹℃壒", "瀹℃壒鍚屾剰")) {
@@ -79,7 +80,7 @@
&& !containsAny(text, "鏈�氳繃", "閫氳繃鐜�", "瀹℃壒閫氳繃鐜�", "瀹℃牳閫氳繃鐜�")) {
return approveTodoTools.reviewTodo(memoryId, approveId, "approve", extractTail(text, "澶囨敞"));
}
- if (containsAny(text, "淇敼")) {
+ if (containsAny(text, "淇敼", "鏇存柊", "鍙樻洿")) {
return StringUtils.hasText(approveId)
? approveTodoTools.updateTodo(
memoryId,
@@ -93,19 +94,20 @@
extractValue(text, "澶囨敞"))
: missingApproveId("update_action", "淇敼瀹℃壒鍗曢渶瑕佹彁渚涙祦绋嬬紪鍙枫��");
}
- if (containsAny(text, "鍒楄〃", "寰呭姙", "鏌ヨ瀹℃壒")) {
+ if (containsAny(text, "鍒楄〃", "寰呭姙", "鏌ヨ瀹℃壒", "鍗曟嵁", "娴佺▼", "瀹℃壒鎵�")) {
return approveTodoTools.listTodos(
memoryId,
extractStatus(text),
extractApproveType(text),
extractKeyword(text),
- extractLimit(text));
+ extractLimit(text),
+ extractScope(text));
}
return null;
}
private boolean isStatsIntent(String text) {
- if (containsAny(text, "缁熻", "鍒嗘瀽", "鍥捐〃", "瓒嬪娍", "鍗犳瘮", "姹囨��", "鎬婚噺")) {
+ if (containsAny(text, "缁熻", "鍒嗘瀽", "鍥捐〃", "瓒嬪娍", "鍗犳瘮", "姹囨��", "鎬婚噺", "鍒嗗竷", "鍚勬湁澶氬皯", "鏈夊灏�")) {
return true;
}
boolean hasQueryWord = containsAny(text, "鏌ヨ", "鏌ョ湅", "鐪嬩笅", "鐪嬬湅", "鑾峰彇");
@@ -141,13 +143,13 @@
if (containsAny(text, "寰呭鏍�", "寰呭鎵�")) {
return "pending";
}
- if (containsAny(text, "瀹℃牳涓�")) {
+ if (containsAny(text, "瀹℃牳涓�", "澶勭悊涓�", "澶勭悊涓殑", "鍔炵悊涓�")) {
return "processing";
}
- if (containsAny(text, "宸查�氳繃", "瀹℃牳瀹屾垚")) {
+ if (containsAny(text, "宸查�氳繃", "閫氳繃", "瀹℃牳瀹屾垚", "瀹℃壒瀹屾垚")) {
return "approved";
}
- if (containsAny(text, "鏈�氳繃", "椹冲洖")) {
+ if (containsAny(text, "鏈�氳繃", "椹冲洖", "宸查┏鍥�", "鎷掔粷")) {
return "rejected";
}
if (containsAny(text, "閲嶆柊鎻愪氦")) {
@@ -187,7 +189,11 @@
private String extractKeyword(String text) {
String cleaned = text
.replace("鏌ヨ", "")
+ .replace("鏌ョ湅", "")
+ .replace("鍒楀嚭", "")
+ .replace("甯垜", "")
.replace("瀹℃壒", "")
+ .replace("鍗曟嵁", "")
.replace("寰呭姙", "")
.replace("鍒楄〃", "")
.replace("鍓�10鏉�", "")
@@ -263,6 +269,20 @@
return matcher.find() ? matcher.group(2).trim() : null;
}
+ private String extractScope(String text) {
+ if (containsAny(text, "鎴戝彂璧�", "鎴戞彁浜�", "鎴戠敵璇�", "鐢宠浜烘槸鎴�")) {
+ return "applicant";
+ }
+ if (containsAny(text, "寰呮垜瀹℃壒", "寰呮垜瀹℃牳", "鎴戝鐞�", "鎴戝鎵�", "褰撳墠寰呮垜", "闇�瑕佹垜澶勭悊")) {
+ return "approver";
+ }
+ return "related";
+ }
+
+ private String firstNonBlank(String first, String second) {
+ return StringUtils.hasText(first) ? first : second;
+ }
+
private String missingApproveId(String type, String description) {
Map<String, Object> result = new LinkedHashMap<>();
result.put("success", false);
--
Gitblit v1.9.3