fix: websearch features_config cleanup and pricing rules validation

- Fix web_search_emulation toggle: explicitly write false for disabled
  platforms instead of leaving stale true from cloned features_config
- Extract validatePricingEntries from validateChannelConfig for reuse
- Validate account_stats_pricing_rules[].pricing in both Create and
  Update paths (negative prices, bad intervals, missing per_request price)
This commit is contained in:
erio
2026-04-14 00:42:40 +08:00
parent a9880ee7b9
commit 9c09bd19b4
2 changed files with 25 additions and 5 deletions

View File

@@ -1032,15 +1032,19 @@ function formToAPI(): { group_ids: number[], model_pricing: ChannelModelPricing[
}
// Collect web_search_emulation (only anthropic platform supports it)
// Always write the key so that disabling in the UI correctly sets platform to false,
// rather than leaving a stale true value from the cloned features_config.
const wsEmulation: Record<string, boolean> = {}
for (const section of form.platforms) {
if (!section.enabled) continue
if (section.web_search_emulation && section.platform === 'anthropic') {
wsEmulation[section.platform] = true
if (section.platform === 'anthropic') {
wsEmulation[section.platform] = !!section.web_search_emulation
}
}
if (Object.keys(wsEmulation).length > 0) {
featuresConfig.web_search_emulation = wsEmulation
} else {
delete featuresConfig.web_search_emulation
}
return { group_ids, model_pricing, model_mapping, features_config: featuresConfig }