feat: add ERP agent pet bridge and startup guide

This commit is contained in:
郎速科技
2026-08-14 14:28:28 +08:00
parent a803070819
commit 4c08f4c948
252 changed files with 134752 additions and 72 deletions
@@ -0,0 +1,460 @@
{
"schemaVersion": "1.2",
"profileType": "readonly_low_code_metadata_review",
"database": {
"name": "lserp_AI",
"sqlServerMajorVersion": 16,
"compatibilityLevel": 100,
"compatibilityContract": "fixed_scalar_and_schema_validated_xml_rowsets_in_trusted_erp_process",
"userTableCount": 832,
"userViewCount": 109,
"userProcedureCount": 319,
"userTriggerCount": 31,
"agentWorkflowObjectsPresent": false,
"criticalCatalogContract": {
"contractVersion": "1.0",
"requirements": [
{
"schemaName": "dbo",
"objectName": "p_systembilltype",
"objectKind": "table",
"requiredColumns": ["typeCode", "masterTable", "detailTable", "MasterSql", "DetailSql", "formKey"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "P_systemdlltab",
"objectKind": "table",
"requiredColumns": ["typeCode", "SQLDT1", "SQL", "formKey"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_systembillInfo",
"objectKind": "table",
"requiredColumns": ["typeCode", "fieldName", "defaultValue"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_systembillDetail",
"objectKind": "table",
"requiredColumns": ["typeCode", "fieldName", "isVisible"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "scm_BillPoMainTab",
"objectKind": "table",
"requiredColumns": ["scm_mpo_Billdocument_Id", "scm_mpo_handcraftId", "scm_mpo_Providerid", "scm_mpo_Currency", "scm_mpo_ExchangeRate", "scm_mpo_stepover", "scm_mpo_cancelFlag", "scm_mpo_wasteoper", "scm_mpo_ban", "scm_mpo_Groupid", "scm_mpo_Departmentid", "scm_mpo_PurchaseUserId"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "scm_BillPolistTab",
"objectKind": "table",
"requiredColumns": ["scm_lpo_Billdocument_id", "scm_lpo_id", "scm_lpo_Productid", "scm_lpo_ProductUnitName", "scm_lpo_Amount", "scm_lpo_Fprice", "scm_lpo_taxRate", "scm_lpo_ExchangeRate"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "ACC_billscmInvoicemainPIDHxtab",
"objectKind": "table",
"requiredColumns": ["acc_mphhscm_billdocument_id", "acc_mphhscm_groupid", "acc_mphhscm_Departmentid", "acc_mphhscm_Providerid", "acc_mphhscm_billtype", "acc_mphhscm_InvoiceType", "acc_mphhscm_SettlementType", "acc_mphhscm_invoice", "acc_mphhscm_summoney", "acc_mphhscm_nosummoney", "acc_mphhscm_taxsummoney", "acc_mphhscm_invoiceDate", "acc_mphhscm_operatorid", "acc_mphhscm_operatedate", "acc_mphhscm_currency", "acc_mphhscm_sign", "acc_mphhscm_Affirmer", "acc_mphhscm_cancelFlag", "acc_mphhscm_wasteoper", "acc_mphhscm_delid"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "ACC_billscmInvoicelistPIDHxtab",
"objectKind": "table",
"requiredColumns": ["acc_lphhscm_billdocument_id", "acc_lphhscm_productid", "acc_lphhscm_Productunitname", "acc_lphhscm_amount", "acc_lphhscm_price", "acc_lphhscm_summoney", "acc_lphhscm_taxsummoney", "acc_lphhscm_taxRate", "acc_lphhscm_exchangeRate", "acc_lphhscm_ScmPrid", "acc_lphhscm_ScmPoid", "acc_lphhscm_ScmJoinid", "acc_lphhscm_ScmDzid", "acc_lphhscm_sourcebillid", "acc_lphhscm_sourcename"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "ACC_billscmInvoicelistPIDHxtab_temp",
"objectKind": "table",
"requiredColumns": ["acc_lphhscm_productid", "acc_lphhscm_Productunitname", "acc_lphhscm_amount", "acc_lphhscm_price", "acc_lphhscm_summoney", "acc_lphhscm_taxsummoney", "acc_lphhscm_taxRate", "acc_lphhscm_exchangeRate", "acc_lphhscm_ScmPrid", "acc_lphhscm_ScmPoid", "acc_lphhscm_ScmJoinid", "acc_lphhscm_ScmDzid", "acc_lphhscm_sourcebillid", "acc_lphhscm_sourcename", "sysstr"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "HR_EmpLeaveAloneTab",
"objectKind": "table",
"requiredColumns": ["hr_ela_id", "hr_ela_no", "hr_ela_empid", "hr_ela_employeename", "hr_ela_depid", "hr_ela_postid", "hr_ela_type", "hr_ela_billtype", "hr_ela_starttime", "hr_ela_finishtime", "hr_ela_totals", "hr_ela_totals1", "hr_ela_Leavebak", "hr_ela_operatorid", "hr_ela_operatorname", "hr_ela_operatedate", "hr_ela_cancelFlag"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_employeetab",
"objectKind": "table",
"requiredColumns": ["employeeid", "EmployeeName", "p_emp_status", "Departmentid", "p_emp_postid"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_SubsysPurviewTab",
"objectKind": "table",
"requiredColumns": ["employeeid", "scmPurview", "accPurview", "hrPurview"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_systemdlltabflowtype",
"objectKind": "table",
"requiredColumns": ["id", "typeCode", "billTypeName", "billflowban"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_systemdlltabflowtypestep",
"objectKind": "table",
"requiredColumns": ["typeCode", "billType", "stepClosed", "autoStep", "comfirmOper"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_systemNotification",
"objectKind": "table",
"requiredColumns": ["stepCode"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_baseflowOper",
"objectKind": "table",
"requiredColumns": ["modid", "keyvalue", "billtype"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "HR_ScheduleTab",
"objectKind": "table",
"requiredColumns": ["HR_Schedule_billdocument_d", "HR_Schedule_employeeid", "HR_Schedule_Date"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "P_SystemCheckParamTab",
"objectKind": "table",
"requiredColumns": ["Billdocument_Id", "shichang"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "P_CurrencyType",
"objectKind": "table",
"requiredColumns": ["id"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "P_BaseMixInfoTab",
"objectKind": "table",
"requiredColumns": ["ID", "Tag", "Ban", "Delid"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "p_systembillflowtype",
"objectKind": "table",
"requiredColumns": ["id", "typeCode", "billflowban", "operUser"],
"requiredParameters": []
},
{
"schemaName": "dbo",
"objectName": "P_BillSavePr70",
"objectKind": "procedure",
"requiredColumns": [],
"requiredParameters": ["@Sql", "@billdocument_id", "@tmpstr", "@Operatorid", "@Fbilltagid", "@operateway", "@msg", "@auditFlag", "@comfirmFlag"]
},
{
"schemaName": "dbo",
"objectName": "p_BaseSave70",
"objectKind": "procedure",
"requiredColumns": [],
"requiredParameters": ["@baseSql", "@saveType", "@modid", "@tablename", "@keyfield", "@keyvalue", "@Operatorid", "@operatorName", "@msg", "@comfirmFlag"]
},
{
"schemaName": "dbo",
"objectName": "p_baseApply",
"objectKind": "procedure",
"requiredColumns": [],
"requiredParameters": ["@typeCode", "@billDocumentId", "@Operatorid", "@operatorName", "@comfirmType", "@msg"]
}
]
}
},
"safety": {
"source": "system_catalog_and_low_code_configuration_only",
"businessRowsRead": false,
"storedProceduresExecuted": false,
"writesPerformed": false,
"runtimeEnabled": false,
"requiresCustomerReview": true
},
"purchaseTargetSelection": {
"selectedModuleCode": "acc_1007",
"selectedRole": "purchase_invoice_draft_write_candidate",
"selectionState": "selected_but_activation_blocked",
"activationAllowed": false,
"onlineRevalidationRequiredBeforeActivation": true,
"candidatesEvaluated": [
{
"moduleCode": "PUR_5001",
"moduleKind": "bill",
"decision": "source_only",
"reasonCode": "purchase_order_source_only"
},
{
"moduleCode": "acc_1002",
"moduleKind": "base",
"decision": "rejected",
"reasonCode": "base_module_without_purchase_invoice_detail_contract"
},
{
"moduleCode": "acc_1007",
"moduleKind": "bill",
"decision": "selected_but_activation_blocked",
"reasonCodes": [
"purchase_currency_field_not_configured",
"purchase_currency_crosswalk_not_approved",
"purchase_row_scope_not_approved",
"purchase_compat100_write_contract_not_approved",
"purchase_windows_integration_not_verified"
]
}
]
},
"purchaseActivationBlockers": [
{
"code": "purchase_currency_field_not_configured",
"status": "open",
"resolution": null,
"evidence": "acc_mphhscm_currency 是物理列,但 acc_1007 的 p_systembillInfo 没有对应主表控件。"
},
{
"code": "purchase_currency_crosswalk_not_approved",
"status": "open",
"resolution": null,
"evidence": "采购订单与目标发票使用不同币种字典,候选 1→22、2→23、3→24 尚未由财务/DBA 签字。"
},
{
"code": "purchase_row_scope_not_approved",
"status": "open",
"resolution": null,
"evidence": "已识别采购订单组织、部门和采购员字段,并补充默认空表、无通配符的精确签字范围契约;客户尚未批准或填充任何账套/子系统/ERP 用户范围。"
},
{
"code": "purchase_compat100_write_contract_not_approved",
"status": "open",
"resolution": null,
"evidence": "已形成固定标量加受信任 XmlWriter 行集的 NOEXEC 审查草案并在客户库只编译通过;ERP 网关已有受商用证据门禁保护的精确分派,但 SQL 两道审核开关、运行配置和数据库 V2 就绪证据仍关闭。"
},
{
"code": "purchase_windows_integration_not_verified",
"status": "open",
"resolution": null,
"evidence": "尚未在客户 Windows ERP 进程内完成保存链、回滚、幂等、审计和原生确认验收。"
}
],
"leaveActivationBlockers": [
{
"code": "leave_flow_type_rules_stale",
"status": "open",
"resolution": null,
"evidence": "请假天数联动仍返回已不存在的旧流转配置行 3195-3200;当前有效行是 3629-3634,修复前只能要求用户显式选择候选。"
},
{
"code": "leave_agent_schema_not_deployed",
"status": "open",
"resolution": null,
"evidence": "客户库尚无只读/写兼容过程、V2 就绪证据表及 Agent 幂等审计对象;当前只存在不落库的审查草案。"
},
{
"code": "leave_compat100_write_contract_not_approved",
"status": "open",
"resolution": null,
"evidence": "固定强类型草案已补 ERP 用户作用域、hr_4011 编辑权限复核和按幂等键的数据库应用锁,但 DBA 审核开关仍固定关闭。"
},
{
"code": "leave_windows_integration_not_verified",
"status": "open",
"resolution": null,
"evidence": "尚未在客户 Windows ERP 进程内完成草稿创建、独立二次提交、回滚、重复请求、只读权限拒绝及审计验收。"
}
],
"menus": [
{
"menuId": 187,
"caption": "采购订单下达",
"moduleCode": "PUR_5001",
"dllFileName": "Lskj.PubBill.dll",
"subSystemId": 5,
"enabled": true
},
{
"menuId": 2413,
"caption": "采购发票登记",
"moduleCode": "acc_1002",
"dllFileName": "Lskj.PubModule.dll",
"subSystemId": 10,
"enabled": true
},
{
"menuId": 18848,
"caption": "采购开票核销",
"moduleCode": "acc_1007",
"dllFileName": "Lskj.PubBill.dll",
"subSystemId": 5,
"enabled": true
},
{
"menuId": 16629,
"caption": "请假申请管理",
"moduleCode": "hr_4011",
"dllFileName": "Lskj.PubModuleDetail.dll",
"subSystemId": 7,
"enabled": true
}
],
"modules": {
"purchaseOrderSource": {
"moduleCode": "PUR_5001",
"kind": "bill",
"masterTable": "scm_BillPoMainTab",
"detailTable": "scm_BillPolistTab",
"formKey": "89010284-C0C0-4A64-996D-7F0FDB9C83B0",
"sourceFields": {
"supplierCode": "scm_mpo_Providerid",
"currencyCode": "scm_mpo_Currency",
"materialCode": "scm_lpo_Productid",
"unit": "scm_lpo_ProductUnitName",
"quantity": "scm_lpo_Amount",
"unitPrice": "scm_lpo_Fprice",
"taxRate": "scm_lpo_taxRate",
"exchangeRate": "scm_lpo_ExchangeRate",
"lineAmount": "scm_lpo_FSummoney",
"sourceOrderId": "scm_lpo_Billdocument_id",
"sourceOrderNumber": "scm_mpo_handcraftId",
"sourceLineId": "scm_lpo_id"
}
},
"purchaseInvoiceWriteCandidate": {
"moduleCode": "acc_1007",
"kind": "bill",
"caption": "采购发票核销",
"masterTable": "ACC_billscmInvoicemainPIDHxtab",
"detailTable": "ACC_billscmInvoicelistPIDHxtab",
"formKey": "E7CF6797-E68F-4922-925D-B2BD6165B249",
"requiredMatchOptions": {
"lineAmountMode": 2,
"unitPriceBasis": "purchase_order_original_currency_tax_inclusive",
"mixedExchangeRatesAllowed": false
},
"compatibilityWriteCandidate": {
"procedure": "p_lserp_agent_workflow_write_purchase_compat100",
"status": "inert_review_draft",
"inputContract": "fixed_scalars_and_schema_validated_xml_rowsets",
"legacySaveChain": "P_BillSavePr70_to_P_BillSavePr70_3",
"creates": "unsubmitted_draft_only",
"rowScopeContract": "exact_signed_account_subsystem_erp_user_group_department_purchase_user_tuple",
"gatewayRoute": "implemented_fail_closed_by_commercial_readiness_and_signed_acceptance",
"runtimeRegistered": false
},
"fieldMap": {
"supplierCode": "acc_mphhscm_Providerid",
"invoiceNumber": "acc_mphhscm_invoice",
"invoiceDate": "acc_mphhscm_invoiceDate",
"currencyCode": "acc_mphhscm_currency",
"materialCode": "acc_lphhscm_productid",
"unit": "acc_lphhscm_Productunitname",
"quantity": "acc_lphhscm_amount",
"unitPrice": "acc_lphhscm_price",
"taxRate": "acc_lphhscm_taxRate",
"exchangeRate": "acc_lphhscm_exchangeRate",
"lineAmount": "acc_lphhscm_summoney",
"sourceOrderId": "acc_lphhscm_sourcebillid",
"sourceLineId": "acc_lphhscm_ScmPoid"
},
"reviewFindings": [
"主表物理列 acc_mphhscm_currency 存在,但 p_systembillInfo 未为 acc_1007 暴露该主表控件;字段门禁必须失败关闭。",
"采购订单 scm_mpo_Currency 使用 P_CurrencyType.id(当前只读证据为 1/2/3),目标发票币种使用 P_BaseMixInfoTab Tag=L000101(当前只读证据为 22/23/24);1→22、2→23、3→24 只能作为待签字候选映射。",
"resolve_currency 只通过有效签字映射返回采购订单使用的来源币种 ID;来源字典 ID/代码/名称与发票目标字典 ID/编号/名称均为精确匹配,未审批映射固定失败关闭。",
"Proc_GetScmMainBillInfo 与 Scm_ScminvoiceMoneyView 均证明 acc_lphhscm_ScmPoid 对应 scm_lpo_idacc_lphhscm_ScmPrid 标注为申请id,不得当成采购订单明细。",
"acc_1007 的 p_systembillsource 未配置采购订单,但现有流程过程和视图已给出来源行语义;open_sources 只读草案可供 DBA 审核,全部激活门禁完成前采购写入仍不得注册。",
"采购订单低代码配置明确暴露组织 scm_mpo_Groupid、部门 scm_mpo_Departmentid 和采购员 scm_mpo_PurchaseUserId;兼容草案要求三者与当前账套、子系统、ERP 用户组成一个有效期内且带签字哈希的精确范围元组,不支持 NULL 或通配符,空表默认拒绝。",
"acc_1007 明细公式使用 amount*price 作为含税金额,正式匹配必须配置 lineAmountMode=2TaxInclusive)。",
"WinForm 的 GetAddRecord/GetDetailRecord/BillSave 会先把明细写入 ACC_billscmInvoicelistPIDHxtab_temp,再由 P_BillSavePr70 路由到 P_BillSavePr70_3;正式包装不得绕开这条保存链直接插入最终主从表。",
"P_BillSavePr70_3 会生成正式单号、迁移临时明细、写 ERP 日志并调用 eventType=1 业务处理;acc_1007 的当前保存事件没有额外配置逻辑,eventType=98/99 属于后续流转,所以 Agent 创建只能停在未提交草稿。",
"临时明细表的数量、单价、税率和汇率均为 decimal(18,2),兼容写候选因此拒绝超过两位小数的值,避免保存链静默舍入后破坏来源快照。",
"acc_1007 当前唯一可用流转类别是 p_systembillflowtype.id=4869,且只向其 operUser 中的操作员开放;包装过程必须在保存前重新校验。"
]
},
"purchaseInvoiceRegistrationMenu": {
"moduleCode": "acc_1002",
"kind": "base",
"table": "ACC_billscminvoicemaintab",
"formKey": "BAE677C9-18DE-4257-8E83-C4D88B33371D",
"use": "navigation_or_read_only_diagnosis_only",
"reason": "该菜单是基础档案型发票登记,当前没有采购明细字段,不能替代 acc_1007 的主从单据写入契约。"
},
"leave": {
"moduleCode": "hr_4011",
"kind": "base",
"table": "HR_EmpLeaveAloneTab",
"formKey": "65C24153-A824-40E8-B8D9-CD817E448DEF",
"compatibilityWriteCandidate": {
"procedure": "p_lserp_agent_workflow_write_leave_compat100",
"status": "inert_review_draft",
"inputContract": "fixed_typed_scalars",
"legacyCreateChain": "p_BaseSave70",
"legacySubmitChain": "p_baseApply",
"menuPermission": "edit_token_16629_only",
"approvalSchemaColumnsPresent": true,
"gatewayRoute": "implemented_fail_closed_by_commercial_readiness_and_signed_acceptance",
"runtimeRegistered": false
},
"fieldMap": {
"employeeId": "hr_ela_empid",
"leaveTypeCode": "hr_ela_type",
"flowTypeCode": "hr_ela_billtype",
"startLocal": "hr_ela_starttime",
"endLocal": "hr_ela_finishtime",
"requestedHours": "hr_ela_totals",
"reason": "hr_ela_Leavebak"
},
"derivedWriteFields": {
"employeeName": "hr_ela_employeename",
"departmentId": "hr_ela_depid",
"postId": "hr_ela_postid",
"calculatedDays": "hr_ela_totals1",
"operatorId": "hr_ela_operatorid",
"operatorName": "hr_ela_operatorname",
"operateDate": "hr_ela_operatedate"
},
"flowTypeLookup": {
"candidateCode": "p_systemdlltabflowtype.id",
"candidateName": "p_systemdlltabflowtype.billTypeName",
"stepJoin": "p_systemdlltabflowtypestep.billType = CONVERT(varchar(10), p_systemdlltabflowtype.id)"
},
"reviewFindings": [
"流转类别控件以配置行 id 为保存值;p_systemdlltabflowtype.billType 存在重复值,不能作为 Agent 候选编码。",
"请假天数联动配置仍返回已不存在的旧流转 id 3195-3200,而当前有效配置 id 为 3629-3634;正式修复前必须显式选择流转类别,禁止自动推断。",
"审批步骤会引用 hr_ela_depid;Agent 写过程必须从请假人员主数据重新派生并保存部门、岗位和姓名快照。",
"p_BaseSave70_3 的成功路径会产生多个旧调试结果集;ERP 网关必须忽略这些输出,并且只接受列集合完全匹配固定 BusinessWriteResult 的唯一结果集。",
"p_SubsysPurviewTab.hrPurview 是 hr_4011 的权限来源;16629| 仅为只读,兼容写草案只接受完整编辑标记 16629,并在确认后、保存前再次复核。",
"p_systemdlltabflowtypestep.autoStep/comfirmOper 与 p_systemNotification.stepCode 当前物理列均存在,提交草案仍会在每次调用前复核,禁止触发 p_baseApply 的旧自迁移分支。"
],
"workflowDependencies": [
"p_employeetab",
"P_EmployeePostTab",
"P_DepartmentTab",
"p_systemdlltabflow",
"p_systemdlltabflowtype",
"p_systemdlltabflowtypestep",
"p_baseflowOper"
]
}
}
}