AAEE86
|
309f507ef4
|
fix(pool): 配额倒计时归零后进度条与列表恢复显示 100%
- 后端读取层 provider_key_status_snapshot_payload 复用调度侧同一判定
provider_pool_reset_deadline_elapsed,对已到期的 Codex 配额窗口归一化为
used_ratio=0 / remaining_ratio=1,并清除窗口级耗尽标记;跳过
window_minutes=0 与无用量观测的窗口
- 前端展示层在倒计时归零(isExpired)时兜底显示 100%,并隐藏重置前的旧用量
文本,保证归零瞬间即时恢复,与后端读取口径、调度口径一致
- 补充后端 2 个单测(到期归一化、遗留耗尽状态清理)与前端 1 个回归用例
(负向验证可复现旧行为)
验证:aether-provider-pool 71/71;aether-gateway lib 回归通过(仅 3 个依赖
PostgreSQL 服务端的用例因本机环境缺失失败,与本改动无关);前端 222 文件 /
1718 用例全部通过;clippy -D warnings、cargo fmt、vue-tsc、eslint 均通过。
|
2026-09-29 16:52:26 +08:00 |
|
ZheFox
|
31d5e2d172
|
fix(codex): restore recovered quota status and stabilize lifecycle tests
|
2026-09-24 10:33:45 +08:00 |
|
ZheFox
|
1a4eba1005
|
feat(codex): add optional minimum quota reserve for pool scheduling
|
2026-09-23 14:44:29 +08:00 |
|
ZheFox
|
45c840b8d3
|
fix(providers): refresh Antigravity grouped quotas
|
2026-09-03 10:46:44 +08:00 |
|
zhefox
|
b1bf7837cf
|
style: format quota and response changes
|
2026-09-02 15:40:40 +08:00 |
|
zhefox
|
77229943d1
|
fix(pool): preserve generic quota windows for model scheduling
|
2026-09-02 15:29:56 +08:00 |
|
zhefox
|
dbbe7b22ab
|
fix(pool): isolate dynamic model quota buckets and 429 scheduling
|
2026-09-02 15:23:23 +08:00 |
|
AAEE86
|
71b54070e8
|
feat(gateway): Codex/OpenAI Responses WebSocket 代理模式
在 /v1/responses 上支持 WebSocket 升级,把客户端帧中继到上游 Codex /
OpenAI Responses WebSocket 端点,同时保持既有的路由、鉴权、配额与用量
语义:
- 路由与准入:control/route/ai.rs 识别 WebSocket 升级请求;
websocket/ingress.rs 复用 API Key 鉴权、IP 规则与并发许可,并引入
独立的 WebSocket 连接许可
- 中继:websocket/responses/* 按 connection / session / turn 分层,
帧解析归一化、socket 写入有界、continuation 保持调度亲和性
- 配额:orchestration/codex_quota_breaker.rs 在账号配额耗尽时熔断并
自动恢复,不再直接断开客户端连接
- 用量:每个 turn 的终态用量落库,request_metadata 记录
websocket_mode / websocket_transport,管理端与 usage 视图暴露
is_websocket
- 管理端:provider 可配置 Responses WebSocket 开关
|
2026-08-17 14:50:33 +08:00 |
|
elky
|
8616fe6ee2
|
refactor(workspace): enforce layered crate boundaries
|
2026-07-15 23:47:19 +08:00 |
|