This commit is contained in:
2026-08-25 16:40:48 +08:00
parent 1f6f1a0677
commit 87c5e18ca6
93 changed files with 1154 additions and 527 deletions
@@ -12,6 +12,7 @@ const sourceRoots = {
const internalPrefix = 'com.baiyue.lastleg.';
const sliceRules = [
['security-projection', /(?:^|\.)security\.(?:controller|dto|service)(?:\.|$)/],
['dispatch-delivery', /(?:^|\.)(?:dispatch|delivery|outbound)(?:\.|$)/],
['relabel-transfer-discard', /(?:^|\.)(?:relabel|transfer|discard)(?:\.|$)/],
['inbound-pda', /(?:^|\.)(?:inboundplan|palletops|pda)(?:\.|$)/],
@@ -74,3 +74,25 @@ test('vehicle application only depends inward and stays free of adapter framewor
&& edge.target.startsWith('com.baiyue.lastleg.') && !edge.target.startsWith(prefix));
assert.deepEqual(outwardDependencies, []);
});
test('security projection stays isolated from Lastleg business slices', () => {
const report = analyze();
const projectionClasses = report.classes.filter(entry => entry.slice === 'security-projection');
const projectionNames = new Set(projectionClasses.map(entry => entry.fqcn));
assert.deepEqual(projectionClasses.map(entry => entry.fqcn).sort(), [
'com.baiyue.lastleg.security.controller.LastlegSecurityController',
'com.baiyue.lastleg.security.dto.LastlegSecurityDtos',
'com.baiyue.lastleg.security.service.LastlegSecurityProjectionRedisMirror',
'com.baiyue.lastleg.security.service.LastlegSecurityProjectionService',
'com.baiyue.lastleg.security.service.LastlegSecurityValidationService',
'com.baiyue.lastleg.security.service.SecurityProjectionMonotonicity',
]);
assert.deepEqual(report.sliceEdges.filter(edge => edge.source === 'security-projection'), [
{ source: 'security-projection', target: 'shared-technical', count: 1 },
]);
assert.deepEqual(report.sliceEdges.filter(edge => edge.target === 'security-projection'), []);
assert.equal(report.sliceSccs.some(component => component.includes('security-projection')), false);
const businessConsumers = report.classDependencies.filter(edge => projectionNames.has(edge.target)
&& !projectionNames.has(edge.source));
assert.deepEqual(businessConsumers, []);
});