Files
2026-08-14 14:28:28 +08:00

461 lines
21 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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"
]
}
}
}