guard(task-210/212): ArchitectureBoundaryTest 债务基线下调 128→84(Handler 迁移后 task→业务依赖实降至 84)并随迁记录 SPI 化遗留

This commit is contained in:
2026-09-05 10:26:50 +08:00
parent 1924e273e9
commit 445c139bce
@@ -13,12 +13,13 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*
* 已通过(零违规):任何 Controller 不得直接访问 Mapper 或外部 Client211)。
* 债务防恶化(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 模块仅 *ResultFileJobHandler04 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() {