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:
@@ -323,6 +323,19 @@ public class SubscriptionService : ISubscriptionService
|
||||
/// (3) monthly usage quota from <see cref="GetAiPhotoQuoteUsageAsync"/>.
|
||||
/// Comped companies bypass all three gates.
|
||||
/// </summary>
|
||||
public async Task<bool> CanUseAiCatalogPriceCheckAsync(int companyId)
|
||||
{
|
||||
var (company, config) = await GetCompanyAndConfigAsync(companyId);
|
||||
if (company == null) return false;
|
||||
if (company.IsComped) return true;
|
||||
|
||||
// Plan-level gate: Enterprise plan must have this feature enabled
|
||||
if (config != null && !config.AllowAiCatalogPriceCheck) return false;
|
||||
|
||||
// Company-level toggle: SuperAdmin can disable per company
|
||||
return company.AiCatalogPriceCheckEnabled;
|
||||
}
|
||||
|
||||
public async Task<bool> CanUseAiPhotoQuoteAsync(int companyId)
|
||||
{
|
||||
var (company, config) = await GetCompanyAndConfigAsync(companyId);
|
||||
|
||||
Reference in New Issue
Block a user