rule_groups.proto 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. // Copyright 2025 Kuban Technologies
  2. //
  3. // 规则分组管理 - 支持场景化验证
  4. // 允许在不同业务场景下应用不同的验证规则集
  5. syntax = "proto3";
  6. package kuban.api.validate;
  7. import "google/protobuf/descriptor.proto";
  8. option go_package = "git.ikuban.com/server/kubanapis/kuban/api/validate;validate";
  9. // ============================================================================
  10. // 验证组定义
  11. // ============================================================================
  12. // 验证组 - 用于场景化验证
  13. //
  14. // 使用示例:
  15. // ```proto
  16. // message User {
  17. // string name = 1 [
  18. // (kuban.api.validate.field).string = { min_len: 2, max_len: 50 },
  19. // (kuban.api.validate.field).groups = ["create", "update"]
  20. // ];
  21. //
  22. // string password = 2 [
  23. // (kuban.api.validate.field).string = { min_len: 8 },
  24. // (kuban.api.validate.field).groups = ["create", "change_password"]
  25. // ];
  26. // }
  27. // ```
  28. message ValidationGroup {
  29. // 组名称(唯一标识)
  30. string name = 1;
  31. // 组显示名称(中文)
  32. string display_name = 2;
  33. // 组显示名称(英文)
  34. string display_name_en = 3;
  35. // 组描述
  36. string description = 4;
  37. // 是否为默认组(默认启用)
  38. bool is_default = 5;
  39. // 优先级(数字越大优先级越高)
  40. int32 priority = 6;
  41. // 父组(用于继承规则)
  42. string parent_group = 7;
  43. // 互斥组(不能同时激活的组)
  44. repeated string exclusive_groups = 8;
  45. }
  46. // 常用验证组定义
  47. enum CommonValidationGroup {
  48. COMMON_VALIDATION_GROUP_UNSPECIFIED = 0;
  49. // CRUD 操作组
  50. COMMON_VALIDATION_GROUP_CREATE = 1; // 创建场景
  51. COMMON_VALIDATION_GROUP_UPDATE = 2; // 更新场景
  52. COMMON_VALIDATION_GROUP_PATCH = 3; // 部分更新场景
  53. COMMON_VALIDATION_GROUP_DELETE = 4; // 删除场景
  54. COMMON_VALIDATION_GROUP_QUERY = 5; // 查询场景
  55. // 严格程度组
  56. COMMON_VALIDATION_GROUP_STRICT = 10; // 严格模式
  57. COMMON_VALIDATION_GROUP_NORMAL = 11; // 标准模式
  58. COMMON_VALIDATION_GROUP_LOOSE = 12; // 宽松模式
  59. // 用户场景组
  60. COMMON_VALIDATION_GROUP_REGISTER = 20; // 用户注册
  61. COMMON_VALIDATION_GROUP_LOGIN = 21; // 用户登录
  62. COMMON_VALIDATION_GROUP_PROFILE = 22; // 个人资料
  63. COMMON_VALIDATION_GROUP_CHANGE_PASSWORD = 23; // 修改密码
  64. COMMON_VALIDATION_GROUP_RESET_PASSWORD = 24; // 重置密码
  65. // 审核场景组
  66. COMMON_VALIDATION_GROUP_DRAFT = 30; // 草稿
  67. COMMON_VALIDATION_GROUP_SUBMIT = 31; // 提交审核
  68. COMMON_VALIDATION_GROUP_APPROVE = 32; // 审核通过
  69. COMMON_VALIDATION_GROUP_REJECT = 33; // 审核拒绝
  70. // 实名认证场景
  71. COMMON_VALIDATION_GROUP_REAL_NAME_AUTH = 40; // 实名认证
  72. COMMON_VALIDATION_GROUP_ENTERPRISE_AUTH = 41; // 企业认证
  73. COMMON_VALIDATION_GROUP_BANK_CARD_BINDING = 42; // 银行卡绑定
  74. // 安全场景组
  75. COMMON_VALIDATION_GROUP_SENSITIVE_OP = 50; // 敏感操作
  76. COMMON_VALIDATION_GROUP_FINANCIAL = 51; // 金融交易
  77. COMMON_VALIDATION_GROUP_ADMIN = 52; // 管理员操作
  78. }
  79. // ============================================================================
  80. // 验证上下文
  81. // ============================================================================
  82. // 验证上下文 - 运行时传递给验证器的上下文信息
  83. message ValidationContext {
  84. // 激活的验证组
  85. repeated string active_groups = 1;
  86. // 用户角色
  87. repeated string user_roles = 2;
  88. // 用户权限
  89. repeated string user_permissions = 3;
  90. // 租户 ID(多租户场景)
  91. string tenant_id = 4;
  92. // 请求来源
  93. RequestSource source = 5;
  94. // 是否为管理员操作
  95. bool is_admin = 6;
  96. // 自定义元数据
  97. map<string, string> metadata = 7;
  98. // 验证时间戳
  99. int64 timestamp = 8;
  100. // 语言偏好(用于错误消息)
  101. string language = 9;
  102. }
  103. // 请求来源
  104. enum RequestSource {
  105. REQUEST_SOURCE_UNSPECIFIED = 0;
  106. REQUEST_SOURCE_WEB = 1; // Web 端
  107. REQUEST_SOURCE_MOBILE = 2; // 移动端
  108. REQUEST_SOURCE_API = 3; // API 调用
  109. REQUEST_SOURCE_INTERNAL = 4; // 内部调用
  110. REQUEST_SOURCE_BATCH = 5; // 批量处理
  111. }
  112. // ============================================================================
  113. // 验证策略
  114. // ============================================================================
  115. // 验证策略 - 控制验证行为
  116. message ValidationStrategy {
  117. // 验证模式
  118. ValidationMode mode = 1;
  119. // 是否快速失败(遇到第一个错误就停止)
  120. bool fail_fast = 2;
  121. // 是否收集警告(非阻塞性错误)
  122. bool collect_warnings = 3;
  123. // 最大错误数(超过后停止验证)
  124. int32 max_errors = 4;
  125. // 验证超时(毫秒)
  126. int64 timeout_ms = 5;
  127. // 是否启用缓存
  128. bool enable_cache = 6;
  129. // 缓存 TTL(秒)
  130. int32 cache_ttl_seconds = 7;
  131. }
  132. // 验证模式
  133. enum ValidationMode {
  134. VALIDATION_MODE_UNSPECIFIED = 0;
  135. VALIDATION_MODE_ALL = 1; // 验证所有规则
  136. VALIDATION_MODE_REQUIRED_ONLY = 2; // 仅验证必填项
  137. VALIDATION_MODE_CHANGED_ONLY = 3; // 仅验证修改的字段
  138. VALIDATION_MODE_CUSTOM = 4; // 自定义(根据组选择)
  139. }
  140. // ============================================================================
  141. // 组合验证规则
  142. // ============================================================================
  143. // 组合验证规则 - 支持复杂的验证逻辑组合
  144. message CompositeRule {
  145. // 规则组合类型
  146. CompositeType type = 1;
  147. // 子规则列表
  148. repeated RuleRef rules = 2;
  149. // 错误消息
  150. string message = 3;
  151. // 错误消息(英文)
  152. string message_en = 4;
  153. }
  154. // 组合类型
  155. enum CompositeType {
  156. COMPOSITE_TYPE_UNSPECIFIED = 0;
  157. COMPOSITE_TYPE_AND = 1; // 所有规则都必须通过
  158. COMPOSITE_TYPE_OR = 2; // 至少一个规则通过
  159. COMPOSITE_TYPE_XOR = 3; // 恰好一个规则通过
  160. COMPOSITE_TYPE_NOT = 4; // 规则不能通过
  161. }
  162. // 规则引用
  163. message RuleRef {
  164. // 规则 ID
  165. string rule_id = 1;
  166. // 规则权重(用于优先级排序)
  167. int32 weight = 2;
  168. // 是否为可选规则
  169. bool optional = 3;
  170. }
  171. // ============================================================================
  172. // 条件验证
  173. // ============================================================================
  174. // 条件验证规则 - 根据条件决定是否应用规则
  175. message ConditionalRule {
  176. // 条件表达式(CEL)
  177. string condition = 1;
  178. // 条件为真时应用的规则
  179. repeated RuleRef when_true = 2;
  180. // 条件为假时应用的规则
  181. repeated RuleRef when_false = 3;
  182. // 条件评估失败时的默认行为
  183. DefaultBehavior on_error = 4;
  184. }
  185. // 默认行为
  186. enum DefaultBehavior {
  187. DEFAULT_BEHAVIOR_UNSPECIFIED = 0;
  188. DEFAULT_BEHAVIOR_SKIP = 1; // 跳过验证
  189. DEFAULT_BEHAVIOR_APPLY = 2; // 应用验证
  190. DEFAULT_BEHAVIOR_FAIL = 3; // 验证失败
  191. }
  192. // ============================================================================
  193. // 验证规则集
  194. // ============================================================================
  195. // 验证规则集 - 预定义的规则组合,可复用
  196. message ValidationRuleSet {
  197. // 规则集 ID
  198. string id = 1;
  199. // 规则集名称
  200. string name = 2;
  201. // 规则集描述
  202. string description = 3;
  203. // 规则集版本
  204. string version = 4;
  205. // 包含的验证组
  206. repeated string groups = 5;
  207. // 包含的规则
  208. repeated RuleRef rules = 6;
  209. // 验证策略
  210. ValidationStrategy strategy = 7;
  211. // 是否为内置规则集
  212. bool builtin = 8;
  213. // 创建时间
  214. int64 created_at = 9;
  215. // 更新时间
  216. int64 updated_at = 10;
  217. // 创建者
  218. string created_by = 11;
  219. }
  220. // ============================================================================
  221. // 验证规则集市场(可选 - 用于规则共享)
  222. // ============================================================================
  223. // 规则集模板 - 用于快速创建常见场景的验证规则
  224. message RuleSetTemplate {
  225. // 模板 ID
  226. string id = 1;
  227. // 模板名称
  228. string name = 2;
  229. // 模板描述
  230. string description = 3;
  231. // 适用场景
  232. repeated string scenarios = 4;
  233. // 模板类别
  234. repeated string categories = 5;
  235. // 规则集定义
  236. ValidationRuleSet rule_set = 6;
  237. // 使用示例
  238. string usage_example = 7;
  239. // 下载次数
  240. int64 download_count = 8;
  241. // 评分
  242. float rating = 9;
  243. }
  244. // 规则集类别
  245. enum RuleSetCategory {
  246. RULE_SET_CATEGORY_UNSPECIFIED = 0;
  247. RULE_SET_CATEGORY_USER_MANAGEMENT = 1; // 用户管理
  248. RULE_SET_CATEGORY_FINANCIAL = 2; // 金融
  249. RULE_SET_CATEGORY_ECOMMERCE = 3; // 电商
  250. RULE_SET_CATEGORY_CONTENT = 4; // 内容管理
  251. RULE_SET_CATEGORY_GOVERNMENT = 5; // 政务
  252. RULE_SET_CATEGORY_HEALTHCARE = 6; // 医疗
  253. RULE_SET_CATEGORY_EDUCATION = 7; // 教育
  254. RULE_SET_CATEGORY_GENERAL = 99; // 通用
  255. }