// Copyright 2025 Kuban Technologies // // 规则分组管理 - 支持场景化验证 // 允许在不同业务场景下应用不同的验证规则集 // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.6-modify // protoc v6.31.1 // source: kuban/api/validate/rule_groups.proto package validate import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" _ "google.golang.org/protobuf/types/descriptorpb" reflect "reflect" sync "sync" unsafe "unsafe" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // 常用验证组定义 type CommonValidationGroup int32 const ( CommonValidationGroup_COMMON_VALIDATION_GROUP_UNSPECIFIED CommonValidationGroup = 0 // CRUD 操作组 CommonValidationGroup_COMMON_VALIDATION_GROUP_CREATE CommonValidationGroup = 1 // 创建场景 CommonValidationGroup_COMMON_VALIDATION_GROUP_UPDATE CommonValidationGroup = 2 // 更新场景 CommonValidationGroup_COMMON_VALIDATION_GROUP_PATCH CommonValidationGroup = 3 // 部分更新场景 CommonValidationGroup_COMMON_VALIDATION_GROUP_DELETE CommonValidationGroup = 4 // 删除场景 CommonValidationGroup_COMMON_VALIDATION_GROUP_QUERY CommonValidationGroup = 5 // 查询场景 // 严格程度组 CommonValidationGroup_COMMON_VALIDATION_GROUP_STRICT CommonValidationGroup = 10 // 严格模式 CommonValidationGroup_COMMON_VALIDATION_GROUP_NORMAL CommonValidationGroup = 11 // 标准模式 CommonValidationGroup_COMMON_VALIDATION_GROUP_LOOSE CommonValidationGroup = 12 // 宽松模式 // 用户场景组 CommonValidationGroup_COMMON_VALIDATION_GROUP_REGISTER CommonValidationGroup = 20 // 用户注册 CommonValidationGroup_COMMON_VALIDATION_GROUP_LOGIN CommonValidationGroup = 21 // 用户登录 CommonValidationGroup_COMMON_VALIDATION_GROUP_PROFILE CommonValidationGroup = 22 // 个人资料 CommonValidationGroup_COMMON_VALIDATION_GROUP_CHANGE_PASSWORD CommonValidationGroup = 23 // 修改密码 CommonValidationGroup_COMMON_VALIDATION_GROUP_RESET_PASSWORD CommonValidationGroup = 24 // 重置密码 // 审核场景组 CommonValidationGroup_COMMON_VALIDATION_GROUP_DRAFT CommonValidationGroup = 30 // 草稿 CommonValidationGroup_COMMON_VALIDATION_GROUP_SUBMIT CommonValidationGroup = 31 // 提交审核 CommonValidationGroup_COMMON_VALIDATION_GROUP_APPROVE CommonValidationGroup = 32 // 审核通过 CommonValidationGroup_COMMON_VALIDATION_GROUP_REJECT CommonValidationGroup = 33 // 审核拒绝 // 实名认证场景 CommonValidationGroup_COMMON_VALIDATION_GROUP_REAL_NAME_AUTH CommonValidationGroup = 40 // 实名认证 CommonValidationGroup_COMMON_VALIDATION_GROUP_ENTERPRISE_AUTH CommonValidationGroup = 41 // 企业认证 CommonValidationGroup_COMMON_VALIDATION_GROUP_BANK_CARD_BINDING CommonValidationGroup = 42 // 银行卡绑定 // 安全场景组 CommonValidationGroup_COMMON_VALIDATION_GROUP_SENSITIVE_OP CommonValidationGroup = 50 // 敏感操作 CommonValidationGroup_COMMON_VALIDATION_GROUP_FINANCIAL CommonValidationGroup = 51 // 金融交易 CommonValidationGroup_COMMON_VALIDATION_GROUP_ADMIN CommonValidationGroup = 52 // 管理员操作 ) // Enum value maps for CommonValidationGroup. var ( CommonValidationGroup_name = map[int32]string{ 0: "COMMON_VALIDATION_GROUP_UNSPECIFIED", 1: "COMMON_VALIDATION_GROUP_CREATE", 2: "COMMON_VALIDATION_GROUP_UPDATE", 3: "COMMON_VALIDATION_GROUP_PATCH", 4: "COMMON_VALIDATION_GROUP_DELETE", 5: "COMMON_VALIDATION_GROUP_QUERY", 10: "COMMON_VALIDATION_GROUP_STRICT", 11: "COMMON_VALIDATION_GROUP_NORMAL", 12: "COMMON_VALIDATION_GROUP_LOOSE", 20: "COMMON_VALIDATION_GROUP_REGISTER", 21: "COMMON_VALIDATION_GROUP_LOGIN", 22: "COMMON_VALIDATION_GROUP_PROFILE", 23: "COMMON_VALIDATION_GROUP_CHANGE_PASSWORD", 24: "COMMON_VALIDATION_GROUP_RESET_PASSWORD", 30: "COMMON_VALIDATION_GROUP_DRAFT", 31: "COMMON_VALIDATION_GROUP_SUBMIT", 32: "COMMON_VALIDATION_GROUP_APPROVE", 33: "COMMON_VALIDATION_GROUP_REJECT", 40: "COMMON_VALIDATION_GROUP_REAL_NAME_AUTH", 41: "COMMON_VALIDATION_GROUP_ENTERPRISE_AUTH", 42: "COMMON_VALIDATION_GROUP_BANK_CARD_BINDING", 50: "COMMON_VALIDATION_GROUP_SENSITIVE_OP", 51: "COMMON_VALIDATION_GROUP_FINANCIAL", 52: "COMMON_VALIDATION_GROUP_ADMIN", } CommonValidationGroup_value = map[string]int32{ "COMMON_VALIDATION_GROUP_UNSPECIFIED": 0, "COMMON_VALIDATION_GROUP_CREATE": 1, "COMMON_VALIDATION_GROUP_UPDATE": 2, "COMMON_VALIDATION_GROUP_PATCH": 3, "COMMON_VALIDATION_GROUP_DELETE": 4, "COMMON_VALIDATION_GROUP_QUERY": 5, "COMMON_VALIDATION_GROUP_STRICT": 10, "COMMON_VALIDATION_GROUP_NORMAL": 11, "COMMON_VALIDATION_GROUP_LOOSE": 12, "COMMON_VALIDATION_GROUP_REGISTER": 20, "COMMON_VALIDATION_GROUP_LOGIN": 21, "COMMON_VALIDATION_GROUP_PROFILE": 22, "COMMON_VALIDATION_GROUP_CHANGE_PASSWORD": 23, "COMMON_VALIDATION_GROUP_RESET_PASSWORD": 24, "COMMON_VALIDATION_GROUP_DRAFT": 30, "COMMON_VALIDATION_GROUP_SUBMIT": 31, "COMMON_VALIDATION_GROUP_APPROVE": 32, "COMMON_VALIDATION_GROUP_REJECT": 33, "COMMON_VALIDATION_GROUP_REAL_NAME_AUTH": 40, "COMMON_VALIDATION_GROUP_ENTERPRISE_AUTH": 41, "COMMON_VALIDATION_GROUP_BANK_CARD_BINDING": 42, "COMMON_VALIDATION_GROUP_SENSITIVE_OP": 50, "COMMON_VALIDATION_GROUP_FINANCIAL": 51, "COMMON_VALIDATION_GROUP_ADMIN": 52, } ) func (x CommonValidationGroup) Enum() *CommonValidationGroup { p := new(CommonValidationGroup) *p = x return p } func (x CommonValidationGroup) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CommonValidationGroup) Descriptor() protoreflect.EnumDescriptor { return file_kuban_api_validate_rule_groups_proto_enumTypes[0].Descriptor() } func (CommonValidationGroup) Type() protoreflect.EnumType { return &file_kuban_api_validate_rule_groups_proto_enumTypes[0] } func (x CommonValidationGroup) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CommonValidationGroup.Descriptor instead. func (CommonValidationGroup) EnumDescriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{0} } // 请求来源 type RequestSource int32 const ( RequestSource_REQUEST_SOURCE_UNSPECIFIED RequestSource = 0 RequestSource_REQUEST_SOURCE_WEB RequestSource = 1 // Web 端 RequestSource_REQUEST_SOURCE_MOBILE RequestSource = 2 // 移动端 RequestSource_REQUEST_SOURCE_API RequestSource = 3 // API 调用 RequestSource_REQUEST_SOURCE_INTERNAL RequestSource = 4 // 内部调用 RequestSource_REQUEST_SOURCE_BATCH RequestSource = 5 // 批量处理 ) // Enum value maps for RequestSource. var ( RequestSource_name = map[int32]string{ 0: "REQUEST_SOURCE_UNSPECIFIED", 1: "REQUEST_SOURCE_WEB", 2: "REQUEST_SOURCE_MOBILE", 3: "REQUEST_SOURCE_API", 4: "REQUEST_SOURCE_INTERNAL", 5: "REQUEST_SOURCE_BATCH", } RequestSource_value = map[string]int32{ "REQUEST_SOURCE_UNSPECIFIED": 0, "REQUEST_SOURCE_WEB": 1, "REQUEST_SOURCE_MOBILE": 2, "REQUEST_SOURCE_API": 3, "REQUEST_SOURCE_INTERNAL": 4, "REQUEST_SOURCE_BATCH": 5, } ) func (x RequestSource) Enum() *RequestSource { p := new(RequestSource) *p = x return p } func (x RequestSource) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RequestSource) Descriptor() protoreflect.EnumDescriptor { return file_kuban_api_validate_rule_groups_proto_enumTypes[1].Descriptor() } func (RequestSource) Type() protoreflect.EnumType { return &file_kuban_api_validate_rule_groups_proto_enumTypes[1] } func (x RequestSource) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RequestSource.Descriptor instead. func (RequestSource) EnumDescriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{1} } // 验证模式 type ValidationMode int32 const ( ValidationMode_VALIDATION_MODE_UNSPECIFIED ValidationMode = 0 ValidationMode_VALIDATION_MODE_ALL ValidationMode = 1 // 验证所有规则 ValidationMode_VALIDATION_MODE_REQUIRED_ONLY ValidationMode = 2 // 仅验证必填项 ValidationMode_VALIDATION_MODE_CHANGED_ONLY ValidationMode = 3 // 仅验证修改的字段 ValidationMode_VALIDATION_MODE_CUSTOM ValidationMode = 4 // 自定义(根据组选择) ) // Enum value maps for ValidationMode. var ( ValidationMode_name = map[int32]string{ 0: "VALIDATION_MODE_UNSPECIFIED", 1: "VALIDATION_MODE_ALL", 2: "VALIDATION_MODE_REQUIRED_ONLY", 3: "VALIDATION_MODE_CHANGED_ONLY", 4: "VALIDATION_MODE_CUSTOM", } ValidationMode_value = map[string]int32{ "VALIDATION_MODE_UNSPECIFIED": 0, "VALIDATION_MODE_ALL": 1, "VALIDATION_MODE_REQUIRED_ONLY": 2, "VALIDATION_MODE_CHANGED_ONLY": 3, "VALIDATION_MODE_CUSTOM": 4, } ) func (x ValidationMode) Enum() *ValidationMode { p := new(ValidationMode) *p = x return p } func (x ValidationMode) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ValidationMode) Descriptor() protoreflect.EnumDescriptor { return file_kuban_api_validate_rule_groups_proto_enumTypes[2].Descriptor() } func (ValidationMode) Type() protoreflect.EnumType { return &file_kuban_api_validate_rule_groups_proto_enumTypes[2] } func (x ValidationMode) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ValidationMode.Descriptor instead. func (ValidationMode) EnumDescriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{2} } // 组合类型 type CompositeType int32 const ( CompositeType_COMPOSITE_TYPE_UNSPECIFIED CompositeType = 0 CompositeType_COMPOSITE_TYPE_AND CompositeType = 1 // 所有规则都必须通过 CompositeType_COMPOSITE_TYPE_OR CompositeType = 2 // 至少一个规则通过 CompositeType_COMPOSITE_TYPE_XOR CompositeType = 3 // 恰好一个规则通过 CompositeType_COMPOSITE_TYPE_NOT CompositeType = 4 // 规则不能通过 ) // Enum value maps for CompositeType. var ( CompositeType_name = map[int32]string{ 0: "COMPOSITE_TYPE_UNSPECIFIED", 1: "COMPOSITE_TYPE_AND", 2: "COMPOSITE_TYPE_OR", 3: "COMPOSITE_TYPE_XOR", 4: "COMPOSITE_TYPE_NOT", } CompositeType_value = map[string]int32{ "COMPOSITE_TYPE_UNSPECIFIED": 0, "COMPOSITE_TYPE_AND": 1, "COMPOSITE_TYPE_OR": 2, "COMPOSITE_TYPE_XOR": 3, "COMPOSITE_TYPE_NOT": 4, } ) func (x CompositeType) Enum() *CompositeType { p := new(CompositeType) *p = x return p } func (x CompositeType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CompositeType) Descriptor() protoreflect.EnumDescriptor { return file_kuban_api_validate_rule_groups_proto_enumTypes[3].Descriptor() } func (CompositeType) Type() protoreflect.EnumType { return &file_kuban_api_validate_rule_groups_proto_enumTypes[3] } func (x CompositeType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CompositeType.Descriptor instead. func (CompositeType) EnumDescriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{3} } // 默认行为 type DefaultBehavior int32 const ( DefaultBehavior_DEFAULT_BEHAVIOR_UNSPECIFIED DefaultBehavior = 0 DefaultBehavior_DEFAULT_BEHAVIOR_SKIP DefaultBehavior = 1 // 跳过验证 DefaultBehavior_DEFAULT_BEHAVIOR_APPLY DefaultBehavior = 2 // 应用验证 DefaultBehavior_DEFAULT_BEHAVIOR_FAIL DefaultBehavior = 3 // 验证失败 ) // Enum value maps for DefaultBehavior. var ( DefaultBehavior_name = map[int32]string{ 0: "DEFAULT_BEHAVIOR_UNSPECIFIED", 1: "DEFAULT_BEHAVIOR_SKIP", 2: "DEFAULT_BEHAVIOR_APPLY", 3: "DEFAULT_BEHAVIOR_FAIL", } DefaultBehavior_value = map[string]int32{ "DEFAULT_BEHAVIOR_UNSPECIFIED": 0, "DEFAULT_BEHAVIOR_SKIP": 1, "DEFAULT_BEHAVIOR_APPLY": 2, "DEFAULT_BEHAVIOR_FAIL": 3, } ) func (x DefaultBehavior) Enum() *DefaultBehavior { p := new(DefaultBehavior) *p = x return p } func (x DefaultBehavior) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DefaultBehavior) Descriptor() protoreflect.EnumDescriptor { return file_kuban_api_validate_rule_groups_proto_enumTypes[4].Descriptor() } func (DefaultBehavior) Type() protoreflect.EnumType { return &file_kuban_api_validate_rule_groups_proto_enumTypes[4] } func (x DefaultBehavior) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use DefaultBehavior.Descriptor instead. func (DefaultBehavior) EnumDescriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{4} } // 规则集类别 type RuleSetCategory int32 const ( RuleSetCategory_RULE_SET_CATEGORY_UNSPECIFIED RuleSetCategory = 0 RuleSetCategory_RULE_SET_CATEGORY_USER_MANAGEMENT RuleSetCategory = 1 // 用户管理 RuleSetCategory_RULE_SET_CATEGORY_FINANCIAL RuleSetCategory = 2 // 金融 RuleSetCategory_RULE_SET_CATEGORY_ECOMMERCE RuleSetCategory = 3 // 电商 RuleSetCategory_RULE_SET_CATEGORY_CONTENT RuleSetCategory = 4 // 内容管理 RuleSetCategory_RULE_SET_CATEGORY_GOVERNMENT RuleSetCategory = 5 // 政务 RuleSetCategory_RULE_SET_CATEGORY_HEALTHCARE RuleSetCategory = 6 // 医疗 RuleSetCategory_RULE_SET_CATEGORY_EDUCATION RuleSetCategory = 7 // 教育 RuleSetCategory_RULE_SET_CATEGORY_GENERAL RuleSetCategory = 99 // 通用 ) // Enum value maps for RuleSetCategory. var ( RuleSetCategory_name = map[int32]string{ 0: "RULE_SET_CATEGORY_UNSPECIFIED", 1: "RULE_SET_CATEGORY_USER_MANAGEMENT", 2: "RULE_SET_CATEGORY_FINANCIAL", 3: "RULE_SET_CATEGORY_ECOMMERCE", 4: "RULE_SET_CATEGORY_CONTENT", 5: "RULE_SET_CATEGORY_GOVERNMENT", 6: "RULE_SET_CATEGORY_HEALTHCARE", 7: "RULE_SET_CATEGORY_EDUCATION", 99: "RULE_SET_CATEGORY_GENERAL", } RuleSetCategory_value = map[string]int32{ "RULE_SET_CATEGORY_UNSPECIFIED": 0, "RULE_SET_CATEGORY_USER_MANAGEMENT": 1, "RULE_SET_CATEGORY_FINANCIAL": 2, "RULE_SET_CATEGORY_ECOMMERCE": 3, "RULE_SET_CATEGORY_CONTENT": 4, "RULE_SET_CATEGORY_GOVERNMENT": 5, "RULE_SET_CATEGORY_HEALTHCARE": 6, "RULE_SET_CATEGORY_EDUCATION": 7, "RULE_SET_CATEGORY_GENERAL": 99, } ) func (x RuleSetCategory) Enum() *RuleSetCategory { p := new(RuleSetCategory) *p = x return p } func (x RuleSetCategory) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RuleSetCategory) Descriptor() protoreflect.EnumDescriptor { return file_kuban_api_validate_rule_groups_proto_enumTypes[5].Descriptor() } func (RuleSetCategory) Type() protoreflect.EnumType { return &file_kuban_api_validate_rule_groups_proto_enumTypes[5] } func (x RuleSetCategory) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RuleSetCategory.Descriptor instead. func (RuleSetCategory) EnumDescriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{5} } // 验证组 - 用于场景化验证 // // 使用示例: // ```proto // // message User { // string name = 1 [ // (kuban.api.validate.field).string = { min_len: 2, max_len: 50 }, // (kuban.api.validate.field).groups = ["create", "update"] // ]; // // string password = 2 [ // (kuban.api.validate.field).string = { min_len: 8 }, // (kuban.api.validate.field).groups = ["create", "change_password"] // ]; // } // // ``` type ValidationGroup struct { state protoimpl.MessageState `protogen:"open.v1"` // 组名称(唯一标识) Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` // 组显示名称(中文) DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name"` // 组显示名称(英文) DisplayNameEn string `protobuf:"bytes,3,opt,name=display_name_en,json=displayNameEn,proto3" json:"display_name_en"` // 组描述 Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description"` // 是否为默认组(默认启用) IsDefault bool `protobuf:"varint,5,opt,name=is_default,json=isDefault,proto3" json:"is_default"` // 优先级(数字越大优先级越高) Priority int32 `protobuf:"varint,6,opt,name=priority,proto3" json:"priority"` // 父组(用于继承规则) ParentGroup string `protobuf:"bytes,7,opt,name=parent_group,json=parentGroup,proto3" json:"parent_group"` // 互斥组(不能同时激活的组) ExclusiveGroups []string `protobuf:"bytes,8,rep,name=exclusive_groups,json=exclusiveGroups,proto3" json:"exclusive_groups"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ValidationGroup) Reset() { *x = ValidationGroup{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ValidationGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ValidationGroup) ProtoMessage() {} func (x *ValidationGroup) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ValidationGroup.ProtoReflect.Descriptor instead. func (*ValidationGroup) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{0} } func (x *ValidationGroup) GetName() string { if x != nil { return x.Name } return "" } func (x *ValidationGroup) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *ValidationGroup) GetDisplayNameEn() string { if x != nil { return x.DisplayNameEn } return "" } func (x *ValidationGroup) GetDescription() string { if x != nil { return x.Description } return "" } func (x *ValidationGroup) GetIsDefault() bool { if x != nil { return x.IsDefault } return false } func (x *ValidationGroup) GetPriority() int32 { if x != nil { return x.Priority } return 0 } func (x *ValidationGroup) GetParentGroup() string { if x != nil { return x.ParentGroup } return "" } func (x *ValidationGroup) GetExclusiveGroups() []string { if x != nil { return x.ExclusiveGroups } return nil } // 验证上下文 - 运行时传递给验证器的上下文信息 type ValidationContext struct { state protoimpl.MessageState `protogen:"open.v1"` // 激活的验证组 ActiveGroups []string `protobuf:"bytes,1,rep,name=active_groups,json=activeGroups,proto3" json:"active_groups"` // 用户角色 UserRoles []string `protobuf:"bytes,2,rep,name=user_roles,json=userRoles,proto3" json:"user_roles"` // 用户权限 UserPermissions []string `protobuf:"bytes,3,rep,name=user_permissions,json=userPermissions,proto3" json:"user_permissions"` // 租户 ID(多租户场景) TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id"` // 请求来源 Source RequestSource `protobuf:"varint,5,opt,name=source,proto3,enum=kuban.api.validate.RequestSource" json:"source"` // 是否为管理员操作 IsAdmin bool `protobuf:"varint,6,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin"` // 自定义元数据 Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // 验证时间戳 Timestamp int64 `protobuf:"varint,8,opt,name=timestamp,proto3" json:"timestamp"` // 语言偏好(用于错误消息) Language string `protobuf:"bytes,9,opt,name=language,proto3" json:"language"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ValidationContext) Reset() { *x = ValidationContext{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ValidationContext) String() string { return protoimpl.X.MessageStringOf(x) } func (*ValidationContext) ProtoMessage() {} func (x *ValidationContext) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ValidationContext.ProtoReflect.Descriptor instead. func (*ValidationContext) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{1} } func (x *ValidationContext) GetActiveGroups() []string { if x != nil { return x.ActiveGroups } return nil } func (x *ValidationContext) GetUserRoles() []string { if x != nil { return x.UserRoles } return nil } func (x *ValidationContext) GetUserPermissions() []string { if x != nil { return x.UserPermissions } return nil } func (x *ValidationContext) GetTenantId() string { if x != nil { return x.TenantId } return "" } func (x *ValidationContext) GetSource() RequestSource { if x != nil { return x.Source } return RequestSource_REQUEST_SOURCE_UNSPECIFIED } func (x *ValidationContext) GetIsAdmin() bool { if x != nil { return x.IsAdmin } return false } func (x *ValidationContext) GetMetadata() map[string]string { if x != nil { return x.Metadata } return nil } func (x *ValidationContext) GetTimestamp() int64 { if x != nil { return x.Timestamp } return 0 } func (x *ValidationContext) GetLanguage() string { if x != nil { return x.Language } return "" } // 验证策略 - 控制验证行为 type ValidationStrategy struct { state protoimpl.MessageState `protogen:"open.v1"` // 验证模式 Mode ValidationMode `protobuf:"varint,1,opt,name=mode,proto3,enum=kuban.api.validate.ValidationMode" json:"mode"` // 是否快速失败(遇到第一个错误就停止) FailFast bool `protobuf:"varint,2,opt,name=fail_fast,json=failFast,proto3" json:"fail_fast"` // 是否收集警告(非阻塞性错误) CollectWarnings bool `protobuf:"varint,3,opt,name=collect_warnings,json=collectWarnings,proto3" json:"collect_warnings"` // 最大错误数(超过后停止验证) MaxErrors int32 `protobuf:"varint,4,opt,name=max_errors,json=maxErrors,proto3" json:"max_errors"` // 验证超时(毫秒) TimeoutMs int64 `protobuf:"varint,5,opt,name=timeout_ms,json=timeoutMs,proto3" json:"timeout_ms"` // 是否启用缓存 EnableCache bool `protobuf:"varint,6,opt,name=enable_cache,json=enableCache,proto3" json:"enable_cache"` // 缓存 TTL(秒) CacheTtlSeconds int32 `protobuf:"varint,7,opt,name=cache_ttl_seconds,json=cacheTtlSeconds,proto3" json:"cache_ttl_seconds"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ValidationStrategy) Reset() { *x = ValidationStrategy{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ValidationStrategy) String() string { return protoimpl.X.MessageStringOf(x) } func (*ValidationStrategy) ProtoMessage() {} func (x *ValidationStrategy) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ValidationStrategy.ProtoReflect.Descriptor instead. func (*ValidationStrategy) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{2} } func (x *ValidationStrategy) GetMode() ValidationMode { if x != nil { return x.Mode } return ValidationMode_VALIDATION_MODE_UNSPECIFIED } func (x *ValidationStrategy) GetFailFast() bool { if x != nil { return x.FailFast } return false } func (x *ValidationStrategy) GetCollectWarnings() bool { if x != nil { return x.CollectWarnings } return false } func (x *ValidationStrategy) GetMaxErrors() int32 { if x != nil { return x.MaxErrors } return 0 } func (x *ValidationStrategy) GetTimeoutMs() int64 { if x != nil { return x.TimeoutMs } return 0 } func (x *ValidationStrategy) GetEnableCache() bool { if x != nil { return x.EnableCache } return false } func (x *ValidationStrategy) GetCacheTtlSeconds() int32 { if x != nil { return x.CacheTtlSeconds } return 0 } // 组合验证规则 - 支持复杂的验证逻辑组合 type CompositeRule struct { state protoimpl.MessageState `protogen:"open.v1"` // 规则组合类型 Type CompositeType `protobuf:"varint,1,opt,name=type,proto3,enum=kuban.api.validate.CompositeType" json:"type"` // 子规则列表 Rules []*RuleRef `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules"` // 错误消息 Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message"` // 错误消息(英文) MessageEn string `protobuf:"bytes,4,opt,name=message_en,json=messageEn,proto3" json:"message_en"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompositeRule) Reset() { *x = CompositeRule{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompositeRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompositeRule) ProtoMessage() {} func (x *CompositeRule) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompositeRule.ProtoReflect.Descriptor instead. func (*CompositeRule) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{3} } func (x *CompositeRule) GetType() CompositeType { if x != nil { return x.Type } return CompositeType_COMPOSITE_TYPE_UNSPECIFIED } func (x *CompositeRule) GetRules() []*RuleRef { if x != nil { return x.Rules } return nil } func (x *CompositeRule) GetMessage() string { if x != nil { return x.Message } return "" } func (x *CompositeRule) GetMessageEn() string { if x != nil { return x.MessageEn } return "" } // 规则引用 type RuleRef struct { state protoimpl.MessageState `protogen:"open.v1"` // 规则 ID RuleId string `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id"` // 规则权重(用于优先级排序) Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight"` // 是否为可选规则 Optional bool `protobuf:"varint,3,opt,name=optional,proto3" json:"optional"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RuleRef) Reset() { *x = RuleRef{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RuleRef) String() string { return protoimpl.X.MessageStringOf(x) } func (*RuleRef) ProtoMessage() {} func (x *RuleRef) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RuleRef.ProtoReflect.Descriptor instead. func (*RuleRef) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{4} } func (x *RuleRef) GetRuleId() string { if x != nil { return x.RuleId } return "" } func (x *RuleRef) GetWeight() int32 { if x != nil { return x.Weight } return 0 } func (x *RuleRef) GetOptional() bool { if x != nil { return x.Optional } return false } // 条件验证规则 - 根据条件决定是否应用规则 type ConditionalRule struct { state protoimpl.MessageState `protogen:"open.v1"` // 条件表达式(CEL) Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition"` // 条件为真时应用的规则 WhenTrue []*RuleRef `protobuf:"bytes,2,rep,name=when_true,json=whenTrue,proto3" json:"when_true"` // 条件为假时应用的规则 WhenFalse []*RuleRef `protobuf:"bytes,3,rep,name=when_false,json=whenFalse,proto3" json:"when_false"` // 条件评估失败时的默认行为 OnError DefaultBehavior `protobuf:"varint,4,opt,name=on_error,json=onError,proto3,enum=kuban.api.validate.DefaultBehavior" json:"on_error"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ConditionalRule) Reset() { *x = ConditionalRule{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ConditionalRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConditionalRule) ProtoMessage() {} func (x *ConditionalRule) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ConditionalRule.ProtoReflect.Descriptor instead. func (*ConditionalRule) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{5} } func (x *ConditionalRule) GetCondition() string { if x != nil { return x.Condition } return "" } func (x *ConditionalRule) GetWhenTrue() []*RuleRef { if x != nil { return x.WhenTrue } return nil } func (x *ConditionalRule) GetWhenFalse() []*RuleRef { if x != nil { return x.WhenFalse } return nil } func (x *ConditionalRule) GetOnError() DefaultBehavior { if x != nil { return x.OnError } return DefaultBehavior_DEFAULT_BEHAVIOR_UNSPECIFIED } // 验证规则集 - 预定义的规则组合,可复用 type ValidationRuleSet struct { state protoimpl.MessageState `protogen:"open.v1"` // 规则集 ID Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 规则集名称 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` // 规则集描述 Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"` // 规则集版本 Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version"` // 包含的验证组 Groups []string `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups"` // 包含的规则 Rules []*RuleRef `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules"` // 验证策略 Strategy *ValidationStrategy `protobuf:"bytes,7,opt,name=strategy,proto3" json:"strategy"` // 是否为内置规则集 Builtin bool `protobuf:"varint,8,opt,name=builtin,proto3" json:"builtin"` // 创建时间 CreatedAt int64 `protobuf:"varint,9,opt,name=created_at,json=createdAt,proto3" json:"created_at"` // 更新时间 UpdatedAt int64 `protobuf:"varint,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at"` // 创建者 CreatedBy string `protobuf:"bytes,11,opt,name=created_by,json=createdBy,proto3" json:"created_by"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ValidationRuleSet) Reset() { *x = ValidationRuleSet{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ValidationRuleSet) String() string { return protoimpl.X.MessageStringOf(x) } func (*ValidationRuleSet) ProtoMessage() {} func (x *ValidationRuleSet) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ValidationRuleSet.ProtoReflect.Descriptor instead. func (*ValidationRuleSet) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{6} } func (x *ValidationRuleSet) GetId() string { if x != nil { return x.Id } return "" } func (x *ValidationRuleSet) GetName() string { if x != nil { return x.Name } return "" } func (x *ValidationRuleSet) GetDescription() string { if x != nil { return x.Description } return "" } func (x *ValidationRuleSet) GetVersion() string { if x != nil { return x.Version } return "" } func (x *ValidationRuleSet) GetGroups() []string { if x != nil { return x.Groups } return nil } func (x *ValidationRuleSet) GetRules() []*RuleRef { if x != nil { return x.Rules } return nil } func (x *ValidationRuleSet) GetStrategy() *ValidationStrategy { if x != nil { return x.Strategy } return nil } func (x *ValidationRuleSet) GetBuiltin() bool { if x != nil { return x.Builtin } return false } func (x *ValidationRuleSet) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *ValidationRuleSet) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } func (x *ValidationRuleSet) GetCreatedBy() string { if x != nil { return x.CreatedBy } return "" } // 规则集模板 - 用于快速创建常见场景的验证规则 type RuleSetTemplate struct { state protoimpl.MessageState `protogen:"open.v1"` // 模板 ID Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 模板名称 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` // 模板描述 Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"` // 适用场景 Scenarios []string `protobuf:"bytes,4,rep,name=scenarios,proto3" json:"scenarios"` // 模板类别 Categories []string `protobuf:"bytes,5,rep,name=categories,proto3" json:"categories"` // 规则集定义 RuleSet *ValidationRuleSet `protobuf:"bytes,6,opt,name=rule_set,json=ruleSet,proto3" json:"rule_set"` // 使用示例 UsageExample string `protobuf:"bytes,7,opt,name=usage_example,json=usageExample,proto3" json:"usage_example"` // 下载次数 DownloadCount int64 `protobuf:"varint,8,opt,name=download_count,json=downloadCount,proto3" json:"download_count"` // 评分 Rating float32 `protobuf:"fixed32,9,opt,name=rating,proto3" json:"rating"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RuleSetTemplate) Reset() { *x = RuleSetTemplate{} mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RuleSetTemplate) String() string { return protoimpl.X.MessageStringOf(x) } func (*RuleSetTemplate) ProtoMessage() {} func (x *RuleSetTemplate) ProtoReflect() protoreflect.Message { mi := &file_kuban_api_validate_rule_groups_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RuleSetTemplate.ProtoReflect.Descriptor instead. func (*RuleSetTemplate) Descriptor() ([]byte, []int) { return file_kuban_api_validate_rule_groups_proto_rawDescGZIP(), []int{7} } func (x *RuleSetTemplate) GetId() string { if x != nil { return x.Id } return "" } func (x *RuleSetTemplate) GetName() string { if x != nil { return x.Name } return "" } func (x *RuleSetTemplate) GetDescription() string { if x != nil { return x.Description } return "" } func (x *RuleSetTemplate) GetScenarios() []string { if x != nil { return x.Scenarios } return nil } func (x *RuleSetTemplate) GetCategories() []string { if x != nil { return x.Categories } return nil } func (x *RuleSetTemplate) GetRuleSet() *ValidationRuleSet { if x != nil { return x.RuleSet } return nil } func (x *RuleSetTemplate) GetUsageExample() string { if x != nil { return x.UsageExample } return "" } func (x *RuleSetTemplate) GetDownloadCount() int64 { if x != nil { return x.DownloadCount } return 0 } func (x *RuleSetTemplate) GetRating() float32 { if x != nil { return x.Rating } return 0 } var File_kuban_api_validate_rule_groups_proto protoreflect.FileDescriptor const file_kuban_api_validate_rule_groups_proto_rawDesc = "" + "\n" + "$kuban/api/validate/rule_groups.proto\x12\x12kuban.api.validate\x1a google/protobuf/descriptor.proto\"\x9b\x02\n" + "\x0fValidationGroup\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12!\n" + "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12&\n" + "\x0fdisplay_name_en\x18\x03 \x01(\tR\rdisplayNameEn\x12 \n" + "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x1d\n" + "\n" + "is_default\x18\x05 \x01(\bR\tisDefault\x12\x1a\n" + "\bpriority\x18\x06 \x01(\x05R\bpriority\x12!\n" + "\fparent_group\x18\a \x01(\tR\vparentGroup\x12)\n" + "\x10exclusive_groups\x18\b \x03(\tR\x0fexclusiveGroups\"\xbd\x03\n" + "\x11ValidationContext\x12#\n" + "\ractive_groups\x18\x01 \x03(\tR\factiveGroups\x12\x1d\n" + "\n" + "user_roles\x18\x02 \x03(\tR\tuserRoles\x12)\n" + "\x10user_permissions\x18\x03 \x03(\tR\x0fuserPermissions\x12\x1b\n" + "\ttenant_id\x18\x04 \x01(\tR\btenantId\x129\n" + "\x06source\x18\x05 \x01(\x0e2!.kuban.api.validate.RequestSourceR\x06source\x12\x19\n" + "\bis_admin\x18\x06 \x01(\bR\aisAdmin\x12O\n" + "\bmetadata\x18\a \x03(\v23.kuban.api.validate.ValidationContext.MetadataEntryR\bmetadata\x12\x1c\n" + "\ttimestamp\x18\b \x01(\x03R\ttimestamp\x12\x1a\n" + "\blanguage\x18\t \x01(\tR\blanguage\x1a;\n" + "\rMetadataEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa1\x02\n" + "\x12ValidationStrategy\x126\n" + "\x04mode\x18\x01 \x01(\x0e2\".kuban.api.validate.ValidationModeR\x04mode\x12\x1b\n" + "\tfail_fast\x18\x02 \x01(\bR\bfailFast\x12)\n" + "\x10collect_warnings\x18\x03 \x01(\bR\x0fcollectWarnings\x12\x1d\n" + "\n" + "max_errors\x18\x04 \x01(\x05R\tmaxErrors\x12\x1d\n" + "\n" + "timeout_ms\x18\x05 \x01(\x03R\ttimeoutMs\x12!\n" + "\fenable_cache\x18\x06 \x01(\bR\venableCache\x12*\n" + "\x11cache_ttl_seconds\x18\a \x01(\x05R\x0fcacheTtlSeconds\"\xb2\x01\n" + "\rCompositeRule\x125\n" + "\x04type\x18\x01 \x01(\x0e2!.kuban.api.validate.CompositeTypeR\x04type\x121\n" + "\x05rules\x18\x02 \x03(\v2\x1b.kuban.api.validate.RuleRefR\x05rules\x12\x18\n" + "\amessage\x18\x03 \x01(\tR\amessage\x12\x1d\n" + "\n" + "message_en\x18\x04 \x01(\tR\tmessageEn\"V\n" + "\aRuleRef\x12\x17\n" + "\arule_id\x18\x01 \x01(\tR\x06ruleId\x12\x16\n" + "\x06weight\x18\x02 \x01(\x05R\x06weight\x12\x1a\n" + "\boptional\x18\x03 \x01(\bR\boptional\"\xe5\x01\n" + "\x0fConditionalRule\x12\x1c\n" + "\tcondition\x18\x01 \x01(\tR\tcondition\x128\n" + "\twhen_true\x18\x02 \x03(\v2\x1b.kuban.api.validate.RuleRefR\bwhenTrue\x12:\n" + "\n" + "when_false\x18\x03 \x03(\v2\x1b.kuban.api.validate.RuleRefR\twhenFalse\x12>\n" + "\bon_error\x18\x04 \x01(\x0e2#.kuban.api.validate.DefaultBehaviorR\aonError\"\xf9\x02\n" + "\x11ValidationRuleSet\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x18\n" + "\aversion\x18\x04 \x01(\tR\aversion\x12\x16\n" + "\x06groups\x18\x05 \x03(\tR\x06groups\x121\n" + "\x05rules\x18\x06 \x03(\v2\x1b.kuban.api.validate.RuleRefR\x05rules\x12B\n" + "\bstrategy\x18\a \x01(\v2&.kuban.api.validate.ValidationStrategyR\bstrategy\x12\x18\n" + "\abuiltin\x18\b \x01(\bR\abuiltin\x12\x1d\n" + "\n" + "created_at\x18\t \x01(\x03R\tcreatedAt\x12\x1d\n" + "\n" + "updated_at\x18\n" + " \x01(\x03R\tupdatedAt\x12\x1d\n" + "\n" + "created_by\x18\v \x01(\tR\tcreatedBy\"\xbb\x02\n" + "\x0fRuleSetTemplate\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1c\n" + "\tscenarios\x18\x04 \x03(\tR\tscenarios\x12\x1e\n" + "\n" + "categories\x18\x05 \x03(\tR\n" + "categories\x12@\n" + "\brule_set\x18\x06 \x01(\v2%.kuban.api.validate.ValidationRuleSetR\aruleSet\x12#\n" + "\rusage_example\x18\a \x01(\tR\fusageExample\x12%\n" + "\x0edownload_count\x18\b \x01(\x03R\rdownloadCount\x12\x16\n" + "\x06rating\x18\t \x01(\x02R\x06rating*\xb0\a\n" + "\x15CommonValidationGroup\x12'\n" + "#COMMON_VALIDATION_GROUP_UNSPECIFIED\x10\x00\x12\"\n" + "\x1eCOMMON_VALIDATION_GROUP_CREATE\x10\x01\x12\"\n" + "\x1eCOMMON_VALIDATION_GROUP_UPDATE\x10\x02\x12!\n" + "\x1dCOMMON_VALIDATION_GROUP_PATCH\x10\x03\x12\"\n" + "\x1eCOMMON_VALIDATION_GROUP_DELETE\x10\x04\x12!\n" + "\x1dCOMMON_VALIDATION_GROUP_QUERY\x10\x05\x12\"\n" + "\x1eCOMMON_VALIDATION_GROUP_STRICT\x10\n" + "\x12\"\n" + "\x1eCOMMON_VALIDATION_GROUP_NORMAL\x10\v\x12!\n" + "\x1dCOMMON_VALIDATION_GROUP_LOOSE\x10\f\x12$\n" + " COMMON_VALIDATION_GROUP_REGISTER\x10\x14\x12!\n" + "\x1dCOMMON_VALIDATION_GROUP_LOGIN\x10\x15\x12#\n" + "\x1fCOMMON_VALIDATION_GROUP_PROFILE\x10\x16\x12+\n" + "'COMMON_VALIDATION_GROUP_CHANGE_PASSWORD\x10\x17\x12*\n" + "&COMMON_VALIDATION_GROUP_RESET_PASSWORD\x10\x18\x12!\n" + "\x1dCOMMON_VALIDATION_GROUP_DRAFT\x10\x1e\x12\"\n" + "\x1eCOMMON_VALIDATION_GROUP_SUBMIT\x10\x1f\x12#\n" + "\x1fCOMMON_VALIDATION_GROUP_APPROVE\x10 \x12\"\n" + "\x1eCOMMON_VALIDATION_GROUP_REJECT\x10!\x12*\n" + "&COMMON_VALIDATION_GROUP_REAL_NAME_AUTH\x10(\x12+\n" + "'COMMON_VALIDATION_GROUP_ENTERPRISE_AUTH\x10)\x12-\n" + ")COMMON_VALIDATION_GROUP_BANK_CARD_BINDING\x10*\x12(\n" + "$COMMON_VALIDATION_GROUP_SENSITIVE_OP\x102\x12%\n" + "!COMMON_VALIDATION_GROUP_FINANCIAL\x103\x12!\n" + "\x1dCOMMON_VALIDATION_GROUP_ADMIN\x104*\xb1\x01\n" + "\rRequestSource\x12\x1e\n" + "\x1aREQUEST_SOURCE_UNSPECIFIED\x10\x00\x12\x16\n" + "\x12REQUEST_SOURCE_WEB\x10\x01\x12\x19\n" + "\x15REQUEST_SOURCE_MOBILE\x10\x02\x12\x16\n" + "\x12REQUEST_SOURCE_API\x10\x03\x12\x1b\n" + "\x17REQUEST_SOURCE_INTERNAL\x10\x04\x12\x18\n" + "\x14REQUEST_SOURCE_BATCH\x10\x05*\xab\x01\n" + "\x0eValidationMode\x12\x1f\n" + "\x1bVALIDATION_MODE_UNSPECIFIED\x10\x00\x12\x17\n" + "\x13VALIDATION_MODE_ALL\x10\x01\x12!\n" + "\x1dVALIDATION_MODE_REQUIRED_ONLY\x10\x02\x12 \n" + "\x1cVALIDATION_MODE_CHANGED_ONLY\x10\x03\x12\x1a\n" + "\x16VALIDATION_MODE_CUSTOM\x10\x04*\x8e\x01\n" + "\rCompositeType\x12\x1e\n" + "\x1aCOMPOSITE_TYPE_UNSPECIFIED\x10\x00\x12\x16\n" + "\x12COMPOSITE_TYPE_AND\x10\x01\x12\x15\n" + "\x11COMPOSITE_TYPE_OR\x10\x02\x12\x16\n" + "\x12COMPOSITE_TYPE_XOR\x10\x03\x12\x16\n" + "\x12COMPOSITE_TYPE_NOT\x10\x04*\x85\x01\n" + "\x0fDefaultBehavior\x12 \n" + "\x1cDEFAULT_BEHAVIOR_UNSPECIFIED\x10\x00\x12\x19\n" + "\x15DEFAULT_BEHAVIOR_SKIP\x10\x01\x12\x1a\n" + "\x16DEFAULT_BEHAVIOR_APPLY\x10\x02\x12\x19\n" + "\x15DEFAULT_BEHAVIOR_FAIL\x10\x03*\xc0\x02\n" + "\x0fRuleSetCategory\x12!\n" + "\x1dRULE_SET_CATEGORY_UNSPECIFIED\x10\x00\x12%\n" + "!RULE_SET_CATEGORY_USER_MANAGEMENT\x10\x01\x12\x1f\n" + "\x1bRULE_SET_CATEGORY_FINANCIAL\x10\x02\x12\x1f\n" + "\x1bRULE_SET_CATEGORY_ECOMMERCE\x10\x03\x12\x1d\n" + "\x19RULE_SET_CATEGORY_CONTENT\x10\x04\x12 \n" + "\x1cRULE_SET_CATEGORY_GOVERNMENT\x10\x05\x12 \n" + "\x1cRULE_SET_CATEGORY_HEALTHCARE\x10\x06\x12\x1f\n" + "\x1bRULE_SET_CATEGORY_EDUCATION\x10\a\x12\x1d\n" + "\x19RULE_SET_CATEGORY_GENERAL\x10cB=Z;git.ikuban.com/server/kubanapis/kuban/api/validate;validateb\x06proto3" var ( file_kuban_api_validate_rule_groups_proto_rawDescOnce sync.Once file_kuban_api_validate_rule_groups_proto_rawDescData []byte ) func file_kuban_api_validate_rule_groups_proto_rawDescGZIP() []byte { file_kuban_api_validate_rule_groups_proto_rawDescOnce.Do(func() { file_kuban_api_validate_rule_groups_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kuban_api_validate_rule_groups_proto_rawDesc), len(file_kuban_api_validate_rule_groups_proto_rawDesc))) }) return file_kuban_api_validate_rule_groups_proto_rawDescData } var file_kuban_api_validate_rule_groups_proto_enumTypes = make([]protoimpl.EnumInfo, 6) var file_kuban_api_validate_rule_groups_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_kuban_api_validate_rule_groups_proto_goTypes = []any{ (CommonValidationGroup)(0), // 0: kuban.api.validate.CommonValidationGroup (RequestSource)(0), // 1: kuban.api.validate.RequestSource (ValidationMode)(0), // 2: kuban.api.validate.ValidationMode (CompositeType)(0), // 3: kuban.api.validate.CompositeType (DefaultBehavior)(0), // 4: kuban.api.validate.DefaultBehavior (RuleSetCategory)(0), // 5: kuban.api.validate.RuleSetCategory (*ValidationGroup)(nil), // 6: kuban.api.validate.ValidationGroup (*ValidationContext)(nil), // 7: kuban.api.validate.ValidationContext (*ValidationStrategy)(nil), // 8: kuban.api.validate.ValidationStrategy (*CompositeRule)(nil), // 9: kuban.api.validate.CompositeRule (*RuleRef)(nil), // 10: kuban.api.validate.RuleRef (*ConditionalRule)(nil), // 11: kuban.api.validate.ConditionalRule (*ValidationRuleSet)(nil), // 12: kuban.api.validate.ValidationRuleSet (*RuleSetTemplate)(nil), // 13: kuban.api.validate.RuleSetTemplate nil, // 14: kuban.api.validate.ValidationContext.MetadataEntry } var file_kuban_api_validate_rule_groups_proto_depIdxs = []int32{ 1, // 0: kuban.api.validate.ValidationContext.source:type_name -> kuban.api.validate.RequestSource 14, // 1: kuban.api.validate.ValidationContext.metadata:type_name -> kuban.api.validate.ValidationContext.MetadataEntry 2, // 2: kuban.api.validate.ValidationStrategy.mode:type_name -> kuban.api.validate.ValidationMode 3, // 3: kuban.api.validate.CompositeRule.type:type_name -> kuban.api.validate.CompositeType 10, // 4: kuban.api.validate.CompositeRule.rules:type_name -> kuban.api.validate.RuleRef 10, // 5: kuban.api.validate.ConditionalRule.when_true:type_name -> kuban.api.validate.RuleRef 10, // 6: kuban.api.validate.ConditionalRule.when_false:type_name -> kuban.api.validate.RuleRef 4, // 7: kuban.api.validate.ConditionalRule.on_error:type_name -> kuban.api.validate.DefaultBehavior 10, // 8: kuban.api.validate.ValidationRuleSet.rules:type_name -> kuban.api.validate.RuleRef 8, // 9: kuban.api.validate.ValidationRuleSet.strategy:type_name -> kuban.api.validate.ValidationStrategy 12, // 10: kuban.api.validate.RuleSetTemplate.rule_set:type_name -> kuban.api.validate.ValidationRuleSet 11, // [11:11] is the sub-list for method output_type 11, // [11:11] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name 11, // [11:11] is the sub-list for extension extendee 0, // [0:11] is the sub-list for field type_name } func init() { file_kuban_api_validate_rule_groups_proto_init() } func file_kuban_api_validate_rule_groups_proto_init() { if File_kuban_api_validate_rule_groups_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_kuban_api_validate_rule_groups_proto_rawDesc), len(file_kuban_api_validate_rule_groups_proto_rawDesc)), NumEnums: 6, NumMessages: 9, NumExtensions: 0, NumServices: 0, }, GoTypes: file_kuban_api_validate_rule_groups_proto_goTypes, DependencyIndexes: file_kuban_api_validate_rule_groups_proto_depIdxs, EnumInfos: file_kuban_api_validate_rule_groups_proto_enumTypes, MessageInfos: file_kuban_api_validate_rule_groups_proto_msgTypes, }.Build() File_kuban_api_validate_rule_groups_proto = out.File file_kuban_api_validate_rule_groups_proto_goTypes = nil file_kuban_api_validate_rule_groups_proto_depIdxs = nil }