v4.1.0
v4.1.0(2026-06-22)
Web 模块技术债务优化:
修复 中的死代码( 表达式未使用)middleware.pynow - 300.0
提取 工具函数,消除 3 处重复的 Chat URL 构造逻辑build_chat_url()
提取 工具函数,消除 5 处重复的提供商检测+验证模式resolve_provider()
修复 中弃用的 ,改用keys.pydatetime.utcnow()datetime.now(timezone.utc)
为所有静默异常块添加 日志记录logger.debug()
将内联导入(、)移至模块顶部import re as _reimport time as _time
统一 模型端点的错误响应格式,使用 替代原始 dicttest.pyErrorResponse
删除 中的重复注释_app.py
代码行数减少 ~110 行,新增 共享工具模块web/utils.py
操作日志清理功能:
新增 API 端点,支持清理当天或指定日期的主日志DELETE /api/logs
新增 方法ProjectLogger.clear_main_log()
测试验证:
全量测试通过:682通过,跳过1
覆盖率:78.40%(超过 60% 要求)
前端清理优化:
CSS: 添加缺失的 变量,新增 工具类--neon-cyan-dim.btn-sm.btn-danger.url-input.toolbar-divider
CSS: Confirm 模态框和添加服务商表单的内联样式提取为 CSS 类
CSS: 签名报告样式拆分到components/signature-report.css
CSS: 内联 从 71 减少到 39,/ 从 10 减少到 0style=onfocusonblur
JS: 提取 、 到selectCustomOptiontoggleCustomSelecttoggleLogsui-helpers.js
JS: 新增 函数,带确认对话框clearLogs()
HTML: 从 531 行精简到 508 行index.html
v4.0.0 (2026-06-21)
前端模块化重构: 将单体 (4725行) 重构为模块化结构:index.html
CSS 拆分: 5个主题文件 + 7个组件文件
tokens.css— CSS 变量
base.css— 基础样式、布局、响应式
components.css— 组件入口 (@import)
components/— 7个独立组件(按钮、表单、卡片、表格、状态、导航、覆盖层)
modals.css— 模态框样式
animations.css— 动画和过渡
JS 模块化: 12个ES模块
state.js— 全局状态管理
utils.js— 纯工具函数
api/— 9个API模块(客户端、统计、密钥、检查、测试、平衡、模型、提供者、杂项)
UI模块: toast, progress, confirm, keys-table, providers, batch, modals, model-detect
init.js— 入口点和事件绑定
index.html精简至 467行
API模块拆分: 按后端路由结构拆分前端API模块:
api/client.js— 通用fetch逻辑(safeFetch)
api/index.js— 重新导出所有函数
每个路由模块对应独立文件
静态文件服务:添加 中间件StaticFiles
错误处理增强: loadKeys/loadStats 添加 try-catch 错误处理
ES模块修复: 修复 State 对象只读绑定问题
Web模块重构: 将单体 (2094行) 重构为模块化包结构:web.py
web/_app.py— 应用入口 (239行)
web/middleware.py— 中间件和错误处理器
web/progress.py— ProgressTracker和SSE辅助
web/routes/— 8个路由模块(keys、check、test、balance、models、providers、stats、misc)
测试套件重构:
合并补充测试文件 (test_parser_supplement, test_validator_supplement, test_ssrf_supplement)
删除重复测试文件 (test_web_fixes)
修复 mock 路径以匹配新的 web 模块结构
提取共享 fixtures 和帮助函数到 conftest.py
移除冗余 @pytest.mark.asyncio 装饰器
修复速率限制中间件的测试隔离问题
代码去重: 消除 中的重复模型检查逻辑api_check_single
调试系统清理:移除 hack,使用干净的可选导入模式sys.path.insert
重复路由修复: 合并重复的 路由GET /api/providers
日志显示修复: 修复日志显示为 的问题[object Object]
可扩展性: 在 中添加新路由、中间件和错误处理器的扩展指南routes/init.py
提供商系统重构:
删除 属性,改为先从 API 获取模型列表再测试check_model
删除所有提供商中的冗余方法(build_headers, get_models, test_token_limit, test_concurrency, _probe, check_real)
标准提供商从 ~77 行减少到 ~5-8 行
总共减少 ~2,400 行冗余代码
添加 属性,自动从 推导 聊天完成 端点chat_endpointcheck_endpoint
检测逻辑修复:
修复检测逻辑不再因为 返回 200 就立即返回提供商/v1/models
/v1/models只用于获取模型列表,不能判断提供商
/chat/completions返回 200 才能判断提供商
添加前缀匹配逻辑,支持共享前缀(如 )的提供商检测sk-
免费模型对检测非常重要,检测逻辑会测试所有模型包括免费模型
文档更新:
更新 README.md 的“提供商智能检测”部分,添加详细的检测流程说明
更新 docs/DEVELOPMENT.md 的“检测系统”部分
更新 docs/PROVIDER_REFACTORING_PLAN.md,添加“检测逻辑详解”部分
在 detector.py 中添加详细注释,说明 和 的区别/v1/models/chat/completions
Bug 修复与改进:
修复 SDK 文档方法名与实际不符( → 等)get_keys()keys()
修复删除密钥时报错 “No passphrase found”,新增自动生成加密密钥功能
修复签名验证报告端点 404 错误,改为动态生成报告
修复添加自定义服务商按钮缺失,新增前端 UI