505 lines
16 KiB
JSON
505 lines
16 KiB
JSON
{
|
|
"schemaVersion": "1.1",
|
|
"protocolVersion": "1.0",
|
|
"requestSessionScope": {
|
|
"field": "sessionScopeToken",
|
|
"tokenVersion": "v3",
|
|
"format": "32-lowercase-hex",
|
|
"requiredMethods": [
|
|
"capabilities.list",
|
|
"command.plan",
|
|
"command.execute"
|
|
],
|
|
"bootstrapOptionalMethods": [
|
|
"health",
|
|
"context.get"
|
|
],
|
|
"boundFields": [
|
|
"databaseScopeFingerprint",
|
|
"userId",
|
|
"userName",
|
|
"accountBook",
|
|
"subSystemId",
|
|
"isAdministrator"
|
|
],
|
|
"serverAuthoritativeRecheck": true
|
|
},
|
|
"planProjectionFields": [
|
|
"planId",
|
|
"commandName",
|
|
"commandVersion",
|
|
"moduleCode",
|
|
"risk",
|
|
"createdAtUtc",
|
|
"expiresAtUtc",
|
|
"valid",
|
|
"executionAllowed",
|
|
"inputFingerprint",
|
|
"outcomeCode",
|
|
"title",
|
|
"preview",
|
|
"data",
|
|
"warnings"
|
|
],
|
|
"trustedBridgeCorrelationId": "contract-correlation-01234567",
|
|
"scenarios": [
|
|
{
|
|
"name": "purchase_resolve_to_create",
|
|
"requestedCommand": "purchase.invoice.resolve",
|
|
"autoFollowedFrom": "purchase.invoice.resolve",
|
|
"plan": {
|
|
"planId": "11111111111111111111111111111111",
|
|
"commandName": "purchase.invoice.create",
|
|
"commandVersion": "1.4",
|
|
"moduleCode": "PURCHASE",
|
|
"risk": "write",
|
|
"createdAtUtc": "2026-08-11T08:00:00Z",
|
|
"expiresAtUtc": "2026-08-11T08:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": true,
|
|
"inputFingerprint": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"outcomeCode": "purchase_create_ready",
|
|
"title": "采购发票创建预览",
|
|
"preview": {
|
|
"供应商": "SUP-1",
|
|
"发票号码": "INV-CONTRACT-1",
|
|
"发票日期": "2026-08-11",
|
|
"币种": "CNY",
|
|
"不含税金额": 20,
|
|
"税额": 2.6,
|
|
"价税合计": 22.6,
|
|
"来源附件": [
|
|
"invoice.png (aaaaaaaaaaaa…)"
|
|
],
|
|
"明细汇总不含税": 20,
|
|
"明细汇总税额": 2.6,
|
|
"明细汇总价税": 22.6,
|
|
"发票行数": 1,
|
|
"确定匹配行数": 1,
|
|
"来源采购单": [
|
|
"PO-1"
|
|
],
|
|
"来源汇率": [
|
|
1
|
|
],
|
|
"重复发票": false
|
|
},
|
|
"data": {
|
|
"outcomeCode": "purchase_create_ready",
|
|
"title": "采购发票创建预览",
|
|
"sourceDocumentCount": 1,
|
|
"sourceDocumentSetSha256": "ffe054fe7ae0cb6dc65c3af9b61d5209f439851db43d0ba5997337df154668eb",
|
|
"preview": {
|
|
"供应商": "SUP-1",
|
|
"发票号码": "INV-CONTRACT-1",
|
|
"发票日期": "2026-08-11",
|
|
"币种": "CNY",
|
|
"不含税金额": 20,
|
|
"税额": 2.6,
|
|
"价税合计": 22.6,
|
|
"来源附件": [
|
|
"invoice.png (aaaaaaaaaaaa…)"
|
|
],
|
|
"明细汇总不含税": 20,
|
|
"明细汇总税额": 2.6,
|
|
"明细汇总价税": 22.6,
|
|
"发票行数": 1,
|
|
"确定匹配行数": 1,
|
|
"来源采购单": [
|
|
"PO-1"
|
|
],
|
|
"来源汇率": [
|
|
1
|
|
],
|
|
"重复发票": false
|
|
},
|
|
"lineMatches": [
|
|
{
|
|
"invoiceLineId": "L1",
|
|
"materialCode": "MAT-1",
|
|
"invoiceUnit": "件",
|
|
"invoiceQuantity": 2,
|
|
"invoiceUnitPrice": 10,
|
|
"invoiceTaxRate": 0.13,
|
|
"invoiceTaxAmount": 2.6,
|
|
"invoiceLineAmount": 20,
|
|
"status": "exact",
|
|
"sourceOrderNumber": "PO-1",
|
|
"sourceLineId": "S1",
|
|
"unit": "件",
|
|
"remainingQuantity": 5,
|
|
"unitPrice": 10,
|
|
"taxRate": 0.13,
|
|
"exchangeRate": 1,
|
|
"sourceUnit": "件",
|
|
"sourceRemainingQuantity": 5,
|
|
"sourceUnitPrice": 10,
|
|
"sourceTaxRate": 0.13,
|
|
"sourceExchangeRate": 1,
|
|
"candidateCount": 1,
|
|
"issues": []
|
|
}
|
|
]
|
|
},
|
|
"warnings": []
|
|
}
|
|
},
|
|
{
|
|
"name": "leave_resolve_to_create",
|
|
"requestedCommand": "hr.leave.resolve",
|
|
"autoFollowedFrom": "hr.leave.resolve",
|
|
"plan": {
|
|
"planId": "22222222222222222222222222222222",
|
|
"commandName": "hr.leave.create",
|
|
"commandVersion": "1.2",
|
|
"moduleCode": "LEAVE",
|
|
"risk": "write",
|
|
"createdAtUtc": "2026-08-11T08:00:00Z",
|
|
"expiresAtUtc": "2026-08-11T08:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": true,
|
|
"inputFingerprint": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
"outcomeCode": "leave_create_ready",
|
|
"title": "请假申请创建预览",
|
|
"preview": {
|
|
"员工": "EMP-1",
|
|
"请假类型": "PERSONAL",
|
|
"流转类别": "3629",
|
|
"开始时间": "2026-08-12T13:00:00",
|
|
"结束时间": "2026-08-12T17:00:00",
|
|
"核算工时": 4,
|
|
"原因": "去医院",
|
|
"创建后提交": false
|
|
},
|
|
"data": {
|
|
"outcomeCode": "leave_create_ready",
|
|
"title": "请假申请创建预览",
|
|
"preview": {
|
|
"员工": "EMP-1",
|
|
"请假类型": "PERSONAL",
|
|
"流转类别": "3629",
|
|
"开始时间": "2026-08-12T13:00:00",
|
|
"结束时间": "2026-08-12T17:00:00",
|
|
"核算工时": 4,
|
|
"原因": "去医院",
|
|
"创建后提交": false
|
|
}
|
|
},
|
|
"warnings": [
|
|
"创建和提交是两个独立审计动作,提交前必须再次确认。"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "leave_submit_followup",
|
|
"requestedCommand": "hr.leave.submit",
|
|
"autoFollowedFrom": null,
|
|
"plan": {
|
|
"planId": "33333333333333333333333333333333",
|
|
"commandName": "hr.leave.submit",
|
|
"commandVersion": "1.0",
|
|
"moduleCode": "LEAVE",
|
|
"risk": "write",
|
|
"createdAtUtc": "2026-08-11T08:00:00Z",
|
|
"expiresAtUtc": "2026-08-11T08:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": true,
|
|
"inputFingerprint": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
|
"outcomeCode": "leave_submit_ready",
|
|
"title": "请假申请提交预览",
|
|
"preview": {
|
|
"申请编号": "LEAVE-1",
|
|
"动作": "提交审批"
|
|
},
|
|
"data": {
|
|
"outcomeCode": "leave_submit_ready",
|
|
"title": "请假申请提交预览",
|
|
"preview": {
|
|
"申请编号": "LEAVE-1",
|
|
"动作": "提交审批"
|
|
}
|
|
},
|
|
"warnings": []
|
|
}
|
|
},
|
|
{
|
|
"name": "module_diagnose_read_only",
|
|
"requestedCommand": "module.diagnose",
|
|
"autoFollowedFrom": null,
|
|
"plan": {
|
|
"planId": "44444444444444444444444444444444",
|
|
"commandName": "module.diagnose",
|
|
"commandVersion": "1.0",
|
|
"moduleCode": "PURCHASE",
|
|
"risk": "read",
|
|
"createdAtUtc": "2026-08-11T08:00:00Z",
|
|
"expiresAtUtc": "2026-08-11T08:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": false,
|
|
"inputFingerprint": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
"outcomeCode": "plan_ready",
|
|
"title": null,
|
|
"preview": null,
|
|
"data": {
|
|
"diagnosis": {
|
|
"moduleCode": "PURCHASE",
|
|
"findings": [
|
|
"bill.master_fields_missing"
|
|
]
|
|
}
|
|
},
|
|
"warnings": []
|
|
}
|
|
},
|
|
{
|
|
"name": "module_trace_initialization",
|
|
"requestedCommand": "module.trace-initialization",
|
|
"autoFollowedFrom": null,
|
|
"plan": {
|
|
"planId": "55555555555555555555555555555555",
|
|
"commandName": "module.trace-initialization",
|
|
"commandVersion": "1.2",
|
|
"moduleCode": "PURCHASE",
|
|
"risk": "critical",
|
|
"createdAtUtc": "2026-08-11T08:00:00Z",
|
|
"expiresAtUtc": "2026-08-11T08:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": true,
|
|
"inputFingerprint": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
"outcomeCode": "plan_ready",
|
|
"title": "复现并诊断模块初始化",
|
|
"preview": {
|
|
"moduleCode": "PURCHASE",
|
|
"navigationCode": "NAV-PURCHASE",
|
|
"moduleName": "采购订单",
|
|
"alreadyOpen": false,
|
|
"traceSupported": true,
|
|
"traceScope": "current_erp_managed_ui_thread",
|
|
"forceTerminationSupported": false,
|
|
"maxEvents": 200,
|
|
"maxDurationSeconds": 20
|
|
},
|
|
"data": {
|
|
"title": "复现并诊断模块初始化",
|
|
"preview": {
|
|
"moduleCode": "PURCHASE",
|
|
"navigationCode": "NAV-PURCHASE",
|
|
"moduleName": "采购订单",
|
|
"alreadyOpen": false,
|
|
"traceSupported": true,
|
|
"traceScope": "current_erp_managed_ui_thread",
|
|
"forceTerminationSupported": false,
|
|
"maxEvents": 200,
|
|
"maxDurationSeconds": 20
|
|
},
|
|
"maxEvents": 200,
|
|
"maxDurationSeconds": 20,
|
|
"capturePolicy": "仅当前 ERP 托管 UI 线程;SQL 明细只覆盖 Lskj.Core.SqlHelper,另观察同线程旧日志中的数据库异常分类,不宣称覆盖模块直接 ADO.NET 的 SQL 文本;20 秒只限制 SQL 证据窗口,不会强制终止旧模块初始化;表/字段/过程/参数/调用位置使用会话内别名;不采集参数值或原始异常;不持久化原始 SQL",
|
|
"staticDiagnosis": {
|
|
"moduleCode": "PURCHASE",
|
|
"findings": [
|
|
"bill.master_fields_missing"
|
|
]
|
|
}
|
|
},
|
|
"warnings": [
|
|
"20 秒仅限制 SQL 证据采集窗口,旧版 UI 初始化无法安全强制终止;若模块可能卡死,请先在隔离测试环境复现。"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "dynamic_module_resolve_to_create",
|
|
"requestedCommand": "module.record.resolve-create",
|
|
"autoFollowedFrom": "module.record.resolve-create",
|
|
"plan": {
|
|
"planId": "77777777777777777777777777777777",
|
|
"commandName": "module.record.create",
|
|
"commandVersion": "1.0",
|
|
"moduleCode": "BASE-DYNAMIC",
|
|
"risk": "write",
|
|
"createdAtUtc": "2026-08-13T08:00:00Z",
|
|
"expiresAtUtc": "2026-08-13T08:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": true,
|
|
"inputFingerprint": "abababababababababababababababababababababababababababababababab",
|
|
"outcomeCode": "module_create_ready",
|
|
"title": "低代码模块新增确认",
|
|
"preview": {
|
|
"masterValues": [
|
|
{
|
|
"parameterId": "m0123456789abcdef",
|
|
"label": "客户名称",
|
|
"valueType": "string",
|
|
"value": "朗速动态客户"
|
|
}
|
|
],
|
|
"detailRows": [
|
|
{
|
|
"rowNumber": 1,
|
|
"values": [
|
|
{
|
|
"parameterId": "d0123456789abcdef",
|
|
"label": "明细备注",
|
|
"valueType": "string",
|
|
"value": "第一行"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"data": {
|
|
"outcomeCode": "module_create_ready",
|
|
"title": "低代码模块新增确认",
|
|
"preview": {
|
|
"masterValues": [
|
|
{
|
|
"parameterId": "m0123456789abcdef",
|
|
"label": "客户名称",
|
|
"valueType": "string",
|
|
"value": "朗速动态客户"
|
|
}
|
|
],
|
|
"detailRows": [
|
|
{
|
|
"rowNumber": 1,
|
|
"values": [
|
|
{
|
|
"parameterId": "d0123456789abcdef",
|
|
"label": "明细备注",
|
|
"valueType": "string",
|
|
"value": "第一行"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"metadataTrust": "untrusted_display_data",
|
|
"parameterPreview": {
|
|
"masterValues": [
|
|
{
|
|
"parameterId": "m0123456789abcdef",
|
|
"label": "客户名称",
|
|
"valueType": "string",
|
|
"value": "朗速动态客户"
|
|
}
|
|
],
|
|
"detailRows": [
|
|
{
|
|
"rowNumber": 1,
|
|
"values": [
|
|
{
|
|
"parameterId": "d0123456789abcdef",
|
|
"label": "明细备注",
|
|
"valueType": "string",
|
|
"value": "第一行"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"issues": [],
|
|
"lookupResolutionVerified": false,
|
|
"genericWriteExecutionAvailable": true,
|
|
"contractFingerprint": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
"adapter": {
|
|
"id": "customer.dynamic.write",
|
|
"version": "1.0",
|
|
"evidenceSha256": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
|
}
|
|
},
|
|
"warnings": [
|
|
"确认后将调用客户验收的固定事务入口;执行前会重新读取权限、低代码配置和适配器就绪证据。"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "dynamic_module_resolve_to_update",
|
|
"requestedCommand": "module.record.resolve-update",
|
|
"autoFollowedFrom": "module.record.resolve-update",
|
|
"plan": {
|
|
"planId": "88888888888888888888888888888888",
|
|
"commandName": "module.record.update",
|
|
"commandVersion": "1.0",
|
|
"moduleCode": "BASE-UPDATE",
|
|
"risk": "write",
|
|
"createdAtUtc": "2026-08-13T09:00:00Z",
|
|
"expiresAtUtc": "2026-08-13T09:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": true,
|
|
"inputFingerprint": "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
|
|
"outcomeCode": "dynamic_module_update_ready",
|
|
"title": "基础档案并发修改确认",
|
|
"preview": {
|
|
"recordDisplay": "客户 C-001 / 朗速客户",
|
|
"changes": [
|
|
{
|
|
"parameterId": "m0123456789abcdef",
|
|
"label": "信用额度",
|
|
"valueType": "number",
|
|
"previousValue": "100.00",
|
|
"newValue": "120.50"
|
|
}
|
|
]
|
|
},
|
|
"data": {
|
|
"outcomeCode": "dynamic_module_update_ready",
|
|
"title": "基础档案并发修改确认",
|
|
"preview": {
|
|
"recordDisplay": "客户 C-001 / 朗速客户",
|
|
"changes": [
|
|
{
|
|
"parameterId": "m0123456789abcdef",
|
|
"label": "信用额度",
|
|
"valueType": "number",
|
|
"previousValue": "100.00",
|
|
"newValue": "120.50"
|
|
}
|
|
]
|
|
},
|
|
"adapter": {
|
|
"id": "customer.dynamic.update",
|
|
"version": "1.0",
|
|
"evidenceSha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
}
|
|
},
|
|
"warnings": [
|
|
"确认后事务会锁定目标记录并比较数据库版本与快照指纹;冲突时不覆盖、不重试写入,必须重新读取记录。"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "module_navigate",
|
|
"requestedCommand": "module.navigate",
|
|
"autoFollowedFrom": null,
|
|
"plan": {
|
|
"planId": "66666666666666666666666666666666",
|
|
"commandName": "module.navigate",
|
|
"commandVersion": "1.0",
|
|
"moduleCode": "LEAVE",
|
|
"risk": "navigate",
|
|
"createdAtUtc": "2026-08-11T08:00:00Z",
|
|
"expiresAtUtc": "2026-08-11T08:10:00Z",
|
|
"valid": true,
|
|
"executionAllowed": true,
|
|
"inputFingerprint": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"outcomeCode": "plan_ready",
|
|
"title": "打开 ERP 模块",
|
|
"preview": {
|
|
"moduleCode": "LEAVE",
|
|
"navigationCode": "NAV-LEAVE",
|
|
"moduleName": "请假申请"
|
|
},
|
|
"data": {
|
|
"title": "打开 ERP 模块",
|
|
"preview": {
|
|
"moduleCode": "LEAVE",
|
|
"navigationCode": "NAV-LEAVE",
|
|
"moduleName": "请假申请"
|
|
}
|
|
},
|
|
"warnings": []
|
|
}
|
|
}
|
|
]
|
|
}
|