account组件先使用bingo gen 生成代码再编译,会删除些object,导致web登录不了

问题描述

account 组件使用版本1.100.34 生成自动代码再编译导致web 端登录不了

重现步骤

  1. 进入account 组件,然后bingo gen -r conan 仓名.

  2. git status 查看有文件更改,其中有一个gen/account/service.lua 会删除一些object

  3. 然后再去更改account 版本增1,然后bingo build -r conan 仓名。

  4. 然后再去manifest 组件下的修改响应的accout 版本为增1编译出来的包,然后再编译整包。

  5. 使用hpm 整包升级,web 就登录不了

期望结果

期望account 组件自动生成代码编译后再编译整包hpm 可以web 登录

实际结果

登录提示错误

尝试过的解决方案

把上图gen/account/service.lua 这个文件代码的删除object 创建代码加回来,然后编译account 组件再编译整包就可以。

其中model.json 如下

{
    "AccountService": {
        "path": "/bmc/kepler/AccountService",
        "tableName": "t_account_service",
        "tableType": "PoweroffPer",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.AccountService": {
                "properties": {
                    "AccountLockoutCounterResetAfter": {
                        "default": 0
                    },
                    "AccountLockoutCounterResetEnabled": {
                        "default": false
                    },
                    "AuthFailureLoggingThreshold": {
                        "default": 0
                    },
                    "MaxPasswordLength": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "default": 20,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "MinPasswordLength": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "default": 14,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "ServiceEnabled": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": true
                    },
                    "PasswordComplexityEnable": {
                        "default": true,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "InitialPasswordPromptEnable": {
                        "default": true,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "InitialPasswordNeedModify": {
                        "default": true,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "InitialAccountPrivilegeRestrictEnabled": {
                        "default": false,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "MinPasswordValidDays": {
                        "default": 0,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "MaxPasswordValidDays": {
                        "default": 0,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "EmergencyLoginAccountId": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": 0,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "SNMPv3TrapAccountId": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["BasicSetting"]
                        },
                        "default": 2,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "InactiveDaysThreshold": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "default": 0,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "WeakPasswordDictionaryEnabled": {
                        "default": true,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "HistoryPasswordCount": {
                        "default": 5,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "MaxHistoryPasswordCount": {
                        "default": 5,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "TemporaryPer"
                        ]
                    },
                    "HostUserManagementEnabled": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": true,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "OSAdministratorPrivilegeEnabled": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": true,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "SNMPv3TrapAccountLimitPolicy": {
                        "default": 2
                    },
                    "UserNamePasswordPrefixCompareEnabled": {
                        "default": false,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "UserNamePasswordPrefixCompareLength": {
                        "default": 4,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "SNMPv3TrapAccountChangePolicy": {
                        "default": 0,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "RequireChangePasswordAction": {
                        "default": false,
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    }
                },
                "methods": {
                    "ImportWeakPasswordDictionary": {
                        "privilege": ["SecurityMgmt"]
                    },
                    "ExportWeakPasswordDictionary": {
                        "privilege": ["SecurityMgmt"]
                    },
                    "GetRequestedPublicKey": {
                        "privilege": ["ReadOnly"]
                    },
                    "RecoverAccount": {
                        "privilege":["UserMgmt"]
                    }
                }
            }
        },
        "properties": {
            "PasswordExpirationDays": {
                "baseType": "U32",
                "default": 4294967295,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "AccountLockoutDuration": {
                "baseType": "S32",
                "default": 300,
                "description": "账号登录失败后锁定时长,单位为秒"
                
            },
            "AccountLockoutThreshold": {
                "baseType": "S32",
                "default": 5,
                "description": "账号登录失败该次数后被锁定"
            },
            "UserMgmtEnable": {
                "baseType": "Boolean",
                "default": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "TimeSource": {
                "baseType": "Enum",
                "$ref": "types.json#/defs/TimeSource",
                "default": "TS_NOT_NTP",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "PasswordComplexityIsLock": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "密码复杂度是否允许解锁,IPMI设置为strong_enable时,不允许解锁"
            },
            "PreviousPasswordsDisallowed": {
                "baseType": "U8",
                "default": 5,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Id": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "因持久化需要而添加,无实际作用,AccountService仅有一条数据"
            }
        }
    },
    "ManagerAccounts": {
        "path": "/bmc/kepler/AccountService/Accounts",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.AccountService.ManagerAccounts": {
                "methods": {
                    "New": {
                        "privilege":["UserMgmt"]
                    },
                    "NewOEMAccount": {
                        "privilege":["UserMgmt"]
                    },
                    "GetIdByUserName": {
                        "privilege":["ConfigureSelf"]
                    },
                    "SetAccountWritable": {
                        "privilege":["UserMgmt"]
                    },
                    "GetAccountWritable": {
                        "privilege":["UserMgmt"]
                    },
                    "SetAccountLockState": {
                        "privilege":["UserMgmt"]
                    }
                }
            }
        }
    },
    "ManagerAccount": {
        "path": "/bmc/kepler/AccountService/Accounts/:Id",
        "privilege": ["ConfigureSelf"],
        "interfaces": {
            "bmc.kepler.AccountService.ManagerAccount": {
                "properties": {
                    "AccountExpiration": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "Certificates": {},
                    "Enabled": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "Id": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        },
                        "usage": [
                            "CSR"
                        ]
                    },
                    "Locked": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "UserName": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "Deletable": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "PasswordChangeRequired": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["ConfigureSelf"]
                        }
                    },
                    "PasswordExpiration": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "RoleId": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "SshPublicKeyHash": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "AccountType": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "LoginRuleIds": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "LastLoginTime": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "LastLoginIP": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "LastLoginInterface": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "FirstLoginPolicy": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "LoginInterface": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "Privileges": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "IsOnline": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    }
                },
                "methods": {
                    "Delete": {
                        "privilege":["UserMgmt"]
                    },
                    "ChangePwd": {
                        "privilege":["ConfigureSelf"]
                    },
                    "ChangeSnmpPwd": {
                        "privilege":["ConfigureSelf"]
                    },
                    "ImportSSHPublicKey": {
                        "privilege":["ConfigureSelf"]
                    },
                    "DeleteSSHPublicKey": {
                        "privilege":["ConfigureSelf"]
                    },
                    "SetLastLogin": {
                        "privilege":["ConfigureSelf"]
                    }
                }
            },
            "bmc.kepler.AccountService.ManagerAccount.SnmpUser": {
                "properties": {
                    "AuthenticationProtocol": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "EncryptionProtocol": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    },
                    "SnmpEncryptionPasswordInitialStatus": {
                        "privilege": {
                            "read": ["ConfigureSelf"],
                            "write": ["UserMgmt"]
                        }
                    }
                },
                "methods": {
                    "SetAuthenticationProtocol": {
                        "privilege":["ConfigureSelf"]
                    },
                    "SetEncryptionProtocol": {
                        "privilege":["ConfigureSelf"]
                    },
                    "GetSnmpKeys": {
                        "privilege":["UserMgmt"]
                    }
                }
            }
        }
    },
    "ManagerAccountDB": {
        "tableName": "t_manager_account",
        "properties": {
            "AccountExpiration": {
                "baseType": "String",
                "description": "",
                "notAllowNull": false,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Certificates": {
                "baseType": "U16",
                "description": "",
                "notAllowNull": false,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Enabled": {
                "baseType": "Boolean",
                "description": "",
                "default": false,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Id": {
                "baseType": "U8",
                "description": "",
                "primaryKey": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Locked": {
                "baseType": "Boolean",
                "description": "",
                "default": false,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "UserName": {
                "baseType": "String",
                "description": "",
                "uniqueKey": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Deletable": {
                "baseType": "Boolean",
                "description": "",
                "default": false,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Password": {
                "baseType": "String",
                "description": "",
                "notAllowNull": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "KDFPassword": {
                "baseType": "String",
                "description": "",
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "PasswordChangeRequired": {
                "baseType": "Boolean",
                "description": "",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "PasswordExpiration": {
                "baseType": "U32",
                "description": "",
                "default": 4294967295,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "RoleId": {
                "baseType": "U8",
                "description": "",
                "default": 0,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "SshPublicKeyHash": {
                "baseType": "String",
                "description": "",
                "default": "",
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "IpmiPassword": {
                "baseType": "String",
                "description": "",
                "notAllowNull": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "IpmiPasswordBak": {
                "baseType": "String",
                "description": "",
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "WithinMinPasswordDays": {
                "baseType": "Boolean",
                "description": "",
                "default": false,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "LoginRuleIds": {
                "baseType": "U8",
                "description": "",
                "default": 0,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "InactUserRemainDays": {
                "baseType": "U32",
                "description": "",
                "default": 4294967295,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "LastLoginTime": {
                "baseType": "U32",
                "description": "",
                "default": 4294967295,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "LastLoginIP": {
                "baseType": "String",
                "description": "",
                "default": "",
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "LastLoginInterface": {
                "baseType": "Enum",
                "description": "",
                "default": "Web",
                "$ref": "types.json#/defs/LoginInterface",
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "FirstLoginPolicy": {
                "baseType": "Enum",
                "description": "",
                "default": "ForcePasswordReset",
                "$ref": "types.json#/defs/FirstLoginPolicy",
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "AccountType": {
                "baseType": "Enum",
                "description": "",
                "default": "Local",
                "$ref": "types.json#/defs/AccountType",
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "LoginInterface": {
                "baseType": "U32",
                "description": "",
                "default": 0,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "PasswordValidStartTime": {
                "baseType": "U32",
                "description": "",
                "default": 0,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "InactiveStartTime": {
                "baseType": "U32",
                "description": "",
                "default": 0,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "PasswordWritable": {
                "baseType": "Boolean",
                "description": "密码是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "UserNameWritable": {
                "baseType": "Boolean",
                "description": "用户名是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "LoginInterfaceWritable": {
                "baseType": "Boolean",
                "description": "登录接口是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "RoleIdWritable": {
                "baseType": "Boolean",
                "description": "管理角色是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "EnabledWritable": {
                "baseType": "Boolean",
                "description": "启用状态是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "LoginRuleIdsWritable": {
                "baseType": "Boolean",
                "description": "登录规则是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "AuthenticationProtocolWritable": {
                "baseType": "Boolean",
                "description": "鉴权算法是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "EncryptionProtocolWritable": {
                "baseType": "Boolean",
                "description": "加密算法是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "SNMPPasswordWritable": {
                "baseType": "Boolean",
                "description": "snmp密码是否可修改",
                "default": true,
                "critical": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "IsOnline": {
                "baseType": "Boolean",
                "description": "账户是否在线",
                "default": false,
                "usage": [
                    "TemporaryPer"
                ]
            }
        }
    },
    "ManagerAccountBackup": {
        "tableName": "t_manager_account_backup",
        "privilege":["UserMgmt"],
        "properties": {
            "Id": {
                "baseType": "U8",
                "primaryKey": true,
                "description": "用户id",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "ManagerAccountData": {
                "baseType": "String",
                "description": "manager account数据表备份",
                "notAllowNull": false,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "IpmiAccountData": {
                "baseType": "String",
                "description": "ipmi account数据表备份",
                "notAllowNull": false,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "SnmpAccountData": {
                "baseType": "String",
                "description": "snmp account数据表备份",
                "notAllowNull": false,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true
            },
            "IpmiChannelData": {
                "baseType": "String",
                "description": "ipmi channel config数据表备份",
                "notAllowNull": false,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": false
            }
        }
    },
    "SNMPUserInfo": {
        "tableName": "t_snmp_user_info",
        "properties": {
            "AccountId": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "AuthenticationKey": {
                "baseType": "String",
                "notAllowNull": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true,
                "description": "AuthKu"
            },
            "AuthenticationKeySet": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "AuthenticationProtocol": {
                "baseType": "Enum",
                "$ref": "types.json#/defs/SNMPAuthenticationProtocols",
                "default": "SHA256",
                "usage": [
                    "PoweroffPer"
                ],
                "description": "AuthProtocol"
            },
            "EncryptionKey": {
                "baseType": "String",
                "notAllowNull": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true,
                "description": "PrivKu"
            },
            "EncryptionKeySet": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "EncryptionProtocol": {
                "baseType": "Enum",
                "$ref": "types.json#/defs/SNMPEncryptionProtocols",
                "default": "AES128",
                "usage": [
                    "PoweroffPer"
                ],
                "description": "PrivProtocol"
            },
            "SNMPPassword": {
                "baseType": "String",
                "notAllowNull": true,
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true,
                "description": ""
            },
            "SNMPKDFPassword": {
                "baseType": "String",
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true,
                "description": ""
            },
            "SnmpEncryptionPasswordInitialStatus": {
                "baseType": "Boolean",
                "default": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "IsSnmpPrivacyInitialPwd"
            }
        }
    },
    "IpmiUserInfo": {
        "tableName": "t_ipmi_user_info",
        "properties": {
            "AccountId": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "Use20BytesPasswd": {
                "baseType": "U8",
                "default": 1,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "IsCallin": {
                "baseType": "U8",
                "default": 0,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "IsEnableAuth": {
                "baseType": "U8",
                "default": 1,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "IsEnableIpmiMsg": {
                "baseType": "U8",
                "default": 1,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "IsEnableByPasswd": {
                "baseType": "Enum",
                "$ref": "types.json#/defs/IpmiUserEnableByPassword",
                "default": "Disable",
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "Privilege0": {
                "baseType": "Enum",
                "$ref": "types.json#/defs/IpmiPrivilege",
                "default": "RESERVED",
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "Privilege1": {
                "baseType": "Enum",
                "$ref": "types.json#/defs/IpmiPrivilege",
                "default": "RESERVED",
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "IsSynced": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            }
        }
    },
    "HistoryPassword": {
        "tableName": "t_history_password",
        "properties": {
            "AccountId": {
                "baseType": "U8",
                "primaryKey": true,
                "notAllowNull": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "SequenceNumber": {
                "baseType": "U8",
                "primaryKey": true,
                "notAllowNull": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": ""
            },
            "Password": {
                "baseType": "String",
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true,
                "description": ""
            },
            "KDFPassword": {
                "baseType": "String",
                "usage": [
                    "PoweroffPer"
                ],
                "sensitive": true,
                "description": ""
            }
        }
    },
    "Rule": {
        "path": "/bmc/kepler/AccountService/Rules/:RuleId",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.AccountService.Rule": {
                "properties": {
                    "Enabled": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        }
                    },
                    "IpRule": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        }
                    },
                    "MacRule": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        }
                    },
                    "TimeRule": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        }
                    }
                }
            }
        }
    },
    "LoginRule": {
        "tableName": "t_login_rule",
        "properties": {
            "RuleId": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "IpRule": {
                "baseType": "String",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Ipv6Rule": {
                "baseType": "String",
                "default": "",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "TimeRule": {
                "baseType": "String",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "MacRule": {
                "baseType": "String",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Enabled": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ]
            }
        }
    },
    "Roles": {
        "tableName": "t_roles",
        "path": "/bmc/kepler/AccountService/Roles",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.AccountService.Roles": {
                "properties": {
                    "ExtendedCustomRoleEnabled": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": false,
                        "usage": ["PoweroffPer"]
                    }
                },
                "methods": {
                    "New": {
                        "privilege": ["UserMgmt"]
                    }
                }
            }
        },
        "properties": {
            "Id": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "持久化主键,无实际作用,Roles仅有一条数据"
            }
        }
    },
    "Role": {
        "tableName": "t_role",
        "path": "/bmc/kepler/AccountService/Roles/:Id",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.AccountService.Role": {
                "properties": {
                    "RolePrivilege": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": []
                    },
                    "Name": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        }
                    }
                },
                "methods": {
                    "SetRolePrivilege": {
                        "privilege":["UserMgmt"]
                    },
                    "Delete": {
                        "privilege":["UserMgmt"]
                    }
                }
            }
        },
        "properties": {
            "Id": {
                "baseType": "Enum",
                "$ref": "types.json#/defs/RoleType",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "RoleName": {
                "baseType": "String",
                "uniqueKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "角色 Name"
            },
            "UserMgmt": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "用户管理权限"
            },
            "BasicSetting": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "基本设置功能权限"
            },
            "KVMMgmt": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "KVM使用权限"
            },
            "ReadOnly": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "只读功能权限"
            },
            "VMMMgmt": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "VMM使用权限"
            },
            "SecurityMgmt": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "安全配置权限"
            },
            "PowerMgmt": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "电源控制权限"
            },
            "DiagnoseMgmt": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "诊断调试权限"
            },
            "ConfigureSelf": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "配置自身权限"
            }
        }
    },
    "SnmpCommunity": {
        "path": "/bmc/kepler/Managers/:ManagerId/SnmpService/SnmpCommunity",
        "tableName": "t_snmp_community",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.Managers.SnmpService.SnmpCommunity": {
                "properties": {
                    "LongCommunityEnabled": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": true,
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "RwCommunityEnabled": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": true,
                        "usage": [
                            "PoweroffPer"
                        ]
                    }
                },
                "methods": {
                    "SetRwCommunity": {
                        "privilege":["UserMgmt"]
                    },
                    "SetRoCommunity": {
                        "privilege":["UserMgmt"]
                    },
                    "GetSnmpCommunity": {
                        "privilege":["UserMgmt"]
                    },
                    "SetSnmpCommunityLoginRule": {
                        "privilege":["UserMgmt"]
                    }
                }
            }
        },
        "properties": {
            "Id": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "因持久化需要而添加,无实际作用,AccountService仅有一条数据"
            }
        }
    },
    "LocalAccountAuthN": {
        "path": "/bmc/kepler/AccountService/LocalAccountAuthN",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.AccountService.LocalAccountAuthN": {
                "methods": {
                    "LocalAuthenticate": {
                        "privilege": ["ReadOnly"]
                    },
                    "VncAuthenticate": {
                        "privilege": ["ReadOnly"]
                    }
                }
            }
        }
    },
    "AccountBackup": {
        "tableName": "t_account_backup",
        "properties": {
            "Id": {
                "baseType": "U8",
                "description": "",
                "primaryKey": true,
                "usage": [
                    "PermanentPer"
                ]
            },
            "UserName": {
                "baseType": "String",
                "description": "",
                "uniqueKey": true,
                "usage": [
                    "PermanentPer"
                ]
            },
            "Password": {
                "baseType": "String",
                "description": "",
                "notAllowNull": true,
                "usage": [
                    "PermanentPer"
                ],
                "sensitive": true
            },
            "RoleId": {
                "baseType": "U8",
                "description": "",
                "default": 0,
                "usage": [
                    "PermanentPer"
                ]
            },
            "LoginInterface": {
                "baseType": "U32",
                "description": "",
                "default": 0,
                "usage": [
                    "PermanentPer"
                ]
            },
            "Enabled": {
                "baseType": "Boolean",
                "description": "",
                "default": false,
                "usage": [
                    "PermanentPer"
                ]
            }
        }
    },
    "PasswordPolicy": {
        "privilege": ["ReadOnly"],
        "path": "/bmc/kepler/AccountService/PasswordPolicys/:AccountType",
        "interfaces": {
            "bmc.kepler.AccountService.PasswordPolicy": {
                "properties": {
                    "Policy": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "default": 1
                    },
                    "Pattern": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "default": ""
                    },
                    "AccountType": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        }
                    },
                    "MaxPasswordLength": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        }
                    }
                }
            }
        }
    },
    "PasswordPolicyDB": {
        "tableName": "t_password_policy",
        "properties": {
            "AccountType": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "AccountTypeName": {
                "baseType": "String"
            },
            "Policy": {
                "baseType": "U8",
                "default": 1,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Pattern": {
                "baseType": "String",
                "default": "",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "MaxPasswordLength": {
                "baseType": "U32",
                "usage": [
                    "TemporaryPer"
                ]
            }
        }
    },
    "AccountPolicy": {
        "privilege": ["ReadOnly"],
        "path": "/bmc/kepler/AccountService/AccountPolicies/:AccountType",
        "interfaces": {
            "bmc.kepler.AccountService.AccountPolicy": {
                "properties": {
                    "NamePattern": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["SecurityMgmt"]
                        },
                        "default": ""
                    },
                    "AllowedLoginInterfaces": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": ["Web", "SNMP", "IPMI", "SSH", "SFTP", "Local", "Redfish"]
                    },
                    "Visible": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": false
                    },
                    "Deletable": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": false
                    },
                    "OnlineDeletable": {
                        "privilege": {
                            "read": ["ReadOnly"],
                            "write": ["UserMgmt"]
                        },
                        "default": true
                    }
                }
            }
        }
    },
    "AccountPolicyDB": {
        "tableName": "t_account_policy",
        "properties": {
            "AccountType": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "NamePattern": {
                "baseType": "String",
                "default": "",
                "usage": [
                    "PoweroffPer"
                ]
            },
            "AllowedLoginInterfaces": {
                "baseType": "U32",
                "default": 223,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Visible": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "Deletable": {
                "baseType": "Boolean",
                "default": false,
                "usage": [
                    "PoweroffPer"
                ]
            },
            "OnlineDeletable": {
                "baseType": "Boolean",
                "default": true,
                "usage": [
                    "TemporaryPer"
                ]
            }
        }
    },
    "IpmiChannelConfig": {
        "path": "/bmc/kepler/AccountService/Accounts/:Id/Channels/:ChannelNumber",
        "tableName": "t_ipmi_channel_config",
        "tableType": "PoweroffPer",
        "privilege": ["ReadOnly"],
        "interfaces": {
            "bmc.kepler.AccountService.ManagerAccount.IpmiChannelConfig": {
                "properties": {
                    "PrivilegeLimit": {
                        "default": 0,
                        "privilege": {
                            "read": ["ReadOnly"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "IpmiMessagingEnabled": {
                        "default": "true",
                        "privilege": {
                            "read": ["ReadOnly"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "LinkAuthenticationEnabled": {
                        "default": "true",
                        "privilege": {
                            "read": ["ReadOnly"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "CallbackRestriction": {
                        "default": 0,
                        "privilege": {
                            "read": ["ReadOnly"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    },
                    "SessionLimit": {
                        "default": 0,
                        "privilege": {
                            "read": ["ReadOnly"]
                        },
                        "usage": [
                            "PoweroffPer"
                        ]
                    }
                }
            }
        },
        "properties": {
            "AccountId": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "用户ID"
            },
            "ChannelNumber": {
                "baseType": "U8",
                "primaryKey": true,
                "usage": [
                    "PoweroffPer"
                ],
                "description": "通道编号"
            }
        }
    }
}

注意:需要OS可以回滚版本,避免导致升级后web 登录不了导致机器后期升级问题。

答案内容由AI生成,仅供参考:

:white_check_mark: 总结

项目 内容
问题本质 bingo gen 删除了硬编码的对象创建逻辑,导致 AccountService D-Bus 资源丢失
根本原因 模型文件未声明关键资源,bingo gen 无法生成必要代码
正确做法 将 ManagerAccounts、Roles 等对象补全至 model.json,由工具自动生成
临时方案 手动恢复 service.lua 中的 create_object 代码段
推荐方案 采用模型驱动开发,确保代码生成一致性与可维护性

:light_bulb: 最终建议:立即更新 account/mds/model.json 定义完整资源,避免未来出现同类问题。

点击此处查看详细分析解答

account组件执行bingo gen后编译导致Web登录失败的问题分析与解决方案

根据您提供的详细问题描述,account组件在执行bingo gen后重新生成的代码会删除关键的DBus对象创建逻辑(如ManagerAccounts、Roles等),最终导致系统升级后Web界面无法登录。该问题的根本原因在于自动生成代码覆盖了手动或隐式定义的关键资源初始化逻辑。


:magnifying_glass_tilted_left: 问题定位

:white_check_mark: 核心现象

  • 执行 bingo gen → 自动修改 gen/account/service.lua 文件
  • 具体表现为删除了 init() 函数中3个关键对象的创建代码:
    object_manager.create_object('ManagerAccounts', '/bmc/kepler/AccountService/Accounts', ...)
    object_manager.create_object('Roles', '/bmc/kepler/AccountService/Roles', ...)
    object_manager.create_object('LocalAccountAuthN', '/bmc/kepler/AccountService/LocalAccountAuthN', ...)
    
  • 这些对象是 Web认证与用户管理的基础DBus服务对象,由 bmc.kepler.AccountService 提供。
  • 如果这些对象未被正确注册到 D-Bus 资源树,则:
    • 用户信息无处存储
    • 登录时无法验证凭据
    • Web前端请求 /AccountService 接口超时或报错 → 显示“登录失败”

:pushpin: 影响链分析

步骤 行为 影响
1 bingo gen 依据 model.json / service.json 自动生成代码,不包含原始对象创建逻辑
2 覆盖 service.lua 删除 init() 中手动/历史遗留的对象初始化代码
3 编译并打包升级 固件中 account 服务不再暴露 /bmc/kepler/AccountService 下的关键路径
4 Web 登录 前端调用 account 服务失败 → 认证流程中断 → 登录失败

:books: 根本原因分析

1. bingo gen 仅基于模型定义生成代码

  • bingo gen 的作用是解析 mds/model.json 或 mds/service.json,并依据配置自动生成注册对象和服务的代码。
  • 如果您的模型文件未显式声明 ManagerAccounts、Roles 等对象作为资源节点,bingo gen 就不会生成相应的 create_object 调用。
  • 尤其当这些对象原本是硬编码写入 service.lua 而非通过模型声明时,一旦执行代码生成,就可能被清除。

:warning: 风险提示:bingo gen 是一个覆盖式操作,不应直接替代含有业务逻辑的初始化代码,除非所有资源均已通过模型完全定义。


2. 模型定义缺失关键资源节点

检查 account/mds/model.json 是否包含如下结构(简化示例):

{
  "resources": [
    {
      "name": "ManagerAccounts",
      "path": "/bmc/kepler/AccountService/Accounts",
      "interface": "bmc.kepler.AccountService.ManagerAccount"
    },
    {
      "name": "Roles",
      "path": "/bmc/kepler/AccountService/Roles",
      "interface": "bmc.kepler.AccountService.Roles"
    }
  ]
}

若以上内容缺失,则 bingo gen 无法感知这些资源的存在,从而不会生成创建代码。


3. 可能的历史遗留架构问题

早期版本的 account 组件可能存在:

  • 对象直接在 service.lua 中硬编码创建
  • 没有迁移到 model.json 声明方式
  • 导致 bingo gen 和手工代码之间冲突

:white_check_mark: 解决方案

:white_check_mark: 方案一(推荐):【补全模型定义,让 bingo gen 正确生成】

:white_check_mark: 步骤如下:

  1. 编辑 account/mds/model.json 文件
    添加以下资源节点定义:

    {
      "resources": [
        {
          "name": "ManagerAccounts",
          "path": "/bmc/kepler/AccountService/Accounts",
          "interface": "bmc.kepler.AccountService.ManagerAccount",
          "singleton": true
        },
        {
          "name": "Roles",
          "path": "/bmc/kepler/AccountService/Roles",
          "interface": "bmc.kepler.AccountService.Roles",
          "singleton": true
        },
        {
          "name": "LocalAccountAuthN",
          "path": "/bmc/kepler/AccountService/LocalAccountAuthN",
          "interface": "bmc.kepler.AccountService.LocalAccountAuthN",
          "singleton": true
        }
      ]
    }
    
  2. 重新执行 bingo gen

    bingo gen -r openubmc_dev
    
  3. 验证 gen/account/service.lua 是否已包含 create_object 调用
    若已自动生成,则可安全使用。

  4. 继续编译和打包

    bingo build -r openubmc_dev
    

:white_check_mark: 优势:实现模型驱动开发,杜绝类似问题再次发生。


:white_check_mark: 方案二:【绕过 bingo gen 干扰,手动保留初始化代码】

适用于暂时无法修改模型或迁移困难的情况。

:white_check_mark: 步骤如下:

  1. 备份原始 service.lua 中的 init() 逻辑
    保存需要的 object_manager.create_object(...) 段落。

  2. 执行 bingo gen 后,手动将丢失的对象创建代码重新注入 init() 函数
    示例补丁:

    function account_service:init()
        account_service.super.init(self)
        -- [自动生成代码]
        
        -- [手动添加缺失的对象]
        object_manager.create_object('ManagerAccounts', '/bmc/kepler/AccountService/Accounts',
            '/bmc/kepler/AccountService/Accounts', function(obj)
                obj.ObjectName = 'ManagerAccounts_0'
            end)
        object_manager.create_object('Roles', '/bmc/kepler/AccountService/Roles',
            '/bmc/kepler/AccountService/Roles', function(obj)
                obj.ObjectName = 'Roles_0'
            end)
        object_manager.create_object('LocalAccountAuthN', '/bmc/kepler/AccountService/LocalAccountAuthN',
            '/bmc/kepler/AccountService/LocalAccountAuthN', function(obj)
                obj.ObjectName = 'LocalAccountAuthN_0'
            end)
    end
    
  3. 提交此修改为正式更改,防止下次 gen 再次被删。

:warning: 注意:这不是长久之计,建议尽快转向方案一。


:white_check_mark: 方案三:【使用预处理回调或 ORM 动态注册】

如果组件使用 ORM 框架管理对象,可以在 pre_init 或 ORM 初始化阶段动态添加对象。

function account_service:pre_init()
    account_service.super.pre_init(self)
    
    -- 手动注册缺失对象
    local obj_mgr = require 'mc.orm.object_manage'.get_instance(self.db, self.bus)
    obj_mgr:start()

    -- 注册 AccountService 根对象(若不存在)
    if not self.bus:object_exists('/bmc/kepler/AccountService/Accounts') then
        obj_mgr:create_object({
            class_name = 'ManagerAccounts',
            path = '/bmc/kepler/AccountService/Accounts',
            properties = { ... }
        })
    end
end

参考文档:ORM数据库操作说明


:wrench: 验证建议

1. 登录 BMC 命令行,检查 D-Bus 资源是否存在:

# 查看 AccountService 路径是否存在
busctl --user introspect bmc.kepler.AccountService /bmc/kepler/AccountService/Accounts

# 检查是否能获取账户列表
ipmcget -t user -d list

2. 查看 Web 后端日志:

cat /var/log/app.log | grep -i "account\|auth"

正常应看到:

“AccountService started”
“Loaded X accounts from persistence”


:shield: 预防措施

措施 说明
:white_check_mark: 禁止直接使用 bingo gen 覆盖核心初始化文件 应结合模型与代码审查
:white_check_mark: 所有DBus对象必须在 model.json 中声明 实现声明式开发,避免硬编码
:white_check_mark: 增加代码提交前检查(pre-commit hook) 检测 service.lua 是否删除关键 create_object 行
:white_check_mark: 对 account 组件加 IT 测试用例 测试是否成功暴露 /bmc/kepler/AccountService 对象

:paperclip: 参考资料


:white_check_mark: 总结

项目 内容
问题本质 bingo gen 删除了硬编码的对象创建逻辑,导致 AccountService D-Bus 资源丢失
根本原因 模型文件未声明关键资源,bingo gen 无法生成必要代码
正确做法 将 ManagerAccounts、Roles 等对象补全至 model.json,由工具自动生成
临时方案 手动恢复 service.lua 中的 create_object 代码段
推荐方案 采用模型驱动开发,确保代码生成一致性与可维护性

:light_bulb: 最终建议:立即更新 account/mds/model.json 定义完整资源,避免未来出现同类问题。

添加了我的model.json模型中是配置了这些,但是不知道为什么自动生成代码会删除这些object

在新的版本已经修复了

哪一个版本吗,是哪里配置导致这个model.json 会删除那些dbus 资源树的object吗,我提供的model.json 有定义这些类的

在1.110.2版本适配了。 不是删除了这些object,是bingo 自动生成代码机制的变化,导致上树方式变化了。 所以使用最新bingo gen的时候, account_service:init 里的老的上树方式给去掉了, 变成在业务里自己上树。

对于1.100.34版本,按照手动回退删除的旧上树方式进行规避。