租户自定义配置的混乱管理曾是长期困扰我们的核心痛点,早期为快速满足租户个性化需求,我们采用“硬编码+通用扩展字段”的简单方案,比如在任务表中预留10个通用扩展字段(ext1-ext10),供租户自行定义字段含义—某律所租户将ext3设为“案件优先级”,某广告公司将ext5设为“创意标签”,某教育机构则把ext2用作“课程类型”。这种方式初期看似高效,却埋下了严重隐患:随着租户增多,字段含义全靠租户管理员人工记录,一旦人员变动,新接手者往往不清楚ext字段对应的业务含义,导致配置错乱。某教育租户因管理员离职,将原定为“课程类型”的ext2误改为“教师等级”,直接造成300多条课程数据关联错误,客服团队花了3天时间才完成数据修正。更棘手的是版本迭代时,通用扩展字段的类型固定(如均为字符串),无法满足租户对枚举、日期等特殊类型的需求,某律所租户需要将“案件优先级”设为枚举类型(紧急/重要/普通),但ext字段只能存储字符串,只能通过业务代码做逻辑校验,不仅增加开发量,还容易出现校验遗漏。直到客服月度统计中,配置相关的投诉占比达35%,我们才意识到,必须构建一套系统化的“租户级动态配置管理方案”,才能在满足个性化需求的同时,保障系统的可维护性与稳定性。
动态配置管理的核心思路是“元数据驱动”,通过设计统一的配置元数据模型,让租户的自定义需求脱离硬编码,实现配置的动态创建、修改与生效。我们首先设计了配置元数据表,核心字段包括配置ID、租户ID、业务模块(如“案件管理”“客户管理”“项目协作”)、字段名称(如“案件优先级”)、字段类型(字符串/枚举/日期/数字)、校验规则(如必填、长度限制、枚举选项)、显示属性(如页面显示名称、排序顺序、是否隐藏)以及创建/更新时间。以某律所租户的“案件优先级”配置为例,其元数据记录为:租户ID=10086,业务模块=案件管理,字段名称=case_priority,字段类型=枚举,枚举选项=紧急,重要,普通,校验规则=必填,显示名称=案件优先级,排序顺序=3(在表单中第3个显示)。为了减少租户配置的复杂度,我们还设计了“配置模板”机制,按行业预设基础模板,比如“律所模板”包含“案件类型”“代理阶段”等通用字段,“教育模板”包含“课程等级”“授课形式”等字段,租户可直接复用模板并基于自身需求修改,某教育租户通过复用模板,仅用