用途:RedisInsight 自带功能开关系统,标志定义在远程 JSON 配置中,由后端拉取并通过 API 提供给前端。本技能说明如何新增、提升(dev 转正式)和清理功能开关。
标志类型:dev 标志命名为 dev-<name>(如 dev-browser),值为 false,用 CommonFlagStrategy,用于开发期隐藏未完成功能;常规标志用 camelCase,值为 true,用 CommonFlagStrategy;带数据的常规标志用 WithDataFlagStrategy,可在 data 中携带额外配置;可切换(可覆盖)标志用 SwitchableFlagStrategy,用户可通过 ~/.redis-insight/config.json 本地覆盖。
需改动文件:后端必改 redisinsight/api/config/features-config.json(添加标志条目并提升版本号)、api/src/modules/feature/constants/index.ts(加入 KnownFeatures 枚举)、constants/known-features.ts(加入 knownFeatures 记录,含 name 与 storage,通常为 FeatureStorage.Database)、providers/feature-flag/feature-flag.provider.ts(按策略注册)。若标志控制 UI,前端需改 ui/src/constants/featureFlags.ts(加入 FeatureFlags 枚举)与 ui/src/slices/app/features.ts(在 initialState.featureFlags.features 加默认 { flag: false }),并在组件或 hook 中使用该标志。
策略选择:CommonFlagStrategy 用于大多数开关;WithDataFlagStrategy 用于需携带额外数据;SwitchableFlagStrategy 用于可本地覆盖。注册示例:this.strategies.set(KnownFeatures.YourFeature, new CommonFlagStrategy(this.featuresConfigService, this.settingsService));
配置 JSON:最小 dev 标志为 "dev-myFeature": { "flag": false, "perc": [[0, 100]] };可加 filters(如 config.server.buildType 等于 ELECTRON);渐进发布用 perc 如 [[0, 10]] 表示 10% 用户;带数据用 data 字段。过滤条件支持 eq、neq、gt/gte、lt/lte,常用路径有 config.server.buildType(ELECTRON、DOCKER_ON_PREMISE、REDIS_STACK)、config.server.packageVersion(semver)、agreements.analytics、env.<VAR_NAME>,并支持 and/or 组合。
工作流:新增 dev 标志需按上述文件顺序添加;提升为正式标志时重命名 dev-myFeature 为 myFeature、设 flag: true、可选设置 perc、按需更换策略并提升配置版本;清理时从配置、枚举、记录、策略注册、前端枚举与默认状态中移除,并删除消费组件中的门控代码。
前端用法:通过 useSelector(appFeatureFlagsFeaturesSelector) 读取 features[FeatureFlags.myFeature]?.flag;复杂逻辑可写自定义 selector,返回 features[FeatureFlags.myFeature]?.flag ?? false。
限制:资料未提供该技能的具体安装命令、收费信息或平台支持范围,暂未提供。