Add three-layer feature gating for AI Catalog Price Check
Adds platform-level, plan-level (Enterprise only), and per-company toggles for the AI Catalog Price Check feature. Includes: - Company.AiCatalogPriceCheckEnabled per-company flag - SubscriptionPlanConfig.AllowAiCatalogPriceCheck plan-level flag - PlatformSetting 'AiCatalogPriceCheckEnabled' global kill switch - IPlatformSettingsService.GetBoolAsync helper - ISubscriptionService.CanUseAiCatalogPriceCheckAsync - UI controls in Companies/Edit, PlatformSubscription/Edit+Index, and SubscriptionManagement/Manage - Migration AddAiCatalogPriceCheckGating applied Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -462,12 +462,14 @@ public class SubscriptionManagementController : Controller
|
||||
/// <param name="id">Primary key of the company to update.</param>
|
||||
/// <param name="aiPhotoQuotesEnabled">Whether AI photo quoting is enabled for this company.</param>
|
||||
/// <param name="aiInventoryAssistEnabled">Whether AI inventory assistance is enabled for this company.</param>
|
||||
/// <param name="aiCatalogPriceCheckEnabled">Whether AI catalog price check is enabled for this company.</param>
|
||||
/// <param name="maxAiPhotoQuotesPerMonthOverride">Monthly AI photo quote limit override; 0 = plan default.</param>
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public async Task<IActionResult> UpdateFeatureFlags(
|
||||
int id,
|
||||
bool aiPhotoQuotesEnabled,
|
||||
bool aiInventoryAssistEnabled,
|
||||
bool aiCatalogPriceCheckEnabled,
|
||||
int? maxAiPhotoQuotesPerMonthOverride)
|
||||
{
|
||||
var company = await _db.Companies.IgnoreQueryFilters().FirstOrDefaultAsync(c => c.Id == id);
|
||||
@@ -475,6 +477,7 @@ public class SubscriptionManagementController : Controller
|
||||
|
||||
company.AiPhotoQuotesEnabled = aiPhotoQuotesEnabled;
|
||||
company.AiInventoryAssistEnabled = aiInventoryAssistEnabled;
|
||||
company.AiCatalogPriceCheckEnabled = aiCatalogPriceCheckEnabled;
|
||||
company.MaxAiPhotoQuotesPerMonthOverride = NullIfZero(maxAiPhotoQuotesPerMonthOverride);
|
||||
company.UpdatedAt = DateTime.UtcNow;
|
||||
company.UpdatedBy = User.Identity?.Name;
|
||||
|
||||
Reference in New Issue
Block a user