snaily
|
5512f7ff21
|
fix(request_log): 修复日志记录中受影响行数的显示
|
2025-09-25 01:10:13 +08:00 |
|
snaily
|
150824938c
|
chore(version): 更新版本号至 2.2.8
v2.2.8
|
2025-09-23 22:10:21 +08:00 |
|
snaily
|
ccaea40281
|
chore(version): 更新版本号至 2.2.7.1
v2.2.7.1
|
2025-09-23 21:27:21 +08:00 |
|
snaily
|
9d8e77c9f7
|
fix: 修复全量检测key失效问题
|
2025-09-19 14:20:06 +08:00 |
|
snaily
|
19941f7f50
|
feat(logging): 增加日志记录以显示使用的授权令牌
v2.2.7
|
2025-09-18 10:59:38 +08:00 |
|
snaily
|
d6981c204a
|
build(docker): 简化 Dockerfile,移除多阶段构建
|
2025-09-18 10:49:03 +08:00 |
|
snaily
|
d386cc7180
|
build(docker): 优化 Dockerfile 以实现多阶段构建
将 Dockerfile 修改为多阶段构建,以减小最终镜像的体积并提高构建效率。
第一阶段(builder)负责安装 Python 依赖项。
第二阶段创建最终的生产镜像,仅从构建器阶段复制已安装的依赖包和应用程序代码,不包含构建时的工具和缓存。
这种方法可以显著减小镜像大小,并利用 Docker 的层缓存机制,仅在 `requirements.txt` 发生变化时才重新安装依赖。
|
2025-09-18 10:21:28 +08:00 |
|
snaily
|
bed3647424
|
chore(version): 更新版本号至 2.2.7
|
2025-09-18 10:00:48 +08:00 |
|
snaily
|
95b5acad66
|
refactor(api): 优化错误处理和日志记录
对多个模块进行了重构,以改进错误处理和日志记录机制。
主要变更包括:
- 在 `gemini_routes` 中,现在会返回更具体的错误信息,包括错误码和错误消息,而不仅仅是异常的字符串表示。
- 在 `api_client` 中,简化了 Gemini API 客户端的错误处理逻辑,移除了冗余的 `try...except` 块,让异常直接向上抛出。
- 在多个服务(如 `openai_chat_service`, `embedding_service`, `tts_service` 等)中,增加了根据配置项 `ERROR_LOG_RECORD_REQUEST_BODY` 来决定是否记录请求体的逻辑,以增强隐私和性能控制。
- 在前端 `keys_status.js` 中,更新了密钥验证结果的处理逻辑,以适应后端返回的新的错误对象结构(包含 `error_code` 和 `error_message`),并移除了冗余的 `executeVerifyAllKeys` 函数。
|
2025-09-18 09:59:32 +08:00 |
|
snaily
|
68b65814bc
|
chore(version): 更新版本号至 2.2.6
v2.2.6
|
2025-09-18 07:37:37 +08:00 |
|
snaily
|
88f5b33018
|
docs(config): 优化错误日志配置选项的说明文案
将错误日志记录请求体选项的提示文案从"关闭可避免敏感数据入库"
更新为"关闭可减少大量磁盘空间占用",更准确地描述该功能的作用
|
2025-09-18 06:41:09 +08:00 |
|
snaily
|
8c62c8121d
|
feat(static): 实现静态资源版本化和模板全局变量支持
- 在Dockerfile中添加默认环境变量配置
- 新增静态资源URL版本化管理功能
- 更新所有模板文件使用static_url函数替代硬编码路径
- 优化错误日志页面移动端按钮布局和响应式设计
- 简化异常处理器返回格式
BREAKING CHANGE: 静态资源URL格式变更,需要重新部署以确保资源正确加载
|
2025-09-18 06:29:45 +08:00 |
|
snaily
|
05762cb6a5
|
feat(config):更新默认模型和相关配置
更新默认模型和相关配置:
- 将默认测试模型从 gemini-1.5-flash 更新为 gemini-2.5-flash-lite
- 更新思考模型列表至 gemini-2.5-flash 和 gemini-2.5-pro
- 添加新的图像模型 gemini-2.5-flash-image-preview
- 更新搜索模型配置以支持最新的 Gemini 2.5 系列
- 同步更新文档中的模型配置说明
|
2025-09-18 05:24:29 +08:00 |
|
snaily
|
78f38cc981
|
refactor(scheduler): 优化定时任务配置和时间处理
- 支持CHECK_INTERVAL_HOURS设置为0以禁用密钥检查任务
- 调整日志清理任务执行时间从凌晨3点改为0点
- 移除timezone依赖,使用本地时间处理
- 优化代码格式和导入顺序
- 为配置编辑器添加CHECK_INTERVAL_HOURS输入验证
- 改进UI布局,为关键配置项添加警告提示
|
2025-09-18 05:14:43 +08:00 |
|
snaily
|
79f47c315e
|
style(ui): 重构配置编辑器字段描述显示方式
将所有配置字段的描述文本从底部小字说明改为标签旁的问号图标提示,提升界面简洁度和用户体验。同时优化了数组容器和独立输入框的边框样式区分。
|
2025-09-18 04:49:04 +08:00 |
|
snaily
|
708fb1604b
|
feat(config): 新增错误日志请求体记录开关(默认关闭)
- 新增环境变量 ERROR_LOG_RECORD_REQUEST_BODY,默认 false
- Settings 增加该配置,并在各服务写入错误日志时按开关决定是否
入库请求体,降低敏感信息泄露风险
- 配置编辑页新增对应开关,前端初始化默认值;.env.example、
README/README_ZH 同步更新
- db: add_error_log 支持 None 请求体并更稳健解析字符串/字典
- perf(db): 将错误日志批量删除 batch_size 从 500 下调到 200,
兼容 SQLite/MySQL 参数上限并提升稳定性
- docs: 补充 aliyun_oss 上传提供商与 OSS 配置示例
- style: 轻微代码格式化与导入顺序优化
|
2025-09-18 04:21:28 +08:00 |
|
snaily
|
7dbd3ad693
|
perf(db): 优化错误日志删除以支持大数据量
将 `delete_all_error_logs` 函数的实现从一次性删除所有记录改为分批删除。这可以防止在处理大量日志时因数据库事务过长而导致的超时或性能问题。
- 每次从数据库中获取一批日志ID,然后根据ID进行删除。
- 在每个批次处理后,使用 `asyncio.sleep(0)` 将控制权交还给事件循环,避免长时间阻塞。
- 批次大小设置为500,以兼容不同数据库(如SQLite)对SQL参数数量的限制。
- 函数现在返回实际删除的日志总数,而不是一个固定的成功指示符。
|
2025-09-18 03:33:59 +08:00 |
|
snaily
|
67dd1af583
|
refactor(error): 统一异常处理和响应格式
这次提交重构了整个应用的异常处理机制,保证了处理方式的一致性,还能提供更详细的错误信息。
主要改动包括:
- 修改了 `ApiClient`,现在抛出的异常会同时包含状态码和消息。这样上游服务就能传递准确的 HTTP 错误响应啦。
- 更新了所有服务层(`gemini`、`openai`、`vertex`、`embedding`),现在会捕获这些结构化的异常,不再从字符串里解析错误消息了。
- 增强了路由级别的错误处理,特别是针对流式端点,能正确捕获初始化错误,并返回结构化的 JSON 错误响应,而不是格式错误的 SSE 事件。
- 在所有 API 路由中添加了 `allowed_token` 的日志记录,方便追踪和调试授权问题。
- 还有一些常规的代码清理,比如调整了 import 顺序和格式化代码,提高了可读性和可维护性。
|
2025-09-18 03:11:45 +08:00 |
|
snaily
|
e104a50cf4
|
Merge pull request #347 from bbbugg:Add-final-SSE-error
Fix: Gemini streaming returns a structured error instead of empty responses
|
2025-09-17 23:58:53 +08:00 |
|
snaily
|
6b9647813b
|
Merge pull request #360 from minguncle:feat-support-aliyunoss
Feat support aliyunoss
|
2025-09-17 20:43:27 +08:00 |
|
wanglinjie
|
f863e3065b
|
Merge remote-tracking branch 'origin/main'
|
2025-09-03 09:38:15 +08:00 |
|
wanglinjie
|
1314e0ee09
|
feat(upload): add support for Aliyhun OSS
|
2025-09-03 09:38:01 +08:00 |
|
snaily
|
81d92370ad
|
Merge pull request #351 from SquirrelJimmy/main
|
2025-09-03 03:27:45 +08:00 |
|
SquirrelJimmy
|
5f6eba62cc
|
feat: 增加配置页面的picgo 自定义url, 处理自定义picgo的返回结果
|
2025-09-01 11:52:12 +08:00 |
|
snaily
|
a8a265c2a7
|
chore(docker): 注释掉 adminer 服务
暂时移除 Adminer 服务,因为它目前不是必需的,并且可以减少运行的容器数量,简化本地开发环境。
|
2025-08-31 22:00:36 +08:00 |
|
snaily
|
ee21e50305
|
Merge pull request #303 from vickyyd:main
Add adminer for convenient mysql database management
|
2025-08-31 21:58:34 +08:00 |
|
snaily
|
611559d298
|
feat(image): 支持多模态模型输入base64格式图片
- 在消息转换中,增加对 `data:image/png;base64,...` 格式图片的支持,允许用户直接在输入中提供base64编码的图片。
- 调整图片处理逻辑,使其能够根据模型名称判断是否启用多模态能力,避免非多模态模型错误处理图片链接。
- 当未配置图床时,模型输出的图片将回退为base64格式,确保图片内容始终可用。
- 优化了相关函数的参数传递和代码格式,提高了代码的可读性和健壮性。
|
2025-08-31 21:39:12 +08:00 |
|
snaily
|
b0127e6fc2
|
Merge pull request #344 from bbbugg/base64-fallback
|
2025-08-31 05:37:19 +08:00 |
|
bbbugg
|
1d15a21ce5
|
Remove upload folder check for Cloudflare imgbed
|
2025-08-31 00:33:33 +08:00 |
|
snaily
|
c206aa8e4a
|
Merge pull request #316 from ConstasJ/modify-readme
docs: 在README里添加关于端点的说明
|
2025-08-31 00:24:53 +08:00 |
|
SquirrelJimmy
|
3f040b7075
|
feat: 增加自定义picgo api url
|
2025-08-29 12:49:12 +08:00 |
|
Copilot
|
1771555fe9
|
Add final SSE error events for streaming endpoints when retries are exhausted
* Initial plan
* Add final SSE error events for all streaming services
Co-authored-by: bbbugg <80089841+bbbugg@users.noreply.github.com>
* revert openai
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bbbugg <80089841+bbbugg@users.noreply.github.com>
Co-authored-by: bbbugg <daming20120101@163.com>
Enhance error handling by extracting nested JSON from error messages in SSE events
Enhance error handling for content generation and streaming endpoints
Enhance error handling for content generation and streaming endpoints
Enhance error handling for content generation and streaming endpoints
Enhance error handling for content generation and streaming endpoints
还原vertex和openai的更改,只保留gemini
|
2025-08-28 22:10:32 +08:00 |
|
Copilot
|
8711088ebc
|
Fix circular import issue between config, logger, and helpers modules (#2)
* Initial plan
* Fix circular import by removing top-level settings import from helpers.py
Co-authored-by: bbbugg <80089841+bbbugg@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bbbugg <80089841+bbbugg@users.noreply.github.com>
|
2025-08-28 16:56:04 +08:00 |
|
Copilot
|
bb6c629aef
|
Implement base64 fallback for image handling when no uploader is configured (#1)
* Initial plan
* Implement base64 fallback for image handling when no uploader configured
Co-authored-by: bbbugg <80089841+bbbugg@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bbbugg <80089841+bbbugg@users.noreply.github.com>
|
2025-08-28 16:56:04 +08:00 |
|
snaily
|
4af17ce55d
|
chore: 更新版本号至2.2.5
v2.2.5
|
2025-08-18 17:27:42 +08:00 |
|
snaily
|
2001bfdcd9
|
fix(api): 统一错误日志时间戳并传递 request_datetime
- 统一 add_error_log 的 request_time:优先使用 request_datetime,
否则使用 datetime.now(),去除 timezone.utc,避免与请求日志时区不一致
- 在 Gemini/OpenAI/Vertex/Embedding 等服务的异常处理处补充传入
request_datetime,使错误日志与请求日志可一一对应
- stats: 移除失败记录的错误日志时间窗匹配与 error_log_id 附带,降低查询开销
与误关联风险;建议通过统一时间戳(key + request_time)或独立错误日志
查询接口完成关联
- 调整部分导入顺序与长行换行等代码风格,无功能改动
BREAKING CHANGE: 统计详情接口不再返回 error_log_id 字段。需要关联错误日志的
客户端请改为基于 key 与 request_time 在错误日志接口中检索。
|
2025-08-18 17:26:53 +08:00 |
|
snaily
|
669123f348
|
feat(ui): 支持值得注意的Key多选、全选与批量操作
为“值得注意的Key”列表新增可见复选框和全选开关,提供
批量验证/复制/删除操作,并优化选择逻辑与样式。
- attentionKeysList 每行新增可见复选框并设置 data-key
- 新增“全选”和批量操作栏,实时显示已选数量
- getSelectedKeys/updateBatchActions/toggleSelectAll
适配 attention 根节点,且仅作用于可见项
- initializeKeySelectionListeners 增加 attention 事件绑定
- fetchAndRenderAttentionKeys 阻止按钮冒泡、绑定复选框变更,
在加载成功/失败后刷新批量栏状态
- attention 列表不与 valid/invalid 主列表同步勾选,避免交叉影响
- CSS 仅隐藏有效/无效列表复选框,新增 attention 列表
hover/选中态样式
- 增强空值判断,避免批量栏或全选元素缺失时报错
|
2025-08-18 16:31:48 +08:00 |
|
ConstasJ
|
d06e418a61
|
docs: 修改README.md,添加关于端点的说明
|
2025-08-18 15:42:46 +08:00 |
|
snaily
|
fa6745454e
|
chore: 更新版本号至2.2.4
v2.2.4
|
2025-08-18 09:11:49 +08:00 |
|
snaily
|
1aa3d267bb
|
feat(api,ui): 新增24h错误码最高Key统计与面板
- 新增 GET /api/stats/attention-keys 接口,统计最近24小时指定
状态码(默认429)错误次数最多的 Key,仅统计内存中的 Key,
支持 limit 与 status_code 参数
- StatsService 新增 get_attention_keys_last_24h,按 api_key 分组计数并
降序返回
- UI 新增“值得注意的Key”卡片:支持 429/403/400 快捷切换、自定义状态码
与数量限制,默认展示 429 前 10
- 列表项支持验证、查看 24h 详情、复制、删除等快捷操作
- 将 Chart.js 与页面脚本改为 defer,保证 DOM 就绪与执行顺序
- 修复:补充获取数量输入框引用,避免初始化未声明变量报错
- 其他:微调日志输出格式
|
2025-08-18 06:28:48 +08:00 |
|
snaily
|
e9601ca76c
|
feat(api,ui): 新增按Key调用详情与错误日志查找并联动前端
引入按密钥维度的请求详情及错误日志关联,新增错误日志精确
查找接口,并扩展统计时间维度,提升故障定位与可观测性。
- 新增 /api/logs/errors/lookup 接口:支持按 gemini_key / timestamp /
status_code 与时间窗口查找最接近的错误日志;ErrorLogDetailResponse
增加 error_code 字段
- Stats 接口增强:get_api_call_details 返回 status_code、latency_ms,
并在失败时尝试匹配 error_log_id;新增 /api/stats/key-details 获取指
定密钥调用详情;新增 8h 时间段
- DB 层:add_error_log 支持传入 request_datetime(默认使用 UTC);新增
find_error_log_by_info 封装按 key/时间窗口/状态码的查询
- 前端 keys_status:趋势图支持 8 小时区间;调用详情表新增状态码/耗时与
失败详情按钮;可按 key 查看期内调用详情并查看匹配错误日志;优化统计
摘要展示与模态层级(z-index)
- OpenAIChatService:错误记录携带请求时间;改进日志与健壮性处理
|
2025-08-18 05:19:29 +08:00 |
|
snaily
|
01312317a1
|
feat(ui): 添加 API 调用趋势图及时间区间切换
- 在 keys_status 页面引入 Chart.js(CDN),新增“调用趋势图”卡片
- 支持 1分钟/1小时/24小时切换,默认展示 1小时
- 前端从 /api/stats/details?period= 拉取数据,按时间桶聚合成功/失败并绘制
- 调整样式与布局:图表卡片跨列显示,固定容器高度并适配小屏
- 便于可视化监控调用成功/失败趋势,辅助排障与容量评估
|
2025-08-18 03:50:52 +08:00 |
|
snaily
|
7827283d0a
|
fix(ui): 移除 keys_status 自动刷新开关及相关逻辑
移除 keys_status 页面的自动刷新开关与定时器逻辑,删除模板中的
开关控件,并移除 initializeAutoRefreshControls 函数及其调用。周
期性刷新会重置分页和搜索状态,影响使用体验;保留手动刷新按钮以
在需要时更新数据。
|
2025-08-18 03:19:59 +08:00 |
|
snaily
|
96c4b4fa50
|
fix: 移除API密钥分页按钮的onclick事件
|
2025-08-18 00:55:51 +08:00 |
|
snaily
|
892392742d
|
chore: 更新版本号至2.2.3
v2.2.3
|
2025-08-16 17:45:52 +08:00 |
|
snaily
|
380e6426ed
|
- 添加API密钥分页显示功能,每页显示20个密钥
- 实现分页控件和搜索功能的集成
- 优化API密钥的数据处理逻辑,从DOM操作改为数组操作
- 修改登录成功后重定向路径从/config改为/keys
- 重构routes.py的import语句,按字母顺序排列
- 改进代码格式和缩进风格
|
2025-08-16 17:42:16 +08:00 |
|
snaily
|
d2906d89a6
|
style(router): 优化错误日志路由代码格式
- 移除多余的空白行
- 简化删除所有错误日志的日志记录逻辑
- 统一代码缩进和空行格式
|
2025-08-16 03:43:36 +08:00 |
|
snaily
|
13e1db7d69
|
style(database,static): 优化代码格式并本地化静态资源
- 重新组织 database/services.py 的导入语句,按照标准顺序排列
- 统一代码格式,包括函数参数对齐和尾随逗号
- 优化 delete_all_error_logs 函数,移除不必要的计数查询以提高性能
- 添加本地字体文件 fonts.css,包含 Inter 字体的多种字重和语言支持
- 本地化 Tailwind CSS 脚本,减少外部依赖
- 更新 base.html 模板以使用本地静态资源
|
2025-08-16 03:41:42 +08:00 |
|
snaily
|
40c9689eae
|
Merge pull request #249 from sanjusss:fix_248
fix #248
|
2025-08-16 03:08:16 +08:00 |
|
snaily
|
548dcccf2f
|
Merge pull request #286 from 4Crusaders:fix/gemini-structured-output-tools-conflict
fix: 修复Gemini模型不支持同时使用tools和结构化输出的问题
|
2025-08-16 01:13:18 +08:00 |
|