From 4614737d518b54a1ac4e5409fbf7a520bdb83a58 Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 23 Apr 2026 20:45:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(iot):=20B1=20=E6=96=B0=E5=BB=BA=20viewsh-m?= =?UTF-8?q?odule-iot-rule=20Maven=20=E6=A8=A1=E5=9D=97=E9=AA=A8=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 viewsh-module-iot-rule/pom.xml(仅依赖 iot-api + iot-core + Aviator 5.3.3 + mybatis/redis starter) - 新增 package-info.java / ModuleSmokeTest.java / spring.factories 占位 - viewsh-module-iot/pom.xml 新增 rule(core 之后、server 之前) - viewsh-module-iot-server/pom.xml 新增 rule 依赖(core 之后、业务组件之前) - Known Pitfalls 落地: ⚠️ 评审 A3:依赖方向 rule → core → api,严禁反向(dependency:tree 验证) ⚠️ 评审 R6:server 对 rule 的依赖按项目一贯顺序插入 ⚠️ Aviator 5.3.3 首次引入,rule 模块 pom 内显式声明 version Acceptance Criteria 全 8 项通过(见任务卡 Notes §8.2026-04-23 执行记录) Co-Authored-By: Claude Sonnet (B1 subagent) Co-Authored-By: Claude Opus 4.7 (1M context, orchestrator) --- viewsh-module-iot/pom.xml | 1 + .../viewsh-module-iot-rule/pom.xml | 58 +++++++++++++++++++ .../viewsh/module/iot/rule/package-info.java | 10 ++++ .../main/resources/META-INF/spring.factories | 4 ++ .../module/iot/rule/ModuleSmokeTest.java | 12 ++++ .../viewsh-module-iot-server/pom.xml | 5 ++ 6 files changed, 90 insertions(+) create mode 100644 viewsh-module-iot/viewsh-module-iot-rule/pom.xml create mode 100644 viewsh-module-iot/viewsh-module-iot-rule/src/main/java/com/viewsh/module/iot/rule/package-info.java create mode 100644 viewsh-module-iot/viewsh-module-iot-rule/src/main/resources/META-INF/spring.factories create mode 100644 viewsh-module-iot/viewsh-module-iot-rule/src/test/java/com/viewsh/module/iot/rule/ModuleSmokeTest.java diff --git a/viewsh-module-iot/pom.xml b/viewsh-module-iot/pom.xml index e64b6d59..dc86405e 100644 --- a/viewsh-module-iot/pom.xml +++ b/viewsh-module-iot/pom.xml @@ -10,6 +10,7 @@ viewsh-module-iot-api viewsh-module-iot-core + viewsh-module-iot-rule viewsh-module-iot-server viewsh-module-iot-gateway diff --git a/viewsh-module-iot/viewsh-module-iot-rule/pom.xml b/viewsh-module-iot/viewsh-module-iot-rule/pom.xml new file mode 100644 index 00000000..c8b96b1d --- /dev/null +++ b/viewsh-module-iot/viewsh-module-iot-rule/pom.xml @@ -0,0 +1,58 @@ + + + + viewsh-module-iot + com.viewsh + ${revision} + + 4.0.0 + + viewsh-module-iot-rule + jar + + ${project.artifactId} + IoT 规则引擎独立模块(DAG + SPI + 抖动抑制 + Aviator 脚本) + + + + + com.viewsh + viewsh-module-iot-api + ${revision} + + + com.viewsh + viewsh-module-iot-core + ${revision} + + + + + com.googlecode.aviator + aviator + 5.3.3 + + + + + com.viewsh + viewsh-spring-boot-starter-mybatis + + + + + com.viewsh + viewsh-spring-boot-starter-redis + + + + + com.viewsh + viewsh-spring-boot-starter-test + test + + + + diff --git a/viewsh-module-iot/viewsh-module-iot-rule/src/main/java/com/viewsh/module/iot/rule/package-info.java b/viewsh-module-iot/viewsh-module-iot-rule/src/main/java/com/viewsh/module/iot/rule/package-info.java new file mode 100644 index 00000000..96de10c3 --- /dev/null +++ b/viewsh-module-iot/viewsh-module-iot-rule/src/main/java/com/viewsh/module/iot/rule/package-info.java @@ -0,0 +1,10 @@ +/** + * viewsh-module-iot-rule —— IoT 规则引擎模块 + * + *

职责:DAG 规则链执行器、SPI Provider(Trigger/Condition/Action)、抖动抑制、Aviator 脚本

+ *

依赖边界(见第 8 轮评审系统边界 A): + * - 可依赖:iot-api(DTO/枚举)、iot-core(消息总线/影子接口) + * - 不可依赖:iot-gateway(接入层)、iot-server(业务层) + *

+ */ +package com.viewsh.module.iot.rule; diff --git a/viewsh-module-iot/viewsh-module-iot-rule/src/main/resources/META-INF/spring.factories b/viewsh-module-iot/viewsh-module-iot-rule/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..db730581 --- /dev/null +++ b/viewsh-module-iot/viewsh-module-iot-rule/src/main/resources/META-INF/spring.factories @@ -0,0 +1,4 @@ +# viewsh-module-iot-rule Spring Boot 自动配置 +# 后续任务(B2+)在此注册 AutoConfiguration 类 +# org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +# com.viewsh.module.iot.rule.config.IotRuleAutoConfiguration diff --git a/viewsh-module-iot/viewsh-module-iot-rule/src/test/java/com/viewsh/module/iot/rule/ModuleSmokeTest.java b/viewsh-module-iot/viewsh-module-iot-rule/src/test/java/com/viewsh/module/iot/rule/ModuleSmokeTest.java new file mode 100644 index 00000000..7dd904b8 --- /dev/null +++ b/viewsh-module-iot/viewsh-module-iot-rule/src/test/java/com/viewsh/module/iot/rule/ModuleSmokeTest.java @@ -0,0 +1,12 @@ +package com.viewsh.module.iot.rule; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class ModuleSmokeTest { + @Test + void moduleStructureOk() { + // 仅断言模块可加载、包声明存在 + assertNotNull(ModuleSmokeTest.class.getPackage()); + } +} diff --git a/viewsh-module-iot/viewsh-module-iot-server/pom.xml b/viewsh-module-iot/viewsh-module-iot-server/pom.xml index af21b27a..a6972a3d 100644 --- a/viewsh-module-iot/viewsh-module-iot-server/pom.xml +++ b/viewsh-module-iot/viewsh-module-iot-server/pom.xml @@ -46,6 +46,11 @@ viewsh-module-iot-core ${revision} + + com.viewsh + viewsh-module-iot-rule + ${revision} +