diff --git a/backend-java/src/test/java/com/nanri/aiimage/ArchitectureBoundaryTest.java b/backend-java/src/test/java/com/nanri/aiimage/ArchitectureBoundaryTest.java index 423ef498..b267a3b8 100644 --- a/backend-java/src/test/java/com/nanri/aiimage/ArchitectureBoundaryTest.java +++ b/backend-java/src/test/java/com/nanri/aiimage/ArchitectureBoundaryTest.java @@ -13,12 +13,13 @@ import static org.junit.jupiter.api.Assertions.assertTrue; * * 已通过(零违规):任何 Controller 不得直接访问 Mapper 或外部 Client(211)。 * 债务防恶化(210/212,探针 2026-09-05):task 模块经 *ResultFileJobHandler 等依赖具体业务 - * Service/Mapper 共 128 处、modules 切片存在 collectdata→dedupe→task 环;清零需把 Handler 实现 - * 迁回业务模块等大重构。本文件冻结边界(不允许新增违规;存量≤128),消除债务留待专门重构。 + * Service/Mapper 曾达 128 处、modules 切片存在 collectdata→dedupe→task 等环;Handler 已迁回 + * 业务模块(212 大幅收敛)。整体模块切片无环依赖进一步 SPI 化(deletebrand 跨模块扫描/心跳等), + * 尚未达成,故本文件冻结"存量不新增"上限。 */ class ArchitectureBoundaryTest { - private static final int TASK_TO_BUSINESS_BASELINE = 128; + private static final int TASK_TO_BUSINESS_BASELINE = 84; private static volatile JavaClasses cached; @@ -56,9 +57,9 @@ class ArchitectureBoundaryTest { @Test void taskToBusinessDependencyDoesNotGrow() { - // 冻结存量(探针 128):不允许 task→业务 依赖继续增加 + // 冻结存量:Handler 迁移后 task→业务 依赖已大幅收敛;不允许继续增长 int violations = countViolations(taskRule()); - assertTrue(violations >= 1, "存在 task→业务 依赖(Handler SPI 承接点)"); + assertTrue(violations >= 1, "task→业务 依赖仍有存量(心跳/清理等待 SPI 化)"); assertTrue(violations <= TASK_TO_BUSINESS_BASELINE, "task→业务 依赖不得超过基线 " + TASK_TO_BUSINESS_BASELINE + ",当前 " + violations + ";新增依赖走 Handler SPI 或先消除存量"); @@ -66,20 +67,18 @@ class ArchitectureBoundaryTest { @Test void ruleFailuresCarryClearReason() { - // 规则附 because 说明,失败信息可定位(构造性校验:规则对象能生成可读描述) + // 规则附 because 说明,失败信息可定位 assertTrue(taskRule().getDescription().contains("no classes that reside in a package"), "规则描述应可读"); } @Test void spiHandlersAreTheSanctionedBridge() { - // 允许方向:task 模块仅 *ResultFileJobHandler(04 SPI 实现)可依赖业务 Service; - // 其余 task 类若依赖业务即属增长(由 taskToBusinessDependencyDoesNotGrow 守卫上限)。 JavaClasses classes = app(); long handlers = classes.stream() .filter(c -> c.getSimpleName().endsWith("ResultFileJobHandler")) .count(); - assertTrue(handlers >= 10, "Handler SPI 实现应在 task 模块注册,实际 " + handlers); + assertTrue(handlers >= 13, "Handler SPI 实现应在各业务模块注册,实际 " + handlers); } private static com.tngtech.archunit.lang.ArchRule taskRule() {