Title: 使用场景与案例 Locale: zh URL: https://sensorswave.com/docs/feature-gates/use-cases/ Description: 了解功能开关的典型使用场景和实践案例 本文介绍功能开关在实际业务中的典型使用场景,并提供具体的配置示例和实践建议。 ## 场景 1:新功能灰度发布 ### 业务场景 您的团队开发了一个新的商品推荐算法,希望先验证稳定性和效果,再全量发布。 ### 解决方案 使用功能开关进行渐进式灰度发布。 ### 配置示例 **功能开关配置**: ``` 开关名称:recommendation_algorithm_v2 显示名称:推荐算法 V2 默认值:关闭 ``` **灰度规则**: | 阶段 | 规则配置 | 覆盖用户 | |-----|---------|---------| | 内部测试 | `is_internal_user` = `true` | 0.1% | | 小范围灰度 | 百分比 1% | 1% | | 扩大灰度 | 百分比 10% | 10% | | 大范围灰度 | 百分比 50% | 50% | | 全量发布 | 默认值改为开启 | 100% | ### 代码实现 ```javascript // 检查是否使用新推荐算法 const useNewAlgorithm = await SensorsWave.checkFeatureGate( 'recommendation_algorithm_v2' ); let recommendations; if (useNewAlgorithm) { // 使用新算法 recommendations = await getRecommendationsV2(userId); // 追踪使用新算法的事件 SensorsWave.trackEvent('RecommendationShown', { algorithm_version: 'v2', user_id: userId }); } else { // 使用旧算法 recommendations = await getRecommendationsV1(userId); // 追踪使用旧算法的事件 SensorsWave.trackEvent('RecommendationShown', { algorithm_version: 'v1', user_id: userId }); } ``` ### 监控指标 - **点击率**:推荐商品的点击率 - **转化率**:点击后的购买转化率 - **响应时间**:算法的执行时间 - **错误率**:算法执行失败的比例 ### 预期效果 - 点击率提升 15% - 转化率提升 10% - 响应时间保持在 200ms 以内 - 错误率 80% 时告警 3. **快速降级**:关闭推荐系统开关 4. **使用降级方案**:展示预设的热门商品 5. **恢复服务**:负载恢复后重新开启 ### 预期效果 - 降级后系统负载下降 30% - 核心购买流程不受影响 - 用户体验下降可控(仍有推荐展示) ## 场景 3:付费功能控制 ### 业务场景 SaaS 产品提供基础版和专业版,专业版用户享有高级分析功能。 ### 解决方案 使用功能开关控制付费功能的访问权限。 ### 配置示例 **功能开关配置**: ``` 开关名称:advanced_analytics_access 显示名称:高级分析功能 默认值:关闭 ``` **付费用户规则**: | 规则名称 | 条件 | 返回值 | |---------|------|--------| | 专业版用户 | `subscription_tier` = `professional` | 开启 | | 企业版用户 | `subscription_tier` = `enterprise` | 开启 | ### 代码实现 ```javascript // 检查用户是否有高级分析权限 const hasAdvancedAnalytics = await SensorsWave.checkFeatureGate( 'advanced_analytics_access' ); if (hasAdvancedAnalytics) { // 展示高级分析功能 renderAdvancedAnalytics(); } else { // 展示升级提示 renderUpgradePrompt({ feature: '高级分析', requiredTier: 'professional' }); } ``` ### 用户升级流程 ```javascript // 用户升级订阅后,更新用户属性 async function handleSubscriptionUpgrade(userId, newTier) { // 更新用户属性 SensorsWave.profileSet({ subscription_tier: newTier, subscription_upgrade_date: new Date() }); // 功能开关自动生效,用户立即享有新功能 } ``` ### 预期效果 - 付费用户自动获得功能访问权限 - 降级时自动失去访问权限 - 无需代码部署即可调整权限 ## 场景 4:用户定向功能 ### 业务场景 为 VIP 用户提供专属的优先客服入口,提升高价值用户体验。 ### 解决方案 使用功能开关实现用户定向。 ### 配置示例 **功能开关配置**: ``` 开关名称:priority_customer_support 显示名称:优先客服 默认值:关闭 ``` **VIP 用户规则**: | 规则名称 | 条件 | 返回值 | |---------|------|--------| | VIP 用户 | `user_level` = `VIP` | 开启 | | SVIP 用户 | `user_level` = `SVIP` | 开启 | ### 代码实现 ```javascript // 检查是否展示优先客服入口 const hasPrioritySupport = await SensorsWave.checkFeatureGate( 'priority_customer_support' ); if (hasPrioritySupport) { // 展示优先客服入口 renderPrioritySupportButton({ label: '专属客服', icon: 'vip-support', priority: 'high' }); } ``` ### 预期效果 - VIP 用户看到专属客服入口 - 提升高价值用户满意度 - 普通用户使用常规客服渠道 ## 场景 5:季节性功能 ### 业务场景 节日期间展示特殊的节日主题和促销活动,节日结束后自动关闭。 ### 解决方案 使用功能开关控制季节性功能的开启和关闭。 ### 配置示例 **功能开关配置**: ``` 开关名称:spring_festival_theme 显示名称:春节主题 默认值:关闭 ``` **节日期间规则**: 手动开启和关闭: - 节前手动开启 - 节后手动关闭 ### 代码实现 ```javascript // 检查是否启用春节主题 const enableSpringFestivalTheme = await SensorsWave.checkFeatureGate( 'spring_festival_theme' ); if (enableSpringFestivalTheme) { // 应用春节主题 applyTheme('spring-festival'); // 展示节日促销横幅 renderPromotionBanner({ title: '新春大促', image: '/assets/spring-festival-banner.jpg' }); } else { // 使用默认主题 applyTheme('default'); } ``` ### 预期效果 - 节日期间自动展示主题 - 节日结束自动恢复默认主题 - 无需代码部署 ## 场景 6:A/B 测试前置 ### 业务场景 新的结账流程需要先验证稳定性,再通过 A/B 测试验证效果。 ### 解决方案 先用功能开关验证稳定性,再用 A/B 测试验证效果。 ### 配置示例 **第一步:功能开关验证稳定性** ``` 开关名称:new_checkout_flow_enabled 显示名称:新结账流程开关 默认值:关闭 ``` 灰度 1% → 10% → 50%,验证无技术问题。 **第二步:A/B 测试验证效果** 在功能开关全量后,创建 A/B 测试: ``` 实验名称:结账流程优化实验 实验类型:A/B 测试 对照组:旧结账流程 实验组:新结账流程 流量分配:50% vs 50% ``` ### 代码实现 ```javascript // 第一步:检查功能开关(验证稳定性) const isNewCheckoutEnabled = await SensorsWave.checkFeatureGate( 'new_checkout_flow_enabled' ); if (!isNewCheckoutEnabled) { // 功能未开启,使用旧流程 renderLegacyCheckout(); return; } // 第二步:A/B 测试(验证效果) const experiment = await SensorsWave.getExperiment( 'checkout_flow_optimization' ); const variant = experiment.get('variant', 'control'); if (variant === 'treatment') { // 实验组:新结账流程 renderNewCheckout(); } else { // 对照组:旧结账流程 renderLegacyCheckout(); } ``` ### 实施流程 | 阶段 | 工具 | 目标 | 周期 | |-----|------|------|------| | 灰度验证 | 功能开关 | 验证功能稳定性 | 1-2 周 | | 效果验证 | A/B 测试 | 验证业务效果 | 2-4 周 | | 全量发布 | - | 向所有用户发布 | - | ### 预期效果 - 技术风险可控 - 业务效果可验证 - 决策有数据支持 ## 场景 7:地区定制功能 ### 业务场景 中国用户支持微信支付和支付宝,海外用户支持 PayPal 和信用卡。 ### 解决方案 使用功能开关实现地区定制。 ### 配置示例 **微信支付开关**: ``` 开关名称:wechat_pay_enabled 显示名称:微信支付 默认值:关闭 ``` **规则配置**: | 规则名称 | 条件 | 返回值 | |---------|------|--------| | 中国用户 | `country` = `CN` | 开启 | **PayPal 开关**: ``` 开关名称:paypal_enabled 显示名称:PayPal 支付 默认值:关闭 ``` **规则配置**: | 规则名称 | 条件 | 返回值 | |---------|------|--------| | 海外用户 | `country` ≠ `CN` | 开启 | ### 代码实现 ```javascript // 获取支持的支付方式 async function getSupportedPaymentMethods(userCountry) { const paymentMethods = []; // 检查微信支付 const wechatPayEnabled = await SensorsWave.checkFeatureGate('wechat_pay_enabled'); if (wechatPayEnabled) { paymentMethods.push({ id: 'wechat_pay', name: '微信支付', icon: '/icons/wechat.png' }); } // 检查支付宝 const alipayEnabled = await SensorsWave.checkFeatureGate('alipay_enabled'); if (alipayEnabled) { paymentMethods.push({ id: 'alipay', name: '支付宝', icon: '/icons/alipay.png' }); } // 检查 PayPal const paypalEnabled = await SensorsWave.checkFeatureGate('paypal_enabled'); if (paypalEnabled) { paymentMethods.push({ id: 'paypal', name: 'PayPal', icon: '/icons/paypal.png' }); } return paymentMethods; } ``` ### 预期效果 - 中国用户看到微信支付和支付宝 - 海外用户看到 PayPal - 无需维护多个版本的代码 ## 场景 8:快速问题修复 ### 业务场景 生产环境发现某个功能有 Bug,需要快速关闭,修复后再开启。 ### 解决方案 使用功能开关快速关闭有问题的功能。 ### 配置示例 **功能开关配置**: ``` 开关名称:new_user_profile_enabled 显示名称:新用户资料页 默认值:开启(已全量) ``` ### 问题处理流程 **1. 发现问题** 用户反馈新用户资料页无法加载照片。 **2. 快速关闭功能** 1. 登录 Sensors Wave 控制台 2. 将功能开关改为关闭 3. SDK 在 10 分钟内更新缓存后生效,所有用户回到旧版页面 **3. 修复问题** ```javascript // 修复代码中的 Bug async function loadUserPhoto(userId) { try { const photo = await fetchUserPhoto(userId); return photo; } catch (error) { // 修复:添加错误处理和降级 console.error('Failed to load photo:', error); return getDefaultPhoto(); } } ``` **4. 重新发布** 1. 部署修复后的代码 2. 重新开启功能开关 3. 验证问题已解决 ### 预期效果 - 问题影响时间从数小时缩短到几分钟 - 无需回滚代码或重新部署 - 用户体验影响最小化 ## 总结 功能开关在不同场景下提供了灵活的控制能力: | 场景 | 主要价值 | 典型用法 | |-----|---------|---------| | 新功能灰度发布 | 降低风险,渐进验证 | 默认关闭,逐步放量 | | 功能降级保障 | 快速降级,保障稳定 | 默认开启,故障时关闭 | | 付费功能控制 | 权限管理,动态生效 | 基于用户属性的规则 | | 用户定向功能 | 精准投放,个性化体验 | 基于用户属性的规则 | | 季节性功能 | 灵活开关,无需部署 | 手动开启/关闭 | | A/B 测试前置 | 分离技术风险和效果验证 | 先灰度验证,再实验 | | 地区定制功能 | 地区适配,灵活配置 | 基于地区属性的规则 | | 快速问题修复 | 快速回滚,降低影响 | 发现问题即刻关闭 | ## 下一步 现在您已经了解了功能开关的典型使用场景,接下来可以: 1. **[功能开关与 A/B 测试](gates-vs-experiments.mdx)**:深入了解两者的区别和配合使用 2. **[管理功能开关](management-and-monitoring.mdx)**:学习如何管理功能开关 3. **[最佳实践](best-practices.mdx)**:掌握功能开关的最佳使用方法 --- **最后更新时间**:2026 年 1 月 28 日