guard(task-210/212): ArchitectureBoundaryTest 债务基线下调 128→84(Handler 迁移后 task→业务依赖实降至 84)并随迁记录 SPI 化遗留
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user