fawney19
b2731eddf3
fix: 修复对话视图合并后的问题
...
- 移除未使用的变量 index
- 修复展开/收缩按钮在非请求体Tab被禁用的问题
- 删除未使用的 copyJsonToClipboard 函数
Co-Authored-By: LewisPen <LewisPen@nyadoo.com >
2026-01-15 19:18:32 +08:00
fawney19
18ac4fe2f3
Merge branch 'pr-99'
2026-01-15 19:16:01 +08:00
fawney19
81b7b74fd4
refactor: 简化优先级拖拽交换逻辑并优化用户配额处理
...
- 优先级拖拽改为直接交换优先级值,而非重新编号
- 添加 Provider 优先级的点击编辑功能
- 创建用户时由后端统一处理默认配额逻辑
- 移除前端 getDefaultQuota API 调用和后端对应端点
Close #97
2026-01-15 18:59:01 +08:00
LewisPen
38607332b9
feat(usage): 请求详情页面添加对话视图功能
2026-01-15 18:37:59 +08:00
fawney19
dd387735d4
feat: LDAP 用户隐藏密码修改功能并应用默认配额
...
- /me API 返回 auth_source 字段
- 前端 Settings 页面对 LDAP 用户隐藏密码修改卡片
- LDAP 用户首次登录创建时使用系统默认配额
Close #98
2026-01-15 17:57:58 +08:00
fawney19
d9645fa062
feat: 用户创建和注册时使用系统配置的默认配额
...
- 新增 /api/admin/users/defaults/quota 接口获取默认配额
- 用户注册时从系统配置读取默认配额
- 管理员创建用户时自动获取并使用系统默认配额
2026-01-15 17:41:04 +08:00
fawney19
026f4b9c0e
fix: 修复模型测试时正则映射支持及缓存装饰器实例方法兼容
...
- ModelsTab 加载时并行获取模型映射预览数据
- 测试模型时自动识别正则映射并使用映射名称和指定 key
- 密钥变更后并行刷新模型列表和模型映射
- 修复 cache_decorator 对实例方法的 context 参数解析
2026-01-15 17:26:52 +08:00
fawney19
a223819dd7
refactor: 提取正则工具模块并清理废弃代码
...
前端:
- 新增 model-mapping-regex.ts 工具模块,统一正则验证和 LRU 缓存
- ModelMappingsTab/RoutingTab 重构为使用 computed 缓存匹配结果
- 移除多个组件中未使用的变量和函数
- 添加 HTMLImageElement/HTMLIFrameElement 到 ESLint 全局类型
- 修复 vitest 需要 --experimental-require-module 的问题
后端:
- 移除废弃的异步数据库支持 (get_async_db, AsyncSession)
- 将 async_utils 从 database/ 迁移到 utils/
- 改进 database.py 类型标注
- 修复 email 模块的 aiosmtplib 可选导入类型问题
2026-01-15 17:03:19 +08:00
fawney19
bc16c0eec8
style(usage): 调整使用记录表格类型列宽度
2026-01-15 13:44:22 +08:00
fawney19
bc2b430ec3
style(usage): 请求链路节点改回居中布局并修复 TypeScript 兼容性
...
- 将节点布局从两端对齐改回居中展示
- 将 findLastIndex 替换为向后兼容的 for 循环实现
2026-01-15 13:29:22 +08:00
fawney19
abe65ad01b
fix(usage): 解耦活跃请求轮询与全局刷新逻辑
...
1秒轮询始终用于活跃请求的实时更新,不再受全局刷新状态影响
2026-01-15 12:19:46 +08:00
fawney19
76f648b4eb
feat(usage): 活跃请求轮询增加缓存与成本字段
...
- 后端 getActiveRequests 返回新增 cache_creation/read_input_tokens、actual_cost、rate_multiplier
- 前端轮询时同步更新这些字段到记录中
- 优化刷新逻辑:全局刷新开启时停止1秒轮询,关闭时恢复
2026-01-15 12:13:47 +08:00
fawney19
514bf7e3ed
feat(usage): 改进请求追踪与缓存预热
...
- 区分请求重试与故障转移:新增 has_retry 标识亲和缓存重试
- 修正候选 TTFB 计算:记录候选自身的首字节时间而非全局时间
- Streaming 状态同步 rate_multiplier,支持按 API 格式配置
- 新增缓存预热服务:启动时预热仪表盘统计、热力图、每日统计
- 优化缓存 TTL 配置:仪表盘统计 2 分钟、热力图和每日统计 10 分钟
- 自动刷新间隔从 10 秒调整为 5 秒
2026-01-15 11:45:46 +08:00
fawney19
dc2996988b
fix(routing): 移除 Key 的 RPM 显示并修复有效提供商计数
...
- 移除链路预览中 Key 健康度后面的 RPM 数值显示
- 修复有效提供商计数逻辑,无 Key 的提供商不再计入有效数量
2026-01-15 02:59:15 +08:00
fawney19
c51f94ee87
style(ui): 将请求链路轨道布局从居中改为两端对齐
...
fix #94
Co-Authored-By: AAEE86 <AAEE86@users.noreply.github.com >
2026-01-15 02:44:06 +08:00
fawney19
5d34426428
feat(models): 路由预览显示 Key 白名单的模型映射匹配
...
- 后端返回 GlobalModel 的 model_mappings 正则模式
- 前端用映射模式匹配 Key 白名单,显示匹配的模型名
2026-01-15 02:36:00 +08:00
fawney19
4835ca13f5
feat(models): 模型映射支持按提供商分组并自动关联
...
- 映射匹配结果按提供商分组显示,支持单个关联
- 保存映射规则时自动批量关联未关联的提供商
- 优化模型详情加载逻辑,并行获取最新数据
- 移除冗余的调度器日志输出
2026-01-15 02:11:44 +08:00
fawney19
84f46d5ea7
fix: 修复移动端菜单背景样式不一致问题
...
closes #93
2026-01-15 00:39:38 +08:00
fawney19
19209181dc
feat(models): 添加全局 Key 白名单数据支持模型映射实时匹配
...
- 新增 GlobalKeyWhitelistItem 类型定义
- 路由预览 API 返回 all_keys_whitelist 字段,包含所有活跃 Provider 的 Key 白名单
- 前端 ModelMappingsTab 改用全局白名单数据进行实时匹配
2026-01-15 00:35:28 +08:00
fawney19
0348b7d915
refactor: 废弃 rate_multiplier 字段,改进成本倍率回退逻辑
...
- 在前后端模型中为 rate_multiplier 添加 @deprecated 标记
- 修复 rate_multipliers 回退逻辑:当 rate_multipliers 存在但未配置当前格式时使用 1.0
- ModelMappingsTab: 删除映射后自动保存,简化空状态提示
- ModelManagement: 添加 refreshModel 事件在映射更新后刷新模型数据
- CacheAwareScheduler: 添加映射匹配调试日志,移除 candidate_models 限制
2026-01-14 21:07:28 +08:00
fawney19
bec9c3a989
refactor: 将模型别名(alias)统一重命名为模型映射(mapping)
...
- 重命名 API: alias-mapping-preview -> mapping-preview
- 重命名类型: AliasMatchedModel -> MappingMatchedModel 等
- 重命名字段: model_aliases -> model_mappings, alias_matched_model -> mapping_matched_model
- 重命名前端组件: ModelAliasesTab -> ModelMappingsTab
- 重命名验证函数: validate_model_aliases -> validate_model_mappings
- 同步更新相关测试用例
- 补充 ModelService 中新增/批量创建模型时的缓存失效逻辑
2026-01-14 19:35:41 +08:00
fawney19
b272109055
refactor(model-permissions): 简化 allowed_models 为纯列表格式
...
移除按 API 格式区分的字典模式(Dict[str, List[str]]),统一使用简单列表格式。
- 删除 normalize_allowed_models 的 api_format 参数
- 删除 check_model_allowed 的 api_format 参数
- 简化 merge_allowed_models 为直接列表交集
- 移除前端的字典模式兼容代码和警告 UI
- 删除 is_format_mode、convert_to_format_mode 等辅助函数
2026-01-14 17:57:21 +08:00
fawney19
0ed053b02f
fix(model-resolution): 修复模型解析优先级和别名匹配范围
...
- 调整 ModelCacheService 解析优先级:优先直接匹配 GlobalModel.name,
避免被 provider_model_name 误导到错误的 GlobalModel
- 为 check_model_allowed_with_aliases 新增 candidate_models 参数,
限制别名匹配只能落到 Provider 实际配置的模型名上
- 对 allowed_set 排序以确保别名匹配结果的确定性
- 调整 HTTP_READ_TIMEOUT 默认值从 300s 改为 60s
- 优化 ModelMappingTab 组件布局,将正则表达式提取到 Key 级别展示
- 补充 .env.example 超时配置文档
2026-01-14 17:29:04 +08:00
fawney19
97d66a8d0c
feat(trace): 在请求链路追踪中记录并展示首字时间(TTFB)
...
将 first_byte_time_ms 添加到候选记录的 extra_data 中,
并在前端时间线组件中展示该指标。
2026-01-14 16:41:58 +08:00
fawney19
1f6e384d2b
fix(ui): 居中对齐时间线轨道内容
2026-01-14 15:43:01 +08:00
fawney19
68737b9ed6
refactor(ui): 重构模型映射功能,简化交互并提取独立组件
...
- ModelMappingDialog: 简化为单栏选择面板布局,移除拖拽排序和优先级编辑
- ProviderDetailDrawer: 移出别名映射预览,使用独立 ModelMappingTab 组件
- 新增 ModelMappingTab 组件: 统一展示精确映射和正则映射,支持连接测试
2026-01-14 14:28:13 +08:00
fawney19
a8813cfb89
feat(keys): 新增密钥自动获取模型功能
...
- 添加 auto_fetch_models 字段支持定时从上游 API 获取可用模型
- 添加 locked_models 字段支持锁定模型,刷新时不会被删除
- 新增 ModelFetchScheduler 调度器定期执行模型获取任务
- 前端 KeyFormDialog 添加自动获取模型开关
- 前端 KeyAllowedModelsEditDialog 支持模型锁定操作
- ProviderDetailDrawer 显示密钥同步状态
- 数据库迁移添加新字段
2026-01-14 13:12:19 +08:00
fawney19
3b194d3c23
fix(ui): 移除未声明的组件 props 和 emits 消除 Vue 警告
...
- ModelManagement: 移除 ModelDetailDrawer 未使用的 providers、loading-providers props 和 refresh-providers 事件
- ProviderDetailDrawer: 移除 BatchAssignModelsDialog 未声明的 provider-identifier prop
- 删除不再使用的 refreshSelectedModelProviders 函数
2026-01-14 00:28:28 +08:00
fawney19
5374add5d8
feat(update): 增强更新检查功能,展示发布日志和发布时间
...
- 后端从 GitHub Tags API 改为 Releases API,获取更丰富的发布信息
- 新增 release_notes 和 published_at 字段
- 前端更新对话框展示发布时间和 Markdown 格式的更新日志
- 使用 DOMPurify 对 Markdown 渲染结果进行 XSS 防护
- 简化 GlobalModel 缓存失效逻辑,合并同步/异步调用
2026-01-13 20:29:16 +08:00
fawney19
8c4c5fa394
feat(ui): 增加模型连接性测试功能并优化对话框 ESC 键处理
...
- 模型测试: 新增测试按钮,支持多 API 格式选择
- ESC 键: 重构为全局栈管理,支持嵌套对话框
- 修复: check_endpoint 使用 FORMAT_ID 替代 name
- 优化: Redis 连接池添加健康检查
Co-authored-by: htmambo <htmambo@users.noreply.github.com >
2026-01-13 20:11:09 +08:00
fawney19
6fdb944b1e
fix(ui): correct node-line positioning for horizontal scroll
...
Add proper absolute positioning (right: -64px, top: 50%) to ensure
connection lines correctly span the gap between timeline nodes.
2026-01-13 19:17:53 +08:00
AAEE86
d488f809d5
feat(ui): add horizontal scrolling to request timeline
2026-01-13 19:16:08 +08:00
AAEE86
5ed3695c48
feat(ui): add inline editing for API key rate multipliers
...
Add click-to-edit functionality for rate multipliers in the provider detail drawer. Users can now click on any multiplier value to edit it inline, with support for keyboard shortcuts (Enter to save, Escape to cancel) and automatic focus management. The changes are immediately saved to the backend and reflected in the UI.
2026-01-13 18:59:53 +08:00
fawney19
1a0a3de2fc
feat(ui): 优化熔断状态显示和健康度格式
...
- 健康度格式统一为 0-1 小数格式(前后端同步)
- 添加熔断倒计时显示,支持实时更新
- 新增 useCountdownTimer composable 用于倒计时逻辑
- 添加 Key 健康恢复功能(按 API 格式恢复)
- 优化 UI 布局:简化链路预览标题、调整 Key 信息为两行显示
- 修复错误处理顺序(先刷新数据再显示成功提示)
- 减少模板中函数重复调用
2026-01-13 18:42:15 +08:00
fawney19
e536b7bc35
fix(ui): 修复提供商展开时左侧节点位置偏移问题
...
将上半段连线从自适应高度改为固定高度,确保节点圆点始终与卡片头部对齐
2026-01-13 16:06:52 +08:00
fawney19
85decd7487
feat: 实现 GlobalModel 别名匹配系统
...
主要更改:
- GlobalModel 支持 model_aliases 配置,允许使用正则表达式定义别名规则
- Provider Key 的 allowed_models 现在可以通过别名规则匹配 GlobalModel
- 新增 ModelAliasesTab 组件用于管理模型别名配置
- Provider 详情页新增别名映射预览功能,展示 Key 白名单与 GlobalModel 别名的匹配关系
- 路由预览 API 返回 Key 的 allowed_models 信息
安全特性:
- 使用 regex 库的原生超时保护(100ms)防止 ReDoS 攻击
- 别名规则数量限制(50 条/模型)和长度限制(200 字符)
- 别名映射预览 API 添加超时保护和结果截断
其他改进:
- GlobalModel 更新/删除时使用行级锁防止并发竞态
- 缓存失效逻辑优化,支持异步清理和正则缓存清空
- 路由 Tab 布局重构,使用 flexbox 替代绝对定位
2026-01-13 16:04:15 +08:00
fawney19
9fea71a70c
feat(ui): 新增模型请求链路预览功能
...
- 添加后端 API 获取 GlobalModel 的请求链路信息 (/api/admin/models/global/{id}/routing)
- 新增 RoutingTab 组件展示模型的请求链路树状结构
- 支持全局 Key 优先和提供商优先两种模式的可视化
- 重构批量模型管理对话框为单列勾选模式
- 修复 errorParser.ts 字符串拼接格式问题
- 若干 Vue 模板格式优化
2026-01-12 23:28:37 +08:00
fawney19
bde5bf4c76
fix(ui): 简化模型定价标签显示
...
将"输入/输出"改为"入/出"以节省空间
2026-01-12 09:10:40 +08:00
fawney19
94abab3260
refactor(ui): 重构批量模型管理对话框为单列勾选模式
...
- BatchAssignModelsDialog: 从左右双栏改为单列勾选,支持统一保存
- KeyAllowedModelsEditDialog: 添加分组折叠功能,优化布局
- Dialog: 调整移动端内边距适配
- ProviderDetailDrawer: 密钥列表改为两行显示
- KeyFormDialog: 缩小对话框尺寸
- ModelsTab: 调整表格列宽
2026-01-11 19:33:16 +08:00
fawney19
76ed136228
refactor(ui): 简化模型权限编辑对话框交互
...
- 将模型权限对话框从双栏穿梭框重构为单面板多选模式
- 简化对话框尺寸,优化布局为单列显示避免模型名称截断
- 模型列表移除能力列,新增快捷添加映射按钮
- 支持从模型列表直接跳转到模型映射对话框并预选模型
2026-01-11 02:06:48 +08:00
fawney19
8d8b20aa47
feat(ui): 优化上游模型查询错误提示
...
新增 parseUpstreamModelError 函数,将后端返回的原始错误信息
转换为用户友好的中文提示,支持解析 HTTP 状态码和 JSON 错误体
2026-01-11 00:41:41 +08:00
fawney19
aec0326d40
feat(ui): 密钥管理支持拖拽调整优先级
...
- 添加拖拽手柄和视觉反馈效果
- 拖拽到组内(2+同优先级)时加入该组
- 拖拽到单独密钥时交换优先级
- 同组内拖拽忽略操作
2026-01-11 00:22:21 +08:00
fawney19
7faca5512a
feat(ui): 优化密钥添加和仪表盘空状态体验
...
- KeyFormDialog: 添加模式下保存后不关闭对话框,清除表单以便连续添加
- KeyFormDialog: 按钮文案根据编辑/添加模式动态显示
- Dashboard: 优化统计卡片加载状态和空数据占位显示
2026-01-10 19:32:36 +08:00
fawney19
09e0f594ff
refactor: 重构限流系统和健康监控,支持按 API 格式区分
...
- 将 adaptive_concurrency 重命名为 adaptive_rpm,从并发控制改为 RPM 控制
- 健康监控器支持按 API 格式独立管理健康度和熔断器状态
- 新增 model_permissions 模块,支持按格式配置允许的模型
- 重构前端提供商相关表单组件,新增 Collapsible UI 组件
- 新增数据库迁移脚本支持新的数据结构
2026-01-10 18:48:35 +08:00
fawney19
dd2fbf4424
style(ui): 调整模型详情抽屉关联提供商表格列宽
2026-01-08 13:37:41 +08:00
fawney19
bf09e740e9
fix(ui): 优化提供商详情页的交互体验
...
- 模型列表删除按钮仅在 hover 时显示红色
- 批量关联模型对话框:只有全局模型时展开,有多个分组时全部折叠
2026-01-08 11:25:52 +08:00
fawney19
60c77cec56
Merge pull request #77 from AAEE86/ui
...
style(ui): improve text visibility in dark mode for model badges
2026-01-08 10:52:54 +08:00
fawney19
0e4a1dddb5
refactor(ui): 优化批量端点创建的 UI 和性能
...
- 调整布局: API URL 移至顶部, API 格式选择移至下方
- 优化 checkbox 样式: 使用自定义勾选框替代原生样式
- API 格式按列排序: 基础格式和对应 CLI 格式上下对齐
- 请求配置改为 4 列布局, 更紧凑
- 使用 Promise.allSettled 并发创建端点, 提升性能
- 改进错误提示: 失败时直接展示具体错误信息给用户
- 清理未使用的 Select 组件导入和 selectOpen 变量
2026-01-08 10:50:25 +08:00
AAEE86
1cf18b6e12
feat(ui): support batch endpoint creation with multiple API formats ( #76 )
...
Replace single API format selector with multi-select checkbox interface in endpoint creation dialog. Users can now select multiple API formats to create multiple endpoints simultaneously with shared configuration (URL, path, timeout, etc.).
- Change API format selection from dropdown to checkbox grid layout
- Add selectedFormats array to track multiple format selections
- Implement batch creation logic with individual error handling
- Update submit button to show endpoint count being created
- Adjust form layout to improve visual hierarchy
- Display appropriate success/failure messages for batch operations
- Reset selectedFormats on form reset
2026-01-08 10:42:14 +08:00
AAEE86
f9a8be898a
style(ui): improve text visibility in dark mode for model badges
2026-01-08 10:26:58 +08:00