This commit is contained in:
2026-10-20 23:34:22 +08:00
parent 0dd9c8db07
commit 9f6e43ef3f
42 changed files with 1526 additions and 146 deletions
@@ -15,6 +15,24 @@ const http = (path, source, target, contexts, access, idempotency, note) => ({
})
export const SYNCHRONOUS_CLIENTS = Object.freeze([
feign('firstleg/src/main/java/com/baiyue/firstleg/client/AppointmentWorkRouteClient.java',
'firstleg-service', 'lastleg-service', ['REQUEST'], 'READ', 'SAFE_READ',
'直送路线守卫经内部令牌读取原预约路线事实,GET无远端业务写入,不接管预约创建'),
feign('firstleg/src/main/java/com/baiyue/firstleg/workflow/LastlegWorkflowClient.java',
'firstleg-service', 'lastleg-service', ['REQUEST'], 'READ', 'SAFE_READ',
'工作流页按精确来源批量只读尾程事实,POST仅查询,不跨库或写尾程状态'),
feign('lastleg-service/src/main/java/com/baiyue/lastleg/appointmentwork/AppointmentWorkFirstlegClient.java',
'lastleg-service', 'firstleg-service', ['REQUEST', 'BACKGROUND'], 'READ', 'SAFE_READ',
'请求及周期同步读取原头程容器和来源事实,GET/批量POST均为远端只读,本地同步写入不等于写Firstleg'),
feign('lastleg-service/src/main/java/com/baiyue/lastleg/appointmentwork/AppointmentWorkOwnerClient.java',
'lastleg-service', 'iam-service', ['REQUEST'], 'READ', 'SAFE_READ',
'预约负责人校验只读IAM有效平台成员目录,内部令牌保护,不修改账号角色或预约'),
http('integration-service/src/main/java/com/baiyue/integration/provider/lingxing/LingxingQuantityHttpSink.java',
'integration-service', 'lastleg-service', ['BACKGROUND'], 'READ_WRITE', 'MIXED',
'有界诊断观察worker读取状态并记录观测/停止状态,不接触供应商;请求和响应有界、拒绝重定向,不自动重试或假定写入可免费重放'),
http('lastleg-service/src/main/java/com/baiyue/lastleg/discard/gateway/HttpCargoDiscardPhotoFileGateway.java',
'lastleg-service', 'file-service', ['REQUEST'], 'READ_WRITE', 'MIXED',
'废弃照片按客户、业务类别和原任务核对File归属,上传无远端幂等键且不自动重传,元数据及内容只读'),
feign('lastleg-service/src/main/java/com/baiyue/lastleg/appointmentplanning/AppointmentForecastClient.java',
'lastleg-service', 'firstleg-service', ['REQUEST'], 'READ', 'SAFE_READ',
'预约影响刷新按柜次批量读取头程不可变船期事实;POST仅查询,刷新写入仅在Lastleg本域,不写Firstleg'),
@@ -26,6 +26,7 @@ const expectedOnlineEdges = [
'finance-service->warehouse-service',
'firstleg-service->file-service',
'firstleg-service->iam-service',
'firstleg-service->lastleg-service',
'firstleg-service->order-service',
'firstleg-service->print-service',
'firstleg-service->warehouse-service',
@@ -107,7 +108,7 @@ test('all Feign clients have reviewed context, access and idempotency metadata',
const reviewed = SYNCHRONOUS_CLIENTS.filter(client => client.transport === 'FEIGN')
.map(({ path, source, target }) => ({ path, source, target }))
.sort((left, right) => left.path.localeCompare(right.path))
assert.equal(reviewed.length, 77)
assert.equal(reviewed.length, 81)
assert.deepEqual(await discoverFeignEdges(), reviewed)
})
@@ -123,7 +124,7 @@ test('all raw HTTP transports have reviewed context, access and idempotency meta
}
const reviewed = SYNCHRONOUS_CLIENTS.filter(client => client.transport === 'HTTP')
.map(client => client.path).sort()
assert.equal(reviewed.length, 30)
assert.equal(reviewed.length, 32)
assert.deepEqual(discovered.sort(), reviewed)
})
@@ -278,6 +279,10 @@ test('known user entries expose every longest simple REQUEST path over the two-h
'iam-service->warehouse-service'
] },
'order-service': { hops: 6, paths: [
'order-service->finance-service->firstleg-service->lastleg-service->file-service->iam-service->auth-service',
'order-service->finance-service->firstleg-service->lastleg-service->file-service->iam-service->warehouse-service',
'order-service->firstleg-service->lastleg-service->finance-service->file-service->iam-service->auth-service',
'order-service->firstleg-service->lastleg-service->finance-service->file-service->iam-service->warehouse-service',
'order-service->lastleg-service->finance-service->firstleg-service->file-service->iam-service->auth-service',
'order-service->lastleg-service->finance-service->firstleg-service->file-service->iam-service->warehouse-service'
] },