feat: 添加格式转换追踪、模型过滤规则和 Provider 超时配置

1. Usage 格式转换追踪
   - 新增 endpoint_api_format 和 has_format_conversion 字段
   - 在用量记录中显示格式转换信息(请求格式 → 端点格式)
   - 兼容历史数据的回填逻辑

2. Provider API Key 模型过滤规则
   - 新增 model_include_patterns 和 model_exclude_patterns 字段
   - 支持 * 和 ? 通配符,不区分大小写
   - 自动获取模型时应用过滤规则

3. Provider 超时配置
   - 新增 stream_first_byte_timeout 和 request_timeout 字段
   - 支持每个 Provider 单独配置超时时间
   - 优先使用 Provider 配置,否则回退到全局配置

Close #122, Close #123

Co-Authored-By: AAEE86 <[email protected]>
This commit is contained in:
fawney19
2026-01-28 00:06:49 +08:00
co-authored by AAEE86
parent 3c0bf5fdae
commit c732a03263
23 changed files with 652 additions and 97 deletions
@@ -754,14 +754,12 @@ watch(() => props.open, async (open) => {
// 加载全局模型
await loadGlobalModels()
// 自动获取模式下,获取上游模型并刷新(保留锁定的模型)
// 自动获取模式下,获取上游模型用于显示(但选中状态使用已保存的 allowed_models)
if (props.apiKey.auto_fetch_models) {
await fetchUpstreamModels()
// 锁定的模型 + 最新上游模型(去重)
const newSelected = new Set(lockedModels.value)
upstreamModelNames.value.forEach(m => newSelected.add(m))
selectedModels.value = Array.from(newSelected)
initialSelectedModels.value = [...selectedModels.value]
// 注意:不再将所有上游模型自动标记为选中
// 因为后端有过滤规则,实际保存的 allowed_models 是过滤后的结果
// selectedModels 已在上面从 props.apiKey.allowed_models 初始化
}
// 提取自定义模型(不在全局模型和上游模型中的)