package Tools.MaxKb; import Tools.MaxKb.Util.MaxKbDb; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import java.time.LocalDateTime; import java.util.UUID; public class TestMaxKB { /** * 获取模型 * * @param model_name 模型名称 * @return */ public static Record getModel(String model_name) { String sql = "select * from model where name=?"; return Db.findFirst(sql, model_name); } /** * 获取应用 * * @param applicationName 应用名称 * @return */ public static 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) { //获取应用 Record record = getApplication(sourceApplicationName); if (record == null) { System.out.println(sourceApplicationName + "应用不存在!"); System.exit(0); } //克隆出对象 record = new Record().setColumns(record.getColumns()); //生成一个uuid record.set("id", UUID.randomUUID()); //名称 record.set("name", targetApplicationName); //增加 Db.save("application", "id", record); return record.getStr("id"); } /** * 获取数据集 * * @param dataset_name 数据集名称 * @return */ public static 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) { //获取数据集 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", targetDatasetName); //增加 Db.save("dataset", "id", record); return record.getStr("id"); } /** * 生成访问Token * * @param application_id 应用的id */ public static void 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); } public static void main(String[] args) throws Exception { //加载配置文件 PropKit.use("MaxKb.properties"); //初始化数据库 MaxKbDb.Init(); //获取模型的id String model_name = "DeepSeek"; Record record = getModel(model_name); String model_id = record.getStr("id"); System.out.println(model_id); //拷贝生成应用 String sourceApplicationName = "应用【模板】"; String targetApplicationName = "XXX的应用"; String application_id = addApplication(sourceApplicationName, targetApplicationName); //拷贝生成知识库 String sourceDataSetName = "知识库【模板】"; String targetDataSetName = "XXX的知识库"; String dataset_id = addDataSet(sourceDataSetName, targetDataSetName); //应用与知识库关联 record = new Record(); record.set("create_time", LocalDateTime.now()); record.set("update_time", LocalDateTime.now()); record.set("id", UUID.randomUUID()); record.set("application_id", UUID.fromString(application_id)); record.set("dataset_id", UUID.fromString(dataset_id)); Db.save("application_dataset_mapping", "id", record); //生成应用的访问Token addAccessToken(application_id); System.out.println("增加成功!"); } }