Files
gpt-load/internal/models
tbphpandcheluen ed87a87b76 refactor(failover): 重构故障转移状态码配置为标准模式 (#413)
* feat: 支持分组级故障转移状态码 (#397)

* feat: 支持分组级故障转移状态码(增量)

* fix: 限制故障转移状态码为分组级配置

* refactor(config): 清理 #397 遗留的代码质量问题

- 新增 validateStringSettingValue 辅助函数,消除 ValidateGroupConfigOverrides 中的重复校验逻辑
- 删除 ValidateSettings 中已成死代码的 failover_status_codes 分支(上游 ValidateSystemSettingsPayload 已拦截)
- 统一使用 GroupScopedSettingKeyFailoverStatusCodes 常量,消除字符串字面量

* refactor(failover): 重构故障转移状态码配置为标准模式

- 将 failover_status_codes 回归"系统默认 + 分组覆盖"标准模式
  - 添加 default:"400-403,405-999",与原硬编码行为等价
  - EnsureSettingsInitialized 不再跳过该字段,升级后自动写入默认值
  - GetSettings 不再 sanitize,系统设置页可见可改

- proxy 层改为纯 matcher 匹配,删除硬编码默认条件
  - shouldFailoverOnStatusCode 直接读 group.FailoverStatusCodeMatcher
  - 字段语义从"追加"变为"完整策略",名字与行为对齐

- 删除特殊化机制:sanitizeRuntimeSystemSettings、IsSystemSettingVisible、
  ValidateSystemSettingsPayload 及所有调用点

- ValidateSettings 补充 failover_status_codes 格式校验,与分组校验一致

- 更新三语 i18n 文案,示例改为 400-403,405-999,250-260

升级兼容:未配置用户行为完全不变;配置过分组级该字段的用户
需将旧的"追加"写法改为"完整列表"写法

---------

Co-authored-by: cheluen <101640183+cheluen@users.noreply.github.com>
2026-05-05 08:48:23 +08:00
..