fawney19
|
91986baa57
|
feat: 添加流式请求客户端断连检测
在等待上游首字节期间检测客户端是否已断开连接,若检测到断连则及时取消请求并清理资源,避免资源浪费。
- 新增 ClientDisconnectedException 和 wait_for_with_disconnect_detection 工具函数
- ChatHandlerBase 和 CliMessageHandlerBase 均支持 http_request 参数用于断连检测
- 流式传输期间使用后台任务主动检测断连状态
- 断连时设置状态码 499 并记录日志
|
2026-01-28 17:10:21 +08:00 |
|
fawney19
|
bae278a0c1
|
feat: 添加提供商格式转换优先级保持配置
- 新增 Provider.keep_priority_on_conversion 字段,控制格式转换时是否保持优先级
- 新增全局配置 KEEP_PRIORITY_ON_CONVERSION,可全局启用优先级保持
- 调度器根据配置决定是否降级需要格式转换的候选
- 前端 Provider 表单添加"保持优先级"开关
- 调整 HTTP 读写超时默认值为 3600 秒
|
2026-01-28 15:53:33 +08:00 |
|
fawney19
|
e7fda0eadd
|
fix: 统一格式兼容性检查,透传格式也需开关启用
- 同族格式(如 CLAUDE/CLAUDE_CLI)现在也需要全局开关和端点开关启用才能透传
- 格式转换关闭时,Models API 只返回客户端格式本身
- 添加测试用例验证透传格式受开关限制
|
2026-01-28 13:08:14 +08:00 |
|
fawney19
|
95fc848e59
|
feat: 配置导出/导入支持 LDAP 和 OAuth Provider
- 新增配置格式 v2.1,支持导出/导入 LDAP 配置和 OAuth Providers
- 导出时解密敏感字段(bind_password, client_secret, provider_ops credentials)
- 导入时加密敏感字段后存储
- 前端支持预览和显示 LDAP/OAuth 导入结果
|
2026-01-28 12:56:37 +08:00 |
|
fawney19
|
4cd196f665
|
fix: 隐藏普通用户的模型映射信息
对普通用户隐藏使用记录中的 target_model 字段,只有管理员可见。
避免向普通用户暴露内部模型映射策略。
|
2026-01-28 12:41:29 +08:00 |
|
fawney19
|
40e54097b0
|
feat: 添加 Zeabur 部署文档,Models API 支持 CLI 格式
- 新增 Zeabur 平台部署指南文档
- Models API 格式列表增加对应的 CLI 格式支持
|
2026-01-28 12:06:48 +08:00 |
|
fawney19
|
5c80be92c9
|
refactor: 使用 data_format_id 重构格式兼容性判断逻辑
- 在 ApiFormatDefinition 中新增 data_format_id 字段标识数据格式
- 新增 can_passthrough() 函数判断格式间是否可透传
- 重构 compatibility.py 使用 data_format_id 替代 get_base_format()
- 使用量记录支持从 endpoint 回填格式信息(兼容历史数据)
- 前端优化格式转换显示逻辑,区分跨格式转换和同族格式差异
- 首页 header 响应式布局优化
|
2026-01-28 11:07:23 +08:00 |
|
fawney19
|
c1d7b13e7a
|
feat: 使用量记录添加格式转换字段
- cli_handler_base 添加 needs_conversion 变量跟踪格式转换状态
- 用户使用量查询响应新增 endpoint_api_format 和 has_format_conversion 字段
|
2026-01-28 10:01:19 +08:00 |
|
fawney19
|
865be3a6bf
|
feat: 添加异步使用量记录队列系统
- 新增 QueueTelemetryWriter 支持通过内存队列异步记录使用量
- 新增 UsageQueueConsumer 消费者,支持批量处理和流式消费
- 重构 StreamTelemetryRecorder 支持队列写入模式
- UsageService 新增 record_usage_batch 批量记录方法
- 新增 USAGE_QUEUE_ENABLED 和 USAGE_QUEUE_INCLUDE_BODIES 配置项
- 状态值新增 cancelled 类型支持
|
2026-01-28 09:54:18 +08:00 |
|
fawney19
|
b97e029c82
|
refactor: 重构 CleanupScheduler 为 MaintenanceScheduler,新增 Provider 自动签到任务
- 将 cleanup_scheduler.py 重命名为 maintenance_scheduler.py
- CleanupScheduler 重命名为 MaintenanceScheduler,保留向后兼容别名
- 新增 Provider 自动签到定时任务(每天凌晨 1:05 执行)
- 前端新增定时任务配置区域,支持开关 Provider 自动签到
- 新增 enable_provider_checkin 系统配置项
Close #112
|
2026-01-28 02:04:45 +08:00 |
|
fawney19
|
91a30adfc4
|
feat: 用户模型目录支持格式转换
为 /api/users/me/available-models 端点添加格式转换支持,
确保显示所有可通过任意客户端格式访问的模型。
- 新增 _get_all_available_provider_ids 方法
- 检查 OPENAI/CLAUDE/GEMINI 三种格式的兼容性
- 优化 DB 查询从 6 次减少到 2 次
- 与 /v1/models API 逻辑保持一致
|
2026-01-28 01:45:19 +08:00 |
|
fawney19
|
af0daa91ad
|
refactor: 将格式转换全局开关迁移到环境变量配置
- 新增 FORMAT_CONVERSION_ENABLED 环境变量(默认开启)
- 移除数据库中的 format_conversion_enabled 系统配置
- 移除前端系统设置页面的格式转换开关 UI
- 统一同族格式转换(OPENAI/OPENAI_CLI)逻辑,也需检查全局开关和端点配置
- 流生成器使用 ctx.needs_conversion 替代 _needs_format_conversion 方法调用
- 更新测试用例适配新逻辑
- 清理 .env.example 中过时的超时和连接池配置注释
|
2026-01-28 01:22:39 +08:00 |
|
fawney19
|
1e0255d0ed
|
feat: 优化批量余额查询和用户模型权限检查
- 添加批量余额查询并发限制,避免数据库连接池耗尽
- 支持余额加载 pending 状态和前端自动重试机制
- 添加用户可用模型 API,统一使用 AccessRestrictions
- 修复用户表单编辑时数组引用共享导致的数据覆盖问题
- 添加数据库连接池配置说明到 .env.example
|
2026-01-28 01:01:05 +08:00 |
|
fawney19
|
c732a03263
|
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 <33052466+AAEE86@users.noreply.github.com>
|
2026-01-28 00:06:49 +08:00 |
|
fawney19
|
3c0bf5fdae
|
fix: 修复同族 API 格式转换判断逻辑
- OPENAI 和 OPENAI_CLI 使用不同协议(Chat Completions vs Responses API),需要转换
- CLAUDE/CLAUDE_CLI、GEMINI/GEMINI_CLI 格式相同仅认证不同,可透传
- 添加 max_completion_tokens 参数支持(OpenAI 新参数名)
- 移除登录表单冗余的 keyup.enter 事件处理
|
2026-01-27 21:59:12 +08:00 |
|
fawney19
|
6f340b7b91
|
fix: 修复跨格式转换时 usage 提取不准确的问题
- CLI Handler: 跨格式转换时使用 Provider 格式的解析器提取原始 usage
- CLI Handler: 新增从转换后事件中提取 usage 的补充方法
- Chat Handler: 移除不必要的格式自动检测转换代码(跨格式转换由 CLI Handler 统一处理)
- OpenAI Normalizer: 流式请求自动添加 stream_options 以获取 usage 统计
|
2026-01-27 12:39:36 +08:00 |
|
fawney19
|
add477fece
|
refactor: 重构格式转换系统为 Hub-and-Spoke Normalizer 架构
- 移除旧的 converters 模块,改用基于 Internal 中间表示的 Normalizer 模式
- 新增 internal.py 定义统一的内部数据结构(InternalRequest/Response/Error)
- 新增 normalizer.py 定义 FormatNormalizer 基类接口
- 实现 OpenAI/Claude/Gemini 及其 CLI 格式的 Normalizer
- 新增 stream_events.py 和 stream_state.py 支持流式转换
- 重构 registry.py 使用 Normalizer 进行格式转换
- 更新 handlers 适配新的转换架构
- 前端移除 CLI 格式转换按钮的限制
- 添加 golden data 测试确保转换正确性
|
2026-01-27 02:17:18 +08:00 |
|
fawney19
|
76ed7e9fcb
|
feat: 增强 Gemini 流式响应兼容性,支持 JSON-array 格式解析
- 添加 Gemini JSON-array/chunks 格式的解析支持(兼容非 SSE 返回)
- 在上游请求中添加 alt=sse 参数,优先使用 SSE 格式
- 为 OpenAI 客户端统一补齐 [DONE] 流结束标记
- 更新 Gemini finishReason 判断逻辑,采用更宽松的结束判定
|
2026-01-23 23:34:38 +08:00 |
|
NyaDoo
|
cddccd2b99
|
fix: 移除后端普通用户使用统计API中的提供商信息/修复下拉菜单悬停效果 (#121)
* fix: 移除普通用户使用统计页面的提供商信息
普通用户不应该看到后端使用的提供商信息,此前前端筛选框和后端 API
都泄露了这些数据。
- 前端:为提供商筛选下拉菜单添加 isAdmin 条件
- 后端:移除 summary_by_provider 和 records 中的 provider 字段
- 补充:添加遗漏的 first_byte_time_ms 字段
* fix: 修复 SelectItem 下拉菜单悬停高亮效果
将 hover:bg-primary/10 改为 data-[highlighted]:bg-accent,与
DropdownMenuItem 保持一致。radix-vue 使用 data-highlighted 属性
控制高亮状态,这样键盘导航和鼠标悬停的高亮行为才能正确同步。
---------
Co-authored-by: LewisPen <LewisPen@nyadoo.com>
|
2026-01-23 18:57:41 +08:00 |
|
fawney19
|
2256ad1233
|
feat: 完善跨格式转换支持,添加 Gemini 双向转换器
- 实现 Claude/OpenAI -> Gemini 的请求和流式响应转换
- 实现 Gemini -> Claude/OpenAI 的请求转换
- 新增 ClaudeStreamConversionState 和 OpenAIStreamConversionState 状态类
- 添加 model_in_body 和 stream_in_body 元数据字段区分格式特性
- 格式转换后自动设置目标格式所需的 model/stream 字段
- 修复流式转换中 delta/choices 等字段的空值防护
|
2026-01-23 18:50:38 +08:00 |
|
fawney19
|
f45fd06fb0
|
fix: 修复 Redis SCAN cursor 类型问题并优化缓存清除日志
- CacheService.delete_pattern 中 cursor 可能为 int 或 str,统一转为 int 比较
- 模型缓存清除时区分有/无缓存的日志级别(info/debug)
|
2026-01-23 16:23:17 +08:00 |
|
fawney19
|
6f597a5f54
|
fix: 修复模型权限正则匹配逻辑及相关缓存清除
- 修复 model_mappings 正则匹配不再受 candidate_models 限制
- Provider 启用/禁用/删除时清除 GlobalModel 解析缓存
- 优先级管理对话框中启用的 Provider 排在禁用的前面
- 修复请求时间线 skipped 状态颜色适配主题
|
2026-01-23 16:10:53 +08:00 |
|
fawney19
|
86b9bc3036
|
feat: 模型列表 API 支持格式转换兼容性过滤
- 新增 get_compatible_provider_formats 函数,基于端点 format_acceptance_config 过滤兼容的 Provider
- 模型列表查询根据客户端格式和全局转换开关返回可用模型
- 缓存 key 增加 client_format 维度,避免不同格式的缓存混用
- GlobalModel 解析支持 provider_model_mappings 和 model_mappings 匹配
- 修复格式兼容性检查中 config 类型校验缺失问题
|
2026-01-23 14:33:42 +08:00 |
|
fawney19
|
08a3148ab3
|
refactor: 简化模型权限检查,移除 resolved_model_name 参数
- 从 check_model_allowed 和 check_model_allowed_with_mappings 移除 resolved_model_name 参数
- 优化匹配逻辑:先精确匹配 model_name,再检查 candidate_models 交集,最后进行映射匹配
- 更新 CacheAwareScheduler 中的相关调用,传入 provider_model_names 作为 candidate_models
- 同步更新测试用例
|
2026-01-23 00:57:47 +08:00 |
|
fawney19
|
1da70d0518
|
refactor: 统一测试请求构建逻辑,支持多格式测试
- 重构 adapter 基类的 build_request_body 方法,使用 converter_registry 自动处理格式转换
- 后端 test_model 接口增加 endpoint_id 和 api_format 参数支持
- 前端模型映射测试支持根据 Key 和端点配置动态显示可用格式下拉菜单
|
2026-01-22 23:25:51 +08:00 |
|
fawney19
|
ee5ba42b79
|
feat: 增强 Gemini 认证支持与 URL 敏感信息脱敏
- 新增 extract_client_api_key_with_query 支持从 URL query 参数提取 API Key
- Gemini 格式遵循 Google SDK 行为:query 参数优先于 header
- 添加 redact_url_for_log 函数对日志中的敏感 URL 参数脱敏
- 上游请求始终使用 header 认证,清除 Gemini query 中的 key 参数
- 放宽 API Key 最小长度限制至 3 字符
- 完善认证方式相关代码注释
|
2026-01-22 19:11:38 +08:00 |
|
fawney19
|
1d27284575
|
Merge pull request #118 from AAEE86/fix2
fix: 链路预览只显示白名单匹配的 Endpoint 和 Key
|
2026-01-22 14:54:52 +08:00 |
|
fawney19
|
af1828dd32
|
feat: 新增 Thinking 整流器处理跨 Provider 签名错误 (#115)
当 Provider A 生成的 thinking 块被发送到 Provider B 时,签名验证会失败。
本次更新实现了自动整流机制,在遇到签名错误时自动清洗 thinking 块后重试。
主要更改:
- 新增 ThinkingRectifier 整流器,移除 thinking 块和 signature 字段
- 新增 ThinkingSignatureException 异常类型
- ErrorClassifier 新增 Thinking 错误模式检测
- FallbackOrchestrator 支持整流后在当前候选重试
- Handler 层传递 request_body_ref 容器支持请求体动态修改
- Usage API 新增 has_rectified 字段标识整流过的请求
- 新增 THINKING_RECTIFIER_ENABLED 配置项控制功能开关
其他改进:
- CacheAwareScheduler 支持 exact/convertible 候选分组排序
- StreamProcessor 预读阶段新增格式转换试验
- ProviderAPIKey.api_formats 改为可空(None 表示支持所有格式)
- Dockerfile 修复 entrypoint.sh 换行符问题
Closes #115
Co-Authored-By: FredericMN <FredericMN@users.noreply.github.com>
|
2026-01-22 14:23:33 +08:00 |
|
AAEE86
|
42aa0cbcee
|
fix: 链路预览只显示白名单匹配的 Endpoint 和 Key
修复链路预览显示不相关 Endpoint 的问题:
- 新增 is_key_model_allowed 函数检查 Key 白名单是否匹配当前 GlobalModel
- 过滤掉白名单不匹配的 Key
- 跳过没有任何匹配 Key 的 Endpoint
- 简化 active_keys 计算逻辑
|
2026-01-22 10:33:03 +08:00 |
|
fawney19
|
cc5db20c58
|
feat: 实现跨 API 格式自动转换功能
- 新增端点级 format_acceptance_config 配置,控制是否接受跨格式请求
- 重构 EndpointFormDialog 为卡片式布局,支持内联编辑和格式转换开关
- StreamProcessor 实现流式响应的跨格式转换,支持 OpenAI/Claude/Gemini 互转
- CacheAwareScheduler 按端点格式筛选候选,同格式优先于跨格式
- 健康度/熔断按 Provider 端点格式分桶,而非客户端请求格式
- 新增 format_conversion_total 和 format_conversion_duration_seconds 指标
- 新增全局配置 format_conversion_enabled 控制总开关
- Input 组件新增 size="sm" 尺寸选项
|
2026-01-22 01:48:56 +08:00 |
|
fawney19
|
99388bfa33
|
refactor: 重构 API 格式相关代码到统一的 api_format 模块
- 新增 src/core/api_format/ 模块,整合所有 API 格式相关功能
- enums.py: APIFormat 枚举定义
- metadata.py: API 格式元数据注册
- headers.py: 请求头处理逻辑
- detection.py: API 格式检测
- conversion/: 格式转换器(Claude/OpenAI/Gemini 互转)
- 删除分散在各处的旧实现
- src/core/api_format_metadata.py
- src/core/headers.py
- src/api/handlers/*/converter.py
- src/api/handlers/base/format_converter_registry.py
- 更新所有引用路径,使用新的统一模块
- 新增 cli_handler_base 中的格式转换支持
|
2026-01-21 18:07:10 +08:00 |
|
fawney19
|
856077a46c
|
feat(ui): 重构端点健康状态为进度条可视化
- 将端点标签改为网格布局的进度条样式
- 显示 API 格式缩写和健康分数百分比
- 优化端点提示区分禁用、无可用密钥和未配置密钥状态
- 优化优先级管理对话框布局以显示更多内容
- 后端添加 total_keys 字段支持密钥状态区分
Closes #113
Co-authored-by: AAEE86 <ppk0227@hotmail.com>
|
2026-01-21 01:10:35 +08:00 |
|
fawney19
|
4eeba69381
|
feat: 新增 cancelled 状态区分客户端主动断开连接
- 新增 cancelled 请求状态,与系统失败 (failed) 区分
- 客户端主动断开连接 (HTTP 499) 不计入失败率统计
- 前后端同步更新状态枚举、UI 样式和统计逻辑
|
2026-01-20 15:40:16 +08:00 |
|
fawney19
|
c8b256ded1
|
refactor: 优化仪表盘权限和 UI 样式
- 普通用户仪表盘隐藏提供商统计相关信息
- 为普通用户新增每日使用趋势折线图
- 登录对话框 UI 样式优化(Logo 放大、圆角统一)
- 输入框组件样式微调
- 将项目名称从 "API Gateway" 改为 "AI Gateway"
|
2026-01-20 01:58:55 +08:00 |
|
fawney19
|
1874214927
|
fix: 供应商统计排除 unknown 及表格列宽响应式优化
- 从 Dashboard 供应商成本统计中排除 unknown 提供商
- 优化供应商管理表格列宽为百分比宽度配合最小宽度
Closes #110
Co-authored-by: RWDai <27391645+RWDai@users.noreply.github.com>
|
2026-01-19 20:47:00 +08:00 |
|
fawney19
|
c29d57622f
|
feat: 添加 Dashboard 供应商成本统计功能
- 新增 stats_daily_provider 表存储每日供应商统计数据
- 实现供应商维度的数据聚合服务
- Dashboard API 返回 provider_summary 供应商汇总数据
- 前端新增 DoughnutChart 环形图组件
- Dashboard 新增供应商成本分布可视化卡片
- 移除重复的请求次数/费用趋势折线图
Closes #110
Co-authored-by: RWDai <27391645+RWDai@users.noreply.github.com>
|
2026-01-19 20:23:55 +08:00 |
|
fawney19
|
427f173b38
|
feat: OAuth 绑定安全增强及限流配置优化
- 新增一次性绑定令牌机制,避免在 URL 中暴露 access_token
- 绑定流程改为新标签页打开,完成后自动刷新状态
- 放宽认证相关接口的 IP 限流配置
- 登录添加 429 限流错误的友好提示
- OAuth 绑定列表添加 Provider 图标显示
Close #106
|
2026-01-19 19:34:31 +08:00 |
|
fawney19
|
0265849ed3
|
feat: 统一 SSL 证书配置并支持用户创建时设置访问权限
- 新增 ssl_utils.py 模块,统一使用 certifi 证书
- 将所有 httpx 客户端的 verify 参数改为使用 get_ssl_context()
- 管理员创建用户时支持设置 allowed_providers/api_formats/models
- 修复 provider_ops 敏感字段列表缺失 session_cookie
|
2026-01-19 17:56:02 +08:00 |
|
fawney19
|
6bc9cdc69d
|
feat: 新增 Anyrouter/Cubence/YesCode 架构及余额监控增强
- 新增三个 provider 架构:Anyrouter、Cubence、YesCode
- 前端新增对应的认证配置模板
- 余额监控增强:支持窗口限额显示(进度条+倒计时)、签到状态、错误信息展示
- 架构基类新增 prepare_verify_config 异步预处理方法
- API 返回 ops_architecture_id 字段用于前端展示
|
2026-01-19 17:18:03 +08:00 |
|
fawney19
|
3d88dfd98a
|
feat: 添加 OAuth 认证支持及相关改进
- 新增 OAuth 模块,支持 LinuxDo/GitHub/Google 等第三方登录
- 用户邮箱改为可选字段,支持无邮箱注册
- 新增模块配置验证状态 (config_validated/config_error)
- 系统设置界面改为分块独立保存
- 用户设置新增 OAuth 绑定管理和首次密码设置
- 登录界面支持 OAuth 按钮展示
- 邮箱验证设置移至邮件设置页面
|
2026-01-19 03:19:17 +08:00 |
|
fawney19
|
e2e14fd09c
|
feat: ProviderOpsConfig 支持独立存储 base_url
将 base_url 作为 ProviderOpsConfig 的独立字段存储,
获取时优先读取配置中的值,否则回退到 endpoint/provider。
|
2026-01-18 13:20:14 +08:00 |
|
fawney19
|
aa57f78561
|
feat: 验证 API 成功后预填充余额缓存
验证认证成功时,复用返回的 quota 信息缓存余额,
避免后续重复查询余额接口。
|
2026-01-18 13:00:11 +08:00 |
|
fawney19
|
0c5c6b3288
|
refactor: 提取模型可用性查询到独立模块 ModelAvailabilityQuery
Close #101
- 新增 src/services/model/availability.py,集中管理系统级模型可用性查询条件
- 重构 models_service.py,复用 ModelAvailabilityQuery 的查询方法
- 删除 find_model_by_id 的 provider_model_name 回退逻辑
- 支持 model_mappings 正则匹配(使用 check_model_allowed_with_mappings)
- 修复 test_auth.py 中缺少的 is_locked mock 属性
- 新增 ModelAvailabilityQuery 单元测试
|
2026-01-18 01:45:25 +08:00 |
|
fawney19
|
b98fc8497f
|
feat: 自适应 RPM 未学习时不限制,改为碰壁学习策略
- 移除自适应模式的默认初始限制(RPMDefaults.INITIAL_LIMIT)
- 未学习到边界前不限制 RPM,让系统自由运行直到遇到 429
- 前端自适应 Key 显示学习到的值或"探测中"状态
- 批量余额查询改为并行执行,提升性能
|
2026-01-17 23:44:53 +08:00 |
|
fawney19
|
f002f8de03
|
feat: Key 删除时自动解除不再匹配的 GlobalModel 关联
- 新增 auto_disassociate_provider_by_key_whitelist 方法检测并解除关联
- 删除 Key 后检查 Provider 剩余 Key 白名单,移除不再匹配的 Model
- 前端删除密钥后并行刷新端点列表、模型列表和模型映射
Closes #102
Co-authored-by: AAEE86 <ppk0227@hotmail.com>
|
2026-01-17 22:05:09 +08:00 |
|
fawney19
|
4fa0201b7e
|
feat: 审计日志搜索从用户ID改为用户名模糊匹配
Closes #104
Co-authored-by: AAEE86 <ppk0227@hotmail.com>
|
2026-01-17 20:47:13 +08:00 |
|
fawney19
|
c71027c466
|
feat: 添加 Provider Ops 扩展操作系统,支持余额监控
主要更改:
- 新增 Provider Ops 服务框架,支持通过架构配置执行余额查询等扩展操作
- 后端:添加 provider_ops 服务层和 API 路由
- 前端:添加 ProviderAuthDialog 组件配置认证信息
- 前端:添加 providerOps API 和认证模板系统
UI/组件优化:
- Input 组件:新增 masked 属性,使用 CSS 遮蔽敏感信息,避免触发密码管理器
- Pagination 组件:移除首页/末页/上下页按钮,改为页码跳转输入框
- KeyFormDialog:使用 masked 属性简化 API Key 输入逻辑
- ProviderManagement:重新设计表格布局,显示余额监控数据
|
2026-01-17 19:50:35 +08:00 |
|
fawney19
|
45f071abd9
|
fix: 在 Provider/Endpoint/Key 变更时清除 /v1/models 列表缓存
- 将 on_key_allowed_models_changed 改为 async 函数
- 在 Provider/Endpoint/Key 的增删改操作后调用 invalidate_models_list_cache
- 优化 invalidate_models_list_cache 使用 delete_pattern 通配符删除
|
2026-01-16 19:42:35 +08:00 |
|
fawney19
|
019e148ddb
|
refactor: 将上游模型缓存从前端迁移到后端 Redis
- 后端:定时任务刷新时将上游模型写入 Redis 缓存
- 后端:provider_query 优先从缓存读取,支持 force_refresh 参数
- 后端:auto_fetch_models 开启时改为同步获取,确保前端能立即看到数据
- 前端:移除本地缓存,只保留并发请求去重逻辑
- 前端:KeyAllowedModelsEditDialog 添加刷新上游模型按钮
|
2026-01-16 19:10:59 +08:00 |
|
fawney19
|
b2d08f964d
|
feat: 删除端点时自动清理关联密钥的 API 格式配置
- 端点删除添加确认弹窗,提示用户关联密钥将受影响
- 密钥表单添加 canSave 验证,禁用按钮替代弹窗提示
- 后端删除端点时自动从关联密钥移除对应 API 格式
|
2026-01-16 18:24:52 +08:00 |
|