- 新增 sql/iot/V2.0.1__iot_rule_chain.sql(iot_rule_chain/node/link 三表 + idx_binding 索引)
- 新增 rule 模块 dal/(3 个 DO + 4 个封闭枚举 + 3 个 Mapper)
- 新增 rule 模块 service/(CRUD + 单 Trigger 校验 + DAG DFS 无环 + 乐观锁 + 级联软删)
- 新增 rule 模块 controller/admin/(7 REST 端点 + @PreAuthorize + VO)
- 新增 resources/mapper/rule/(3 个 MyBatis XML)
- api 模块 ErrorCodeConstants 新增规则链段(1-050-030-xxx)
- **补 B1 遗漏依赖**:rule/pom.xml 追加 viewsh-spring-boot-starter-{web,security,biz-tenant}
- 测试:8 个单元用例全绿(BaseMockitoUnitTest)
- Known Pitfalls 落地:
⚠️ 评审 B4:relation_type VARCHAR + 应用层 RuleLinkRelationType.isValid 校验
⚠️ 评审 B9:updateWithVersion 乐观锁原子 SQL + idx_update_time 索引支撑 B9 拉模式兜底扫描
⚠️ 评审 B10:单 Trigger 校验在 Service 层(validateSingleTrigger)
⚠️ 评审 A4:name UK(name, tenant_id, deleted)
⚠️ 评审 §十一-B:idx_binding (tenant_id, subsystem_id, product_id, device_id) 最左匹配
Co-Authored-By: Claude Sonnet (B2 subagent) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context, orchestrator) <noreply@anthropic.com>
75 lines
2.6 KiB
XML
75 lines
2.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||
<parent>
|
||
<artifactId>viewsh-module-iot</artifactId>
|
||
<groupId>com.viewsh</groupId>
|
||
<version>${revision}</version>
|
||
</parent>
|
||
<modelVersion>4.0.0</modelVersion>
|
||
|
||
<artifactId>viewsh-module-iot-rule</artifactId>
|
||
<packaging>jar</packaging>
|
||
|
||
<name>${project.artifactId}</name>
|
||
<description>IoT 规则引擎独立模块(DAG + SPI + 抖动抑制 + Aviator 脚本)</description>
|
||
|
||
<dependencies>
|
||
<!-- 内部模块:只依赖 api(DTO/枚举)和 core(消息总线/影子接口) -->
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-module-iot-api</artifactId>
|
||
<version>${revision}</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-module-iot-core</artifactId>
|
||
<version>${revision}</version>
|
||
</dependency>
|
||
|
||
<!-- 【关键】Aviator 表达式引擎 -->
|
||
<dependency>
|
||
<groupId>com.googlecode.aviator</groupId>
|
||
<artifactId>aviator</artifactId>
|
||
<version>5.3.3</version>
|
||
</dependency>
|
||
|
||
<!-- Web / Validation / Swagger(支持 Controller + @Valid + @Operation) -->
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-spring-boot-starter-web</artifactId>
|
||
</dependency>
|
||
<!-- Security(支持 @PreAuthorize) -->
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-spring-boot-starter-security</artifactId>
|
||
</dependency>
|
||
<!-- 多租户(支持 TenantContextHolder) -->
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-spring-boot-starter-biz-tenant</artifactId>
|
||
</dependency>
|
||
|
||
<!-- DB 相关 -->
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-spring-boot-starter-mybatis</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 缓存相关 -->
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-spring-boot-starter-redis</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 测试 -->
|
||
<dependency>
|
||
<groupId>com.viewsh</groupId>
|
||
<artifactId>viewsh-spring-boot-starter-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
</dependencies>
|
||
|
||
</project>
|