feeeei
83d4eb6a43
模型广场:增加渠道分时段计价展示
...
- 阶梯表查询附带分时倍率时段:时段取自计费解析到的渠道定价,
每个时段的倍率由计费的 resolvedChannelTimeMultiplier 在时段内取值,
分组价卡覆盖或配置非法时自然不出现;倍率为 1 的时段不列
- 广场模型条目新增 time_pricing(时区 + 时段 + 倍率)
- 前端把分时时段展开为独立行:模型名旁标注时段,价格按时段倍率折算,
倍率列显示生效倍率;时区与计算口径放在提示中
2026-08-24 10:50:52 +08:00
feeeei
377d1230fc
模型广场:按计费阶梯单价表展示长上下文档位
...
- 新建 ModelPlazaService(持计费服务与定价解析器)承接广场聚合,
token 模型的单价与档位全部取自 ResolveContextPricingSchedule,
渠道选择与计费同源;图片/按次模型沿用原档位合成
- 官方参考价改走计费目录(LiteLLM → 内置兜底 → 模型策略),带官方阶梯
- DTO 增加 long_context_pricing_enabled / long_context_basis /
official_pricing.intervals
- 前端实付与官方三列按档分行(标签只在首列,其余列按行对齐),
缓存列按档展示写/读价,边际计价以徽章与 tooltip 标注,
分组关闭阶梯时在头部说明
2026-08-24 10:50:52 +08:00
feeeei
6466978d2f
计费:统一 token 计费路径选择并提供上下文阶梯单价表查询
...
- BillingService.CalculateTokenCostForRequest 承接网关的路径选择
(分组/渠道定价 → 平台旧长上下文规则 → 内置目录),网关改为调用该入口
- Gemini /v1beta 的 200K 边际翻倍常量从 handler 移入
BillingService.LegacyLongContextRule,入口只声明适用
- 新增 ResolveContextPricingSchedule:沿用 Resolve 解析链收集断点
(渠道区间边界、目录阶梯阈值、旧规则阈值),每档单价由真实计费函数
探针差商得出,倍率/策略变更无需同步;附阶梯表 vs 计费函数的对账测试
2026-08-24 10:50:52 +08:00
Wesley Liddick
3e45d4e030
Merge pull request #6089 from lyen1688/feat/channel-time-pricing-weekdays
...
新增渠道时间段定价工作日生效规则
2026-08-24 10:21:47 +08:00
shaw
684d9efb1f
fix: harden plugin runtime and UI bridge
2026-08-24 09:50:46 +08:00
shaw
40ea3aebad
feat: add OAuth outbound transport plugin system
2026-08-24 09:03:37 +08:00
lyen1688
77e0409f7c
新增渠道时间段定价工作日规则
2026-08-23 00:30:27 +08:00
Wesley Liddick
d45135d87d
Merge pull request #6068 from okbexx/fix/codex-guardian-parent-affinity
...
fix(openai): keep auto-review on parent account
2026-08-22 13:41:42 +08:00
Wesley Liddick
844b118785
Merge pull request #5938 from Hakunm/fix/google-one-model-catalog
...
fix(gemini): 限制 Google One OAuth 模型目录 / constrain Google One model catalog
2026-08-22 13:34:05 +08:00
Jarl
fa4587041c
fix(openai): keep auto-review on parent account
2026-08-22 12:14:19 +08:00
wucm667
68653fb2cc
fix: allow messages dispatch for composite groups
2026-08-21 18:01:16 +08:00
IanShaw
1429e8f714
修复 PR 5888 剩余审计问题
2026-08-20 22:01:20 -07:00
IanShaw
b2b2adcf8d
修复 PR 5888 审查发现的兼容性与竞态问题
2026-08-20 21:06:48 -07:00
IanShaw
16b15e870d
修复 5888 与 5925 的同号重试语义冲突
2026-08-20 18:16:38 -07:00
IanShaw027
7c53a842e4
合并上游 main,保留 5925 的 Grok 重试上限与 5888 的协议兼容修复
...
同账号重试采用次数上限加 deadline;畸形 tools 在出站前删除;compaction 422 与结构化错误扫描一并保留。
2026-08-21 08:49:44 +08:00
Hakunm
f98a056f75
fix(gemini): constrain Google One model catalog
2026-08-21 02:33:00 +08:00
IanShaw
1bff06ea50
修复 Grok Realtime 关闭检查与 rollup 时区断言
...
golangci 要求检查 Realtime 上游 Close 返回值,并删除已无调用的 heavy-model 冷却函数。分组日汇总集成测试在 UTC 晚上跨上海零点时会把水位写成 UTC 日期,将会话时区钉到 Asia/Shanghai。
2026-08-20 09:50:23 -07:00
IanShaw
d78e366db5
补齐 Grok Realtime 握手失败账号冷却
2026-08-20 07:31:19 -07:00
IanShaw
c628b3eea7
让 Grok stream idle 重试上限作用于主路径
2026-08-20 07:07:55 -07:00
IanShaw
2ab24a1e77
修正 Grok 429 边界与 stream idle 重试上限
2026-08-20 06:43:31 -07:00
IanShaw
e62ec2c42f
Revert "feat(429): add configurable cooldown and retry strategies"
...
This reverts commit 6c3edc0956 .
2026-08-20 05:44:21 -07:00
IanShaw
6c3edc0956
feat(429): add configurable cooldown and retry strategies
2026-08-20 05:43:43 -07:00
IanShaw
3243983b72
完善 Grok Realtime 与默认映射测试
2026-08-20 04:26:24 -07:00
IanShaw
61c2f5ad28
复用 Grok Realtime 预握手连接
2026-08-20 02:38:51 -07:00
IanShaw
611a7c8ed3
修复 Grok Realtime 预接入切号
2026-08-20 02:32:51 -07:00
IanShaw
ad26172b83
完善 Grok 限流冷却与用量兼容
2026-08-20 02:32:43 -07:00
IanShaw027
787f875dd6
修复 Grok 孤儿控件、thinking 断言与流式 failover 的 CI 回归
...
畸形 tools 继续剥离孤儿 tool_choice;bare error 在临时上游失败时保持可换号;已转发的官方失败帧不再重复写入。
2026-08-20 16:21:29 +08:00
IanShaw
5ade094318
优化 Grok 传输超时与 Realtime 握手
2026-08-20 01:02:49 -07:00
IanShaw
953028718d
修复 Grok 错误分类与容量重试
2026-08-20 01:02:40 -07:00
IanShaw
48615d5d1f
Merge remote-tracking branch 'upstream/main' into fix/openai-responses-compatibility
...
# Conflicts:
# backend/internal/handler/ops_error_logger.go
2026-08-20 00:31:12 -07:00
IanShaw
ccb20ace88
修复 OpenAI 兼容性 PR 的 CI 回归
2026-08-20 00:19:59 -07:00
IanShaw
d1c6456d08
合并上游最新主分支兼容修复
2026-08-19 23:15:50 -07:00
IanShaw
c374ff2951
完善 OpenAI 网关切换与运维错误语义
2026-08-19 23:13:40 -07:00
wucm667
6b0ec50f24
fix(ops): exclude model configuration errors from SLA
...
404 model_not_found remains unchanged while ops attribution becomes routing/business-limited.
2026-08-20 10:52:29 +08:00
IanShaw
cf3577a3c5
fix(openai): harden Responses compatibility
2026-08-19 09:03:37 -07:00
IanShaw
fce90ecf89
渠道定价:持久化服务层级与区间倍率
2026-08-19 06:35:11 -07:00
Vincent Cui and Kinso
82cbe6aff7
fix(openai): resume later websocket turns after 429
...
Port the safe current-turn replay from #4622 onto current main.
Co-authored-by: Kinso <kinsolee@users.noreply.github.com >
2026-08-19 18:51:21 +08:00
shaw
499a8ee423
fix(composite): exempt resolved grok/CN targets from messages dispatch gate
...
sanitizeGroupMessagesDispatchFields forces AllowMessagesDispatch=false for
every non-openai platform including composite, and the gate checked only the
group platform — so composite requests resolved to grok/CN targets were
rejected 403 on /v1/messages and /v1/messages/count_tokens before reaching
the composite target whitelist, leaving the CN rollout unusable for
Claude-protocol clients.
- allowOpenAICompatibleMessagesDispatch: composite groups resolved to a
grok/CN target get the same exemption as the standalone platforms;
openai-resolved and unresolved targets keep requiring the switch
- resolveOpenAIMessagesDispatchMappedModel: skip the group-level dispatch
model mapping (openai-specific gpt defaults) for composite grok/CN
targets — model rewriting stays with account-level model_mapping
2026-08-19 15:24:26 +08:00
shaw
aa673062e2
fix(composite): keep CN rollout on fully supported paths
...
- Responses WebSocket composite whitelist stays openai+grok: CN accounts
cannot pass the WSv2 ingress transport filter and the WS HTTP bridge
has no Responses conversion for them, so admitting CN targets only
turns a clear policy rejection into a misleading no-available-account
- widen the responses/input_tokens and messages/count_tokens composite
gates to the shared openai-compatible text whitelist so CN targets get
the same local-estimate token counting as generation
- restore the Claude default-model fallback for standalone CN groups
(admin candidates and custom models list) while keeping composite
listings limited to CN account mapping keys
- refresh the scheduler bulk-rebuild comment and bucket capacity hints
for the 8-platform canonical set
2026-08-19 14:58:32 +08:00
shaw
bd1ccd9736
Merge remote-tracking branch 'origin/main' into fix/issue-5796-composite-new-platforms
2026-08-19 14:47:34 +08:00
Wesley Liddick
7d9c958482
Merge pull request #5810 from Pluviobyte/codex/fix-responses-input-tokens
...
fix(codex): handle Responses input token preflight
2026-08-19 14:43:33 +08:00
wucm667
b171bb0e4a
fix(composite): support CN providers
...
Extend composite routing, pricing, migrations, and admin options for Kimi, GLM, and DeepSeek.
2026-08-19 13:01:25 +08:00
Kingsley
58e147fba6
feat(composite): support Codex endpoints
2026-08-19 04:40:32 +00:00
Rain
bfac49fef9
fix(codex): handle responses input token preflight
2026-08-19 11:34:18 +08:00
Wesley Liddick
c6f4fbde49
Merge pull request #5676 from Perfecto23/agent/openai-capacity-failover
...
fix(openai): recover message-only capacity failures before output
2026-08-19 11:11:23 +08:00
Wesley Liddick
359fd12b2e
Merge pull request #5749 from Randark-JMT/chore/remove-sora-leftovers
...
chore: remove leftover Sora references after platform removal
2026-08-19 09:41:25 +08:00
Wesley Liddick
e0c48a19ed
Merge pull request #5761 from Randark-JMT/feat/channel-monitor-quota-mode
...
feat(monitor): 渠道监控配额模式——关联账号展示用量/余额(重启 #5387)
2026-08-18 17:36:27 +08:00
shaw
8f6f459835
fix(channels): support kimi/zhipu/deepseek platforms in channel pricing
...
- ChannelsView platformOrder now includes the three CN provider
platforms so channel pricing can be configured for them; composite
group expansion/attachment stays limited to the five main platforms
(matches backend isConcreteRequestPlatform and composite-routes
target_platform validation)
- SyncPricingModels maps kimi->moonshot, zhipu->zhipu,
deepseek->deepseek; also fixes gemini mapping to "google" which
matched zero catalog entries (provider key is "gemini")
- Add CN platform colors to channel pricing model tag classes
2026-08-18 17:12:01 +08:00
Randark
41344c20ff
feat(monitor): wire quota fetcher & expose check_mode in handlers
...
- handler DTO: create/update 接收 check_mode/account_id,provider oneof 扩至 8 家,
endpoint/api_key 改为 omitempty(条件必填下沉 service 校验);
monitor/checkResult/historyItem 响应透传 check_mode/account_id/quota
- 用户端 latest_quota 由 channel_monitor_show_quota 控制,关闭时服务端剥离
- wire: NewChannelMonitorQuotaFetcher 以具体服务类型收参(窄接口包内保留供
stub),ProvideChannelMonitorRunner 注入后 SetQuotaFetcher
2026-08-18 04:14:15 +00:00
Randark
6a6fd304f6
feat(settings): channel_monitor_show_quota public setting (default off)
...
- 新增公开设置 key(迁移 226 已插入默认 false),控制用户端监控页
是否展示配额/余额;管理端不受影响
- 解析 fail-closed:仅字面 "true" 视为开启(对齐 available_channels_enabled
语义,而非 hide_throughput 的 fail-open)
- 全链路贯通:domain key 常量 → setting_public(公开读取 + ChannelMonitorRuntime
.ShowQuota + 注入 payload)→ settings_view/parse/update → handler DTO
(admin/user 响应 + admin 更新请求)→ api_contract_test 两个 wantJSON 块
2026-08-18 04:06:18 +00:00