erio
|
7347916f09
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 23:05:04 +08:00 |
|
erio
|
08593ea3e4
|
fix(billing): 按次计费回退到默认 PerRequestPrice
ResolvedPricing 新增 DefaultPerRequestPrice,当无层级匹配时使用渠道的默认按次价格
|
2026-03-30 23:04:48 +08:00 |
|
erio
|
9876c05efc
|
merge: feature/channel → release (v0.1.105.15) — 计费迁移到 CalculateCostUnified
|
2026-03-30 22:59:15 +08:00 |
|
erio
|
f0d5163973
|
feat(billing): 网关计费迁移到 CalculateCostUnified + 模型限制错误统一
- GatewayService/OpenAIGatewayService 注入 ModelPricingResolver
- RecordUsage 从旧路径迁移到 CalculateCostUnified(支持 per_request/image 模式)
- 无渠道时自动回退旧路径,保持原有行为
- 长上下文双倍计费仅在无渠道定价时生效
- CostBreakdown 新增 BillingMode 字段,使用日志记录实际计费模式
- 模型限制错误改为与"无可用账号"相同的 503 响应
|
2026-03-30 22:58:28 +08:00 |
|
erio
|
54976c77ce
|
merge: feature/channel → release (v0.1.105.14) — 使用记录计费模式
|
2026-03-30 22:14:24 +08:00 |
|
erio
|
9e848ec2f0
|
feat(usage): 使用记录增加计费模式字段 — 记录/展示/筛选 token/按次/图片
- DB: usage_logs 表新增 billing_mode VARCHAR(20) 列
- 后端: RecordUsage 写入时根据 image_count 判定计费模式
- 前端: 使用记录表格新增计费模式 badge 列 + 筛选下拉
|
2026-03-30 22:13:16 +08:00 |
|
erio
|
a0d15fe784
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 21:47:21 +08:00 |
|
erio
|
bef6728ada
|
fix(channel): splice替换model_pricing条目 + 增强调试日志
|
2026-03-30 21:47:06 +08:00 |
|
erio
|
465ec9a9f3
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 21:37:57 +08:00 |
|
erio
|
79c3f4481a
|
debug(channel): 添加 formToAPI 调试日志 + 移除 Sora 平台
|
2026-03-30 21:37:27 +08:00 |
|
erio
|
b42b2a7491
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 21:06:55 +08:00 |
|
erio
|
47d52a971e
|
feat(channel): 平台配置改为勾选式,勾选后出现 Tab 但不自动跳转
|
2026-03-30 21:06:38 +08:00 |
|
erio
|
4e966d2331
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 19:06:28 +08:00 |
|
erio
|
6f6365e2c0
|
feat(channel): 对话框 Tab 布局 — 基础设置 + 平台独立 Tab + 固定高度
|
2026-03-30 19:06:03 +08:00 |
|
erio
|
a77eb1dc21
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 17:51:18 +08:00 |
|
erio
|
ed4a4f95f6
|
fix(channel): 分组加载时序修复 — 预加载 + await 确保分组数据就绪
|
2026-03-30 17:50:48 +08:00 |
|
erio
|
467bba161c
|
merge: feature/channel → release/custom-0.1.105 (v0.1.105.8)
|
2026-03-30 17:27:12 +08:00 |
|
erio
|
2f9f7de19d
|
fix(i18n): 渠道管理页面标题国际化
|
2026-03-30 17:26:16 +08:00 |
|
erio
|
4db51115cd
|
chore: bump version to 0.1.105.7
|
2026-03-30 16:13:53 +08:00 |
|
erio
|
2f1168a126
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
# Conflicts:
# backend/cmd/server/wire_gen.go
|
2026-03-30 16:13:52 +08:00 |
|
erio
|
c74c6f3f1f
|
feat(channel): 模型价格自动填充 + 默认定价 API
- 新增 GET /admin/channels/model-pricing?model=xxx API
- 从 BillingService 查询 LiteLLM/Fallback 默认定价
- 前端添加模型时自动查询并填充价格($/MTok)
- 仅在所有价格字段为空时才自动填充,不覆盖手动配置
|
2026-03-30 16:11:49 +08:00 |
|
erio
|
f954e3875e
|
chore: bump version to 0.1.105.6
|
2026-03-30 15:04:58 +08:00 |
|
erio
|
b80361e57a
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 15:04:48 +08:00 |
|
erio
|
c67e5a9cd9
|
feat(channel): 缓存扁平化 + 网关映射集成 + 计费模式统一 + 模型限制
- 缓存按 (groupID, platform, model) 三维 key 扁平化,避免跨平台同名模型冲突
- buildCache 批量查询 group platform,按平台过滤展开定价和映射
- model_mapping 改为嵌套格式 {platform: {src: dst}}
- channel_model_pricing 新增 platform 列
- 前端按平台维度重构:每个平台独立配置分组/映射/定价
- 迁移 086: platform 列 + model_mapping 嵌套格式迁移
|
2026-03-30 15:04:30 +08:00 |
|
erio
|
a6b62e7508
|
chore: bump version to 0.1.105.7
|
2026-03-30 13:40:59 +08:00 |
|
erio
|
0924ef3c36
|
Merge branch 'feature/channel' into release/custom-0.1.105
|
2026-03-30 13:40:52 +08:00 |
|
erio
|
204da5c455
|
fix(channel): 分组紧凑布局+平台颜色名称+计费基准重命名+表单排序调整
|
2026-03-30 13:40:29 +08:00 |
|
erio
|
bc03778679
|
fix: revert ent schema change to fix runtime panic
|
2026-03-30 13:31:47 +08:00 |
|
erio
|
6b68152540
|
Merge branch 'feature/channel' into release/custom-0.1.105
# Conflicts:
# backend/cmd/server/VERSION
# backend/internal/handler/admin/channel_handler.go
# backend/internal/service/channel.go
|
2026-03-30 13:27:26 +08:00 |
|
erio
|
19d1a28e23
|
feat(channel): 缓存扁平化 + 网关映射集成 + 计费模式统一 + 模型限制
- 缓存重构为 O(1) 哈希结构 (pricingByGroupModel, mappingByGroupModel)
- 渠道模型映射接入网关流程 (Forward 前应用, a→b→c 映射链)
- 新增 billing_model_source 配置 (请求模型/最终模型计费)
- usage_logs 新增 channel_id, model_mapping_chain, billing_tier 字段
- 每种计费模式统一支持默认价格 + 区间定价
- 渠道模型限制开关 (restrict_models)
- 分组按平台分类展示 + 彩色图标
- 必填字段红色星号 + 模型映射 UI
- 去除模型通配符支持
|
2026-03-30 13:26:05 +08:00 |
|
erio
|
00b48ab436
|
chore: bump version to 0.1.105.5
|
2026-03-30 02:38:18 +08:00 |
|
erio
|
151ea48b87
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
# Conflicts:
# backend/internal/handler/admin/channel_handler.go
|
2026-03-30 02:38:18 +08:00 |
|
erio
|
e2f0df78ce
|
feat(channel): 模型映射 + 分组搜索 + 卡片折叠 + 冲突校验
- 渠道模型映射:新增 model_mapping JSONB 字段,在账号映射之前执行
- 分组选择:添加搜索过滤 + 平台图标
- 定价卡片:支持折叠/展开,已有数据默认折叠
- 模型冲突校验:前后端均禁止同一渠道内重复模型
- 迁移 083: channels 表添加 model_mapping 列
|
2026-03-30 02:36:04 +08:00 |
|
erio
|
6fa385255d
|
chore: bump version to 0.1.105.4
|
2026-03-30 02:25:23 +08:00 |
|
erio
|
755bf44e4d
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
|
2026-03-30 02:25:12 +08:00 |
|
erio
|
e4814e4c77
|
feat(channel): 模型标签输入 + $/MTok 价格单位 + 左开右闭区间 + i18n
- 模型输入改为标签列表(输入回车添加,支持粘贴批量导入)
- 价格显示单位改为 $/MTok(每百万 token),提交时自动转换
- Token 模式增加图片输出价格字段(适配 Gemini 图片模型按 token 计费)
- 区间边界改为左开右闭 (min, max],右边界包含
- 默认价格作为未命中区间时的回退价格
- 添加完整中英文 i18n 翻译
|
2026-03-30 02:24:54 +08:00 |
|
erio
|
e87ed88090
|
chore: bump version to 0.1.105.3
|
2026-03-30 02:14:30 +08:00 |
|
erio
|
4b48dd02be
|
fix: CI lint/test fixes — gofmt, errcheck, handler test args
|
2026-03-30 02:14:30 +08:00 |
|
erio
|
3fd0361542
|
chore: bump version to 0.1.105.2
|
2026-03-30 02:06:07 +08:00 |
|
erio
|
9e9285c25a
|
Merge remote-tracking branch 'origin/feature/channel' into release/custom-0.1.105
# Conflicts:
# backend/cmd/server/wire_gen.go
# backend/internal/handler/handler.go
# backend/internal/handler/wire.go
|
2026-03-30 02:05:59 +08:00 |
|
erio
|
a9117600a5
|
feat(channel): 渠道管理系统 — 多模式定价 + 统一计费解析
新增渠道管理功能,支持三种计费模式(Token 区间/按次/图片),
统一定价解析链(Channel → LiteLLM → Fallback),
无渠道配置时保持原有计费逻辑不变。
Backend:
- 新增 channels/channel_groups/channel_model_pricing/channel_pricing_intervals 表
- ChannelService: atomic.Value + singleflight 缓存,通配符模型匹配
- ModelPricingResolver: 统一定价解析器
- BillingService: CalculateCostUnified 统一计费入口
- 完整输入验证(BillingMode/价格非负/名称长度)
- 33 个单元测试覆盖核心路径
Frontend:
- ChannelsView.vue: 渠道 CRUD 列表页
- PricingEntryCard.vue + IntervalRow.vue: 定价编辑组件
- 支持三种计费模式切换 + 区间编辑
|
2026-03-30 02:03:06 +08:00 |
|
erio
|
0393981397
|
merge: integrate upstream v0.1.105 into release/custom-0.1.105
Merge upstream v0.1.105 (94 commits) with our customizations from
release/custom-0.1.104. Key upstream additions:
- TLS fingerprint profile management
- OpenAI→Anthropic endpoint compatibility routing
- Privacy mode for OpenAI/Antigravity accounts
- Requested model tracking in usage logs
- Error observability enhancements
- Various bug fixes
Conflict resolutions (all "keep both sides"):
- handler.go/wire.go: added both TLSFingerprintProfile and GDriveOAuth
- wire_gen.go: combined internal500CounterCache with TLS fingerprint objects
- accounts.ts: kept setPrivacy + affinity functions
- BulkEditAccountModal.vue: kept OpenAI WS mode + Allow Overages sections
Additional fixes:
- gateway_handler_chat_completions.go, gateway_handler_responses.go:
added missing sub2apiUserID parameter to SelectAccountWithLoadAwareness
- antigravity_internal500_penalty.go: gofmt fix
|
2026-03-27 18:23:39 +08:00 |
|
Wesley Liddick
|
9398ea7af5
|
Merge pull request #1340 from DaydreamCoding/fix/privacy-and-system-prompt
fix(openai): OpenAI 隐私模式全场景覆盖 & 修复转发路径 system prompt 丢失
|
2026-03-27 15:03:57 +08:00 |
|
Wesley Liddick
|
29dce1a59c
|
Merge pull request #1266 from eltociear/add-ja-doc
docs: add Japanese README
|
2026-03-27 14:51:37 +08:00 |
|
 QTomandClaude Opus 4.6
|
c729ee425f
|
fix(gateway): 修复 OpenAI→Anthropic 转换路径 system prompt 被静默丢弃的 bug
injectClaudeCodePrompt 和 systemIncludesClaudeCodePrompt 的 type switch
无法匹配 json.RawMessage 类型(Go typed nil 陷阱),导致 ForwardAsResponses
和 ForwardAsChatCompletions 路径中用户 system prompt 被替换为仅 Claude Code
banner。新增 normalizeSystemParam 将 json.RawMessage 转为标准 Go 类型。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-03-27 14:51:36 +08:00 |
|
 QTomandClaude Opus 4.6
|
c489f23810
|
feat(privacy): 创建/批量创建 OpenAI OAuth 账号时异步设置隐私模式
参照 Antigravity 的模式,单个创建时同步调用 ForceOpenAIPrivacy,
批量创建时收集 OpenAI OAuth 账号后异步 goroutine 设置,避免阻塞请求。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-03-27 14:51:36 +08:00 |
|
 QTomandClaude Opus 4.6
|
47a544230a
|
fix(privacy): 刷新令牌失败时也尝试设置 OpenAI 隐私模式
刷新失败不代表 access_token 无效,在后台定时刷新(不可重试错误 +
重试耗尽)和前端批量/单次刷新的失败路径中,均利用可能仍有效的
access_token 调用隐私设置。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-03-27 14:51:36 +08:00 |
|
 QTomandClaude Opus 4.6
|
c13c81f09d
|
feat(privacy): 为 OpenAI OAuth 账号添加前端手动设置隐私按钮
复用已有的 set-privacy API 端点,Handler 通过 platform 分发到
ForceOpenAIPrivacy / ForceAntigravityPrivacy,前端 AccountActionMenu
扩展隐私按钮支持 OpenAI OAuth 账号。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-03-27 14:51:36 +08:00 |
|
Wesley Liddick
|
20544a4447
|
Merge pull request #1300 from xilu0/fix/forward-failed-log-missing-account-proxy-info
fix: add account and proxy details to forward_failed log
|
2026-03-27 14:47:51 +08:00 |
|
Wesley Liddick
|
b688ebeefa
|
Merge pull request #1215 from weak-fox/fix/privacy-retry-failed-mode
fix: 允许 OpenAI privacy_mode修改失败后能在 token 刷新时重试
|
2026-03-27 14:46:38 +08:00 |
|