From d5d68339c89b1cbbd9423521bb029b6ad718facd Mon Sep 17 00:00:00 2001
From: unknown <q>
Date: 星期二, 11 三月 2025 09:38:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/appendix' into appendix

---
 JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json                              |   14 +++++++++++++-
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java |   41 ++++++++++++++++++++++++++++++++++-------
 2 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java
index 3f5b232..647a668 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java
@@ -1307,20 +1307,20 @@
     	
     	return tranReq.returnJson(jsonWr);
     }
-    
-    public ModelAndView callLLM(SMTAIServerRequest tranReq) throws Exception 
+
+    public ModelAndView callLLM(SMTAIServerRequest tranReq) throws Exception
     {
     	String llmId = tranReq.convParamToString("llm_id", false);
     	Json jsonSystems = tranReq.convParamToJson("system_json", false);
     	String question = tranReq.convParamToString("question", true);
     	boolean answerIsJson = tranReq.convParamToBoolean("answer_is_json", true);
-    	
-    	
+
+
     	SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
     	SMTLLMConnect conn = SMTAIServerApp.getApp().allocLLMConnect(llmId);
-    	
+
     	List<String> listSystem = new ArrayList<>();
-    	
+
     	if(jsonSystems != null)
     	{
 	    	for(Json jsonSystem : jsonSystems.asJsonList())
@@ -1328,7 +1328,7 @@
 	    		listSystem.add(jsonSystem.asString());
 	    	}
     	}
-    	
+
     	String answer = conn.callWithMessage(listSystem, question, tranReq);
     	if(answerIsJson)
     	{
@@ -1368,4 +1368,31 @@
 			throw new Exception("Error processing file download: " + e.getMessage());
 		}
 	}
+
+	public void downloadFileByFileId(SMTAIServerRequest tranReq, HttpServletResponse response) throws Exception {
+		String fileId = tranReq.convParamToString("file_id", true);  // 鑾峰彇璇锋眰涓殑file_id
+		SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
+
+		try {
+			// 鏌ヨ鎸囧畾file_id鐨勬枃浠惰褰�
+			DBRecords dbRecords = db.querySQL("SELECT * FROM ai_times.chat_history_attach WHERE attach_id=?", new Object[]{fileId});
+			if (dbRecords.getRecords().isEmpty()) {
+				throw new Exception("鏂囦欢涓嶅瓨鍦�");
+			}
+
+			// 鑾峰彇鏂囦欢淇℃伅
+			DBRecord fileRecord = dbRecords.getRecords().get(0);
+			String attachTitle = fileRecord.getString("attach_title");  // 鑾峰彇鏂囦欢鏍囬
+			String attachBytes = fileRecord.getString("attach_bytes");
+			byte[] bytes = attachBytes.getBytes();
+			// 璁剧疆鍝嶅簲澶村拰鏂囦欢鍚�
+			String fileName = attachTitle != null ? attachTitle : "downloaded_file";
+			response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+			response.setContentType("application/octet-stream");
+            response.getOutputStream().write(bytes);
+            response.getOutputStream().flush();
+		} catch (Exception e) {
+			throw new Exception("Error processing file download: " + e.getMessage());
+		}
+	}
 }
diff --git a/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json b/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json
index 3338d2c..6c90e27 100644
--- a/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json
+++ b/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json
@@ -358,7 +358,7 @@
 			}
 		]
 	},
-	
+
 	"llm/call_llm":{"map":{"class":"#SMTJavaAIControl", "method":"callLLM"}, "no_shrio":true,
 			"swaggers":[
 			{	"tags" : ["澶фā鍨嬫搷浣�"],
@@ -368,6 +368,18 @@
 					{"name":"system_json", "title":"鎻愮ずjson鏁扮粍 [鈥橀棶棰�1鈥�,鈥橀棶棰�2鈥�...] ", "required":false},
 					{"name":"question", "title":"鐢ㄦ埛闂", "required":true},
 					{"name":"answer_is_json", "title":"鍥炵瓟闂鏍煎紡鏄惁鏄痡son", "required":true}
+					{"name":"quota_keys", "title":"query_attach_metric_names杩斿洖鍓嶇鐨刯son", "required":true},
+					{"name":"limit", "title":"鏌ヨ椤垫暟锛岄粯璁�100", "required":false}
+				]
+			}
+		]
+	},
+	"file/download_file":{"map":{"class":"#SMTJavaAIControl", "method":"downloadFileByFileId"},
+		"swaggers":[
+			{	"tags" : ["鏂囦欢涓嬭浇"],
+				"title" : "鏂囦欢涓嬭浇",
+				"parameters" : [
+					{"name":"file_id", "title":"鏂囦欢id", "required":true}
 				]
 			}
 		]

--
Gitblit v1.9.3