main
黄海 7 months ago
parent fe3d7fb4d8
commit ae1ead73e9

@ -3,7 +3,9 @@ package Tools.MaxKb.Model;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
public class MaxKbModel {
/**
@ -48,11 +50,130 @@ public class MaxKbModel {
/**
*
*
* @param modelName
* @param model_name
* @return
*/
public List<Record> getModel(String modelName) {
public List<Record> getModel(String model_name) {
String sql = "select * from model where name=?";
return Db.find(sql, modelName);
return Db.find(sql, model_name);
}
/**
*
*
* @param applicationName
* @return
*/
public Record getApplication(String applicationName) {
String sql = "select * from application where name=?";
return Db.findFirst(sql, applicationName);
}
/**
*
*
* @param sourceApplicationName
* @param targetApplicationName
*/
public String addApplication(String sourceApplicationName, String targetApplicationName) {
//获取应用
Record record = getApplication(sourceApplicationName);
if (record == null) {
System.out.println(sourceApplicationName + "应用不存在!");
System.exit(0);
}
//克隆出对象
record = new com.jfinal.plugin.activerecord.Record().setColumns(record.getColumns());
//生成一个uuid
record.set("id", UUID.randomUUID());
//名称
record.set("name", targetApplicationName);
//描述
record.set("desc","【代码生成】");
//增加
Db.save("application", "id", record);
return record.getStr("id");
}
/**
*
*
* @param dataset_name
* @return
*/
public Record getDataSet(String dataset_name) {
String sql = "select * from dataset where name=?";
return Db.findFirst(sql, dataset_name);
}
/**
*
*
* @param sourceDatasetName
*/
public String addDataSet(String sourceDatasetName, String targetDatasetName) {
//获取数据集
Record record = getDataSet(sourceDatasetName);
if (record == null) {
System.out.println(sourceDatasetName + "数据集不存在!");
System.exit(0);
}
//克隆出对象
record = new Record().setColumns(record.getColumns());
//生成一个uuid
record.set("id", UUID.randomUUID());
//名称
record.set("name", targetDatasetName);
//描述
record.set("desc","【代码生成】");
//增加
Db.save("dataset", "id", record);
return record.getStr("id");
}
/**
* 访Token
*
* @param application_id id
*/
public String addAccessToken(String application_id) {
Record record = new Record();
record.set("create_time", LocalDateTime.now());
record.set("update_time", LocalDateTime.now());
record.set("application_id", UUID.fromString(application_id));
//生成一个16位的随机数
record.set("access_token", UUID.randomUUID().toString().replace("-", "").substring(0, 16).toLowerCase());
record.set("is_active", true);
record.set("access_num", 100);
record.set("white_active", false);
record.set("white_list", new String[]{""});
record.set("show_source", false);
Db.save("application_access_token", "application_id", record);
return record.getStr("access_token");
}
/**
*
*/
public void delCodeGenerateApplicationDataSet(){
//通过SQL查询出所有desc=【代码生成】的数据
String sql = "select * from application where \"desc\"='【代码生成】'";
List<Record> list = Db.find(sql);
for (Record record : list) {
String application_id = record.getStr("id");
//删除应用与知识库的关联
sql = "delete from application_dataset_mapping where application_id=?";
Db.update(sql, UUID.fromString(application_id));
sql="delete from application_access_token where application_id=?";
Db.update(sql, UUID.fromString(application_id));
//删除应用
sql = "delete from application where id=?";
Db.update(sql, UUID.fromString(application_id));
}
sql = "delete from dataset where \"desc\"='【代码生成】'";
Db.update(sql);
}
}

@ -1,11 +1,9 @@
package Tools.MaxKb.Service.Impl;
import Tools.MaxKb.Util.MaxKbUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.PropKit;
import java.io.File;
@ -39,13 +37,13 @@ public class MaxKbImpl {
.form("file", new File(uploadFile)).execute();// 添加文件
// 获取响应内容
String result = response.body();
JSONObject jo = JSONUtil.parseObj(result);
int code = jo.getInt("code");
JSONObject jo = JSONObject.parseObject(result);
int code = jo.getInteger("code");
if (code != 200) {
System.out.println("请求失败");
return null;
}
return jo.getJSONArray("data").getJSONObject(0).getStr("id");
return jo.getJSONArray("data").getJSONObject(0).getString("id");
}
/**
@ -70,8 +68,8 @@ public class MaxKbImpl {
.form("file", new File(uploadFile)).execute();// 添加文件
// 获取响应内容
String result = response.body();
JSONObject jo = JSONUtil.parseObj(result);
int code = jo.getInt("code");
JSONObject jo = JSONObject.parseObject(result);
int code = jo.getInteger("code");
if (code != 200) {
System.out.println("请求失败");
return null;
@ -89,9 +87,11 @@ public class MaxKbImpl {
//管理员账号与密码
String username = PropKit.get("MaxKBUsername");
String password = PropKit.get("MaxKBPassword");
JSONObject requestBody = JSONUtil.createObj()
.set("username", username)
.set("password", password);
JSONObject requestBody = new JSONObject();
requestBody.put("username", username);
requestBody.put("password", password);
HttpResponse response = HttpRequest.post(Authorization_URL)
.header("Content-Type", "application/json")
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36")
@ -110,8 +110,8 @@ public class MaxKbImpl {
}
try {
JSONObject responseJson = JSONUtil.parseObj(body);
String data = responseJson.getStr("data");
JSONObject responseJson = JSONObject.parseObject(body);
String data = responseJson.getString("data");
if (StrUtil.isBlank(data)) {
throw new RuntimeException("未获取到data字段");
}
@ -178,8 +178,15 @@ public class MaxKbImpl {
}
/**
*
*
* @param authCode
* @param zskId ID
* @param body
* @return
*/
public static String _bach(String authCode, String zskId, String body) {
System.out.println("发送的body="+body);
String url = baseUrl + "/api/dataset/" + zskId + "/document/_bach";
HttpResponse response = HttpRequest.post(url)
.header("Accept", "application/json, text/plain, */*")

@ -2,8 +2,8 @@ package Tools.MaxKb.Service;
import Tools.MaxKb.Service.Impl.MaxKbImpl;
import Tools.MaxKb.Model.MaxKbModel;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.Record;
@ -72,7 +72,12 @@ public class MaxKbService {
return list.getFirst().getStr("id");
}
public static JSONObject uploadDocumentSplit(String uploadFile) {
/**
*
* @param uploadFile
* @return
*/
public static JSONObject splitDocument(String uploadFile) {
return MaxKbImpl.uploadDocumentSplit(MaxKbImpl.getAuthorization(), uploadFile);
}
@ -93,14 +98,14 @@ public class MaxKbService {
String zskId = list.getFirst().getStr("id");
//上传文件
cn.hutool.json.JSONObject jo = uploadDocumentSplit(uploadFile);
JSONObject jo = splitDocument(uploadFile);
JSONArray ja = jo.getJSONArray("data");
cn.hutool.json.JSONArray jaRes = new JSONArray();
JSONArray jaRes = new JSONArray();
for (Object o : ja) {
cn.hutool.json.JSONObject j = (cn.hutool.json.JSONObject) (o);
j.set("paragraphs", j.getJSONArray("content"));
j.remove("content");
jaRes.put(j);
jaRes.add(j);
}
return MaxKbImpl._bach(MaxKbImpl.getAuthorization(), zskId, jaRes.toString());
}

@ -1,5 +1,6 @@
package Tools.MaxKb;
import Tools.MaxKb.Model.MaxKbModel;
import Tools.MaxKb.Util.MaxKbUtil;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.Db;
@ -12,23 +13,24 @@ public class TestMaxKB {
public static void main(String[] args) throws Exception {
MaxKbModel mkm = new MaxKbModel();
//加载配置文件
PropKit.use("MaxKb.properties");
//初始化数据库
MaxKbUtil.Init();
//1、删除代码生成的应用程序与知识库
MaxKbUtil.delCodeGenerateApplicationDataSet();
mkm.delCodeGenerateApplicationDataSet();
//2、拷贝生成应用
String sourceApplicationName = "应用【模板】";
String targetApplicationName = "XXX的应用";
String application_id = MaxKbUtil.addApplication(sourceApplicationName, targetApplicationName);
String application_id = mkm.addApplication(sourceApplicationName, targetApplicationName);
//3、拷贝生成知识库
String sourceDataSetName = "知识库【模板】";
String targetDataSetName = "XXX的知识库";
String dataset_id = MaxKbUtil.addDataSet(sourceDataSetName, targetDataSetName);
String dataset_id = mkm.addDataSet(sourceDataSetName, targetDataSetName);
//4、应用与知识库关联
Record record = new Record();
@ -40,7 +42,7 @@ public class TestMaxKB {
Db.save("application_dataset_mapping", "id", record);
//5、生成应用的访问Token
String access_token = MaxKbUtil.addAccessToken(application_id);
String access_token = mkm.addAccessToken(application_id);
System.out.println("增加成功access_token=" + access_token);
}
}

@ -2,15 +2,9 @@ package Tools.MaxKb.Util;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect;
import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
public class MaxKbUtil {
/**
* MaxKB
@ -27,134 +21,4 @@ public class MaxKbUtil {
arp.setDialect(new PostgreSqlDialect());
arp.start();
}
/**
*
*
* @param model_name
* @return
*/
public static com.jfinal.plugin.activerecord.Record getModel(String model_name) {
String sql = "select * from model where name=?";
return Db.findFirst(sql, model_name);
}
/**
*
*
* @param applicationName
* @return
*/
public static com.jfinal.plugin.activerecord.Record getApplication(String applicationName) {
String sql = "select * from application where name=?";
return Db.findFirst(sql, applicationName);
}
/**
*
*
* @param sourceApplicationName
* @param targetApplicationName
*/
public static String addApplication(String sourceApplicationName, String targetApplicationName) {
//获取应用
com.jfinal.plugin.activerecord.Record record = getApplication(sourceApplicationName);
if (record == null) {
System.out.println(sourceApplicationName + "应用不存在!");
System.exit(0);
}
//克隆出对象
record = new com.jfinal.plugin.activerecord.Record().setColumns(record.getColumns());
//生成一个uuid
record.set("id", UUID.randomUUID());
//名称
record.set("name", targetApplicationName);
//描述
record.set("desc","【代码生成】");
//增加
Db.save("application", "id", record);
return record.getStr("id");
}
/**
*
*
* @param dataset_name
* @return
*/
public static com.jfinal.plugin.activerecord.Record getDataSet(String dataset_name) {
String sql = "select * from dataset where name=?";
return Db.findFirst(sql, dataset_name);
}
/**
*
*
* @param sourceDatasetName
*/
public static String addDataSet(String sourceDatasetName, String targetDatasetName) {
//获取数据集
com.jfinal.plugin.activerecord.Record record = getDataSet(sourceDatasetName);
if (record == null) {
System.out.println(sourceDatasetName + "数据集不存在!");
System.exit(0);
}
//克隆出对象
record = new Record().setColumns(record.getColumns());
//生成一个uuid
record.set("id", UUID.randomUUID());
//名称
record.set("name", targetDatasetName);
//描述
record.set("desc","【代码生成】");
//增加
Db.save("dataset", "id", record);
return record.getStr("id");
}
/**
* 访Token
*
* @param application_id id
*/
public static String addAccessToken(String application_id) {
com.jfinal.plugin.activerecord.Record record = new Record();
record.set("create_time", LocalDateTime.now());
record.set("update_time", LocalDateTime.now());
record.set("application_id", UUID.fromString(application_id));
//生成一个16位的随机数
record.set("access_token", UUID.randomUUID().toString().replace("-", "").substring(0, 16).toLowerCase());
record.set("is_active", true);
record.set("access_num", 100);
record.set("white_active", false);
record.set("white_list", new String[]{""});
record.set("show_source", false);
Db.save("application_access_token", "application_id", record);
return record.getStr("access_token");
}
/**
*
*/
public static void delCodeGenerateApplicationDataSet(){
//通过SQL查询出所有desc=【代码生成】的数据
String sql = "select * from application where \"desc\"='【代码生成】'";
List<Record> list = Db.find(sql);
for (Record record : list) {
String application_id = record.getStr("id");
//删除应用与知识库的关联
sql = "delete from application_dataset_mapping where application_id=?";
Db.update(sql, UUID.fromString(application_id));
sql="delete from application_access_token where application_id=?";
Db.update(sql, UUID.fromString(application_id));
//删除应用
sql = "delete from application where id=?";
Db.update(sql, UUID.fromString(application_id));
}
sql = "delete from dataset where \"desc\"='【代码生成】'";
Db.update(sql);
}
}

Loading…
Cancel
Save