diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index e242ede..0000000
Binary files a/.DS_Store and /dev/null differ
diff --git a/ddp/.gitignore b/.gitignore
similarity index 94%
rename from ddp/.gitignore
rename to .gitignore
index 9aca79f..1777006 100644
--- a/ddp/.gitignore
+++ b/.gitignore
@@ -3,7 +3,7 @@ node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
-.idea
+# .idea
.Archive/
.vscode/
dist
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 10b731c..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-# 默认忽略的文件
-/shelf/
-/workspace.xml
-# 基于编辑器的 HTTP 客户端请求
-/httpRequests/
diff --git a/.idea/FIBO-Rule.iml b/.idea/FIBO-Rule.iml
deleted file mode 100644
index d6ebd48..0000000
--- a/.idea/FIBO-Rule.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index eddd419..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
deleted file mode 100644
index 198c133..0000000
--- a/.idea/encodings.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
deleted file mode 100644
index abb532a..0000000
--- a/.idea/jarRepositories.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 1686a38..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index e04ff23..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ddp/ddp-manager-web/src/main/resources/application.properties b/ddp/ddp-manager-web/src/main/resources/application.properties
index 257b306..6f60cc8 100644
--- a/ddp/ddp-manager-web/src/main/resources/application.properties
+++ b/ddp/ddp-manager-web/src/main/resources/application.properties
@@ -1 +1,64 @@
-spring.profiles.active=dev
\ No newline at end of file
+# spring.profiles.active=dev
+
+server.port=8070
+server.servlet.context-path=/Riskmanage
+
+logging.config=classpath:logging-config.xml
+
+# mysql
+spring.datasource.druid.url=jdbc:mysql://120.27.225.67:9609/riskmanage?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
+spring.datasource.druid.username=riskmanage
+spring.datasource.druid.password=riskmanage@Farben2023
+spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.druid.initialSize=20
+spring.datasource.druid.minIdle=20
+spring.datasource.druid.maxActive=100
+spring.datasource.druid.maxWait=60000
+spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
+spring.datasource.druid.minEvictableIdleTimeMillis=300000
+spring.datasource.druid.testWhileIdle=true
+spring.datasource.druid.testOnBorrow=true
+spring.datasource.druid.testOnReturn=false
+spring.datasource.druid.poolPreparedStatements=true
+spring.datasource.druid.maxOpenPreparedStatements=20
+spring.datasource.druid.validationQuery=SELECT 1
+spring.datasource.druid.validation-query-timeout=500
+spring.datasource.druid.filters=stat
+
+# redis
+redis.host=127.0.0.1
+redis.port=6379
+redis.db=0
+redis.password=
+redis.pool.maxTotal=3000
+redis.pool.maxIdle=100
+redis.pool.maxWait=1000
+redis.pool.timeout=100000
+
+# mail
+spring.mail.host=smtp.exmail.qq.com
+spring.mail.username=xxx
+spring.mail.password=xxx
+spring.mail.port=465
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.timeout=50000
+spring.mail.properties.mail.smtp.starttls.enable=true
+spring.mail.properties.mail.smtp.socketFactory.port=465
+spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
+spring.mail.properties.mail.smtp.socketFactory.fallback=false
+
+## hbase
+spring.data.hbase.quorum: ip:2181
+spring.data.hbase.rootDir: /usr/local/hbase/datatest
+spring.data.hbase.nodeParent: /hbase
+
+runner.url: http://localhost:8071
+
+# hbase
+monitor.data.storage.type=mysql
+
+# canal
+switch.use.cache=off
+switch.canal.cache=off
+canal.hostname=127.0.0.1
+canal.port=11111
\ No newline at end of file
diff --git a/ddp/ddp-runner-api/src/test/java/pmml/PmmlTest.java b/ddp/ddp-runner-api/src/test/java/pmml/PmmlTest.java
new file mode 100644
index 0000000..7bb570c
--- /dev/null
+++ b/ddp/ddp-runner-api/src/test/java/pmml/PmmlTest.java
@@ -0,0 +1,74 @@
+package pmml;
+
+import com.fibo.ddp.common.service.strategyx.aimodel.PMMLExecutor.PMMLExecutor;
+import com.fibo.ddp.common.service.strategyx.aimodel.PMMLExecutor.impl.PMMLExecutorRFImpl;
+import org.jpmml.evaluator.InputField;
+import org.jpmml.evaluator.OutputField;
+import org.jpmml.evaluator.TargetField;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PmmlTest {
+
+ public static void main(String[] args)throws Exception{
+
+ PMMLExecutor pmmlExecutor = new PMMLExecutorRFImpl();
+ String file = "/Users/dugang/work/2025/risk/fibo-rule/ddp/ddp-runner-api/src/test/resources/demo001.pmml";
+ // 加载模型文件
+ org.jpmml.evaluator.Evaluator evaluator = pmmlExecutor.loadPmml(file);
+
+
+ System.out.println("summary="+ evaluator.getSummary());
+
+ List inputFields = evaluator.getInputFields();
+ System.out.println("inputFields.size="+inputFields.size());
+ for(InputField item:inputFields){
+ System.out.println(item);
+ }
+ List activeFields = evaluator.getActiveFields();
+ System.out.println("activeFields.size="+activeFields.size());
+ for(InputField item:activeFields){
+ System.out.println(item);
+ }
+
+ List targetFields = evaluator.getTargetFields();
+ System.out.println("targetFields.size="+targetFields.size());
+ for(TargetField item:targetFields){
+ System.out.println(item);
+ }
+ List outputFields = evaluator.getOutputFields();
+ System.out.println("outputFields.size="+outputFields.size());
+ for(OutputField item:outputFields){
+ System.out.println(item);
+ }
+
+
+
+
+ Map input = new HashMap<>();
+ input.put("x1",1.0);
+ input.put("x2",2.0);
+
+ double modelResult = pmmlExecutor.predict(evaluator, input);
+
+ System.out.println("modelResult="+modelResult);
+
+
+ input.put("x1","1.0");
+ input.put("x2","2.0");
+ modelResult = pmmlExecutor.predict(evaluator, input);
+ System.out.println("modelResult="+modelResult);
+
+ input.put("x1","1.7");
+ input.put("x2","2.1");
+ modelResult = pmmlExecutor.predict(evaluator, input);
+ System.out.println("modelResult="+modelResult);
+
+
+
+
+
+ }
+}
diff --git a/ddp/ddp-runner-api/src/test/resources/demo001.pmml b/ddp/ddp-runner-api/src/test/resources/demo001.pmml
new file mode 100644
index 0000000..e8443a6
--- /dev/null
+++ b/ddp/ddp-runner-api/src/test/resources/demo001.pmml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file