diff --git a/business-css/pom.xml b/business-css/pom.xml
index 8763eea..925ee02 100644
--- a/business-css/pom.xml
+++ b/business-css/pom.xml
@@ -23,7 +23,7 @@
UTF-8
-
+
org.springframework.boot
@@ -66,18 +66,6 @@
plain
-
-
- org.apache.poi
- poi
- 4.1.2
-
-
- org.apache.poi
- poi-ooxml
- 4.1.2
-
-
@@ -101,6 +89,29 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.4.1
+
+
+ enforce-java
+
+ enforce
+
+
+
+
+ [17,)
+
+
+ [3.6.3,)
+
+
+
+
+
+
org.apache.maven.plugins
maven-compiler-plugin
diff --git a/business-css/src/main/java/com/yfd/business/css/config/BusinessCssAutoConfiguration.java b/business-css/src/main/java/com/yfd/business/css/config/BusinessCssAutoConfiguration.java
new file mode 100644
index 0000000..2f66575
--- /dev/null
+++ b/business-css/src/main/java/com/yfd/business/css/config/BusinessCssAutoConfiguration.java
@@ -0,0 +1,13 @@
+package com.yfd.business.css.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+@Configuration(proxyBeanMethods = false)
+@ComponentScan(basePackages = {
+ "com.yfd.business.css.controller"
+})
+@Import(OpenApiConfig.class)
+public class BusinessCssAutoConfiguration {
+}
diff --git a/business-css/src/main/java/com/yfd/business/css/config/OpenApiConfig.java b/business-css/src/main/java/com/yfd/business/css/config/OpenApiConfig.java
new file mode 100644
index 0000000..d49934f
--- /dev/null
+++ b/business-css/src/main/java/com/yfd/business/css/config/OpenApiConfig.java
@@ -0,0 +1,64 @@
+package com.yfd.business.css.config;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
+import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
+import org.springdoc.core.models.GroupedOpenApi;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import java.time.format.DateTimeFormatter;
+import java.io.IOException;
+
+@Configuration
+public class OpenApiConfig {
+
+ @Bean
+ public GroupedOpenApi businessCssGroup() {
+ return GroupedOpenApi.builder()
+ .group("css-business")
+ .packagesToScan("com.yfd.business.css.controller")
+ .pathsToMatch("/events/**", "/scenario-results/**", "/projects/**")
+ .build();
+ }
+
+ @Bean
+ public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
+ return builder -> {
+ DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+ builder.serializers(new LocalDateTimeSerializer(fmt));
+ builder.deserializers(new LocalDateTimeDeserializer(fmt));
+ builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ builder.serializationInclusion(JsonInclude.Include.ALWAYS);
+ SimpleModule module = new SimpleModule();
+ module.setSerializerModifier(new BeanSerializerModifier() {
+ @Override
+ public java.util.List changeProperties(
+ com.fasterxml.jackson.databind.SerializationConfig config,
+ com.fasterxml.jackson.databind.BeanDescription beanDesc,
+ java.util.List beanProperties) {
+ for (BeanPropertyWriter writer : beanProperties) {
+ if (writer.getType() != null && writer.getType().getRawClass() == String.class) {
+ writer.assignNullSerializer(new JsonSerializer
-
-
- org.apache.maven.plugins
- maven-enforcer-plugin
- 3.4.1
-
-
- enforce-rules
-
- enforce
-
-
-
-
-
- [3.6.3,)
-
-
- [17,)
-
-
-
-
-
-
-
-
org.apache.maven.plugins
diff --git a/mvn-settings.xml b/mvn-settings.xml
new file mode 100644
index 0000000..d2918e8
--- /dev/null
+++ b/mvn-settings.xml
@@ -0,0 +1,45 @@
+
+
+
+
+ aliyunmaven
+ Aliyun Maven
+ central
+ https://maven.aliyun.com/repository/public
+
+
+
+
+ aliyun
+
+
+ central
+ https://repo.maven.apache.org/maven2
+
+ true
+
+
+ true
+
+
+
+
+
+ central
+ https://repo.maven.apache.org/maven2
+
+ true
+
+
+ true
+
+
+
+
+
+
+ aliyun
+
+
diff --git a/scripts/mvn17.cmd b/scripts/mvn17.cmd
new file mode 100644
index 0000000..73701a2
--- /dev/null
+++ b/scripts/mvn17.cmd
@@ -0,0 +1,4 @@
+@echo off
+set "JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-17.0.17.10-hotspot"
+set "PATH=%JAVA_HOME%\bin;%PATH%"
+mvn %*
diff --git a/系统代码结构框架规划.md b/系统代码结构框架规划.md
index 337139e..b3addde 100644
--- a/系统代码结构框架规划.md
+++ b/系统代码结构框架规划.md
@@ -162,6 +162,8 @@ src/main/resources
# 1. 安装 framework 到本地仓库
mvn -DskipTests clean install -pl framework
+
+
# 2. 启动业务模块(自动依赖 framework)
mvn -DskipTests spring-boot:run -pl business-css
```
@@ -218,4 +220,27 @@ business-css/target/business-css-1.0-SNAPSHOT.jar # 业务服务(含内嵌 To
---
-> **一句话总结**:framework 做“平台”,business-css 做“产品”;平台沉淀,产品迭代,互不污染,横向复制。
\ No newline at end of file
+> **一句话总结**:framework 做“平台”,business-css 做“产品”;平台沉淀,产品迭代,互不污染,横向复制。
+
+## 快速稳定方案(作用:脚本先设置 JAVA_HOME 与 PATH 指向 17,再调用 Maven,确保所有构建/运行都用 JDK 17,不受工具自带 JDK 8 影响。)
+使用项目内脚本强制 JDK 17(已为你添加):
+scripts\mvn17.cmd -s mvn-settings.xml -DskipTests -pl framework -am install
+
+scripts\mvn17.cmd -s mvn-settings.xml -DskipTests -f business-css\pom.xml spring-boot:run -Dspring-boot.run.profiles=business
+
+## 在工具内终端验证并调整到 17:
+- 验证: mvn -version 、 where java 、 where mvn
+- 临时修正当前终端(一次性手动):
+ - set "JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-17.0.17.10-hotspot"
+ - set "PATH=%JAVA_HOME%\bin;%PATH%"
+ - 再 mvn -version 应为 17
+
+## 开发模式
+
+- 进入前端目录: business-css/frontend
+- 安装依赖: npm install
+- 启动开发服务器: npm run dev
+- 访问: http://localhost:3000/
+
+set "PATH=d:/Program Files/nodejs;%PATH%"
+