fengsilin
84d364d76a
feat: 使用日志计费详情展开与 completion_tokens 修复
前端新增 UsageLogExpandedDetail 点击展开面板和 BillingDetailSummary
hover 计费详情,后端修复 per_1m_tokens 任务结算日志的 completion_tokens
从零值改为写入 total_tokens 实际值。新增 taskBillingLogMerge 合并
任务预扣/结算日志。
Co-Authored-By: Claude <noreply@anthropic.com>
před 2 týdny
fengsilin
2e40bab478
feat: 模型定价矩阵价格取中位数展示
前端模型定价配置 UI 增强(Editor/GeneratorModal/PreviewPanel/PricingGrid),
后端新增 representativeMatrixPrice 取矩阵定价表中位数作为展示价格,
替代原来的 model_price=0 导致的价格展示为空问题。
Co-Authored-By: Claude <noreply@anthropic.com>
před 2 týdny
fengsilin
ec7c76f221
merge: feat/video-pricing-table-codex into master
- feat: video multidimensional matrix pricing system
- feat: doubao aiping video channel support
- feat: relay capture JSON storage with header redaction
- feat: SSE stream error handling (Gemini/OpenAI/Responses)
- test: E2E test infrastructure (Playwright + Chromium)
Co-Authored-By: Claude <noreply@anthropic.com>
před 2 týdny
fengsilin
0e3b98efe0
chore: commit relay SSE error handling fixes and E2E mock server
- relay: SSE stream error exposure improvements (Claude/Gemini/OpenAI)
- test: add mock capture server for E2E relay capture testing
Co-Authored-By: Claude <noreply@anthropic.com>
před 2 týdny
fengsilin
139b6a6075
feat: store relay capture records as json
před 2 týdny
fengsilin
65551e8003
refactor: prepare relay capture json helpers
před 2 týdny
fengsilin
19d55dc255
docs: design relay capture json storage
před 2 týdny
fengsilin
1d01c4cd64
feat: 增强流式响应错误处理,SSE内嵌错误正确曝光为API错误
- Gemini stream: 捕获 promptFeedback.blockReason 后停止流并返回 OpenAPI 错误
- OpenAI stream: 检测 SSE 帧中的 error 响应,在首帧写入前转换为 API 错误
- Responses stream: 处理 response.error / response.failed / error 类型帧
- 新增 ClearEventStreamHeadersIfNotWritten 工具方法,错误转换时清除流式头
- 新增 streamOpenAIErrorFromData,从 SSE data 帧提取 OpenAPI 错误结构
- 上游错误体会截断后存入 UpstreamBody 供排障
Co-Authored-By: Claude <noreply@anthropic.com>
před 2 týdny
fengsilin
696c549a66
feat(video): add doubao aiping video pricing support
Co-Authored-By: Codex <noreply@anthropic.com>
před 2 týdny
fengsilin
99168a9660
test: stabilize model pricing e2e runtime
před 3 týdny
fengsilin
aeff58b122
test: stabilize model pricing generator e2e
před 3 týdny
fengsilin
5451d801f3
test: cover model pricing e2e workflow
před 3 týdny
fengsilin
a4b824952f
test: make model pricing tab selector clickable
před 3 týdny
fengsilin
32014dde92
test: add model pricing e2e selectors
před 3 týdny
fengsilin
eaae02e767
test: ignore e2e artifacts
Co-Authored-By: Codex <noreply@anthropic.com>
před 3 týdny
fengsilin
75285bcabd
test: align playwright runtime with chromium
Co-Authored-By: Codex <noreply@anthropic.com>
před 3 týdny
fengsilin
b976b486af
test: avoid shell by default in e2e process helper
Co-Authored-By: Codex <noreply@anthropic.com>
před 3 týdny
fengsilin
568a91dfcf
test: harden e2e helper error handling
Co-Authored-By: Codex <noreply@anthropic.com>
před 3 týdny
fengsilin
eb285055ac
test: harden e2e process cleanup
před 3 týdny
fengsilin
32603ba385
docs(test): video pricing table test plan with mock server design
Co-Authored-By: Claude <noreply@anthropic.com>
před 3 týdny
fengsilin
b91d07b0da
test: add e2e process helpers
před 3 týdny
fengsilin
9837e80fac
test: add e2e scripts
před 3 týdny
fengsilin
cf2c47b826
docs: add e2e test foundation plan
před 3 týdny
fengsilin
915efefaec
docs: add e2e test foundation design
před 3 týdny
fengsilin
3ac94e2e6f
test(task-pricing): cover model pricing api and remix snapshots
před 3 týdny
fengsilin
19bdae5509
fix(stream): default non-positive streaming timeout
před 3 týdny
fengsilin
089bc88015
docs(task-pricing): document video pricing table testing
před 3 týdny
fengsilin
43b0bf293d
test(task-pricing): cover video usage billing flows
před 3 týdny
fengsilin
b36edf7f43
feat(ui): add model multidimensional pricing editor
před 3 týdny
fengsilin
aff3284d02
feat(ui): add model pricing config utilities
před 3 týdny
fengsilin
f3778e3931
test(task-pricing): cover doubao usage parsing
před 3 týdny
fengsilin
285323d765
feat(task-pricing): expose model pricing rules api
před 3 týdny
fengsilin
3a52f31608
feat(task-pricing): gate channels for matrix usage billing
před 3 týdny
fengsilin
db8eacd558
feat(task-pricing): persist matrix billing snapshots
před 3 týdny
fengsilin
8f2b014366
feat(task-pricing): add matrix lookup decisions
před 3 týdny
fengsilin
ae1e68792a
feat(task-pricing): resolve pricing dimensions from task requests
před 3 týdny
fengsilin
b4301a53ae
feat(task-pricing): validate and cache model pricing rules
před 3 týdny
fengsilin
95060ea0aa
feat(task-pricing): add pricing config and decision types
před 3 týdny
fengsilin
8f89828ca3
fix(user-migration): 禁止冲突用户非法合并
- 前端冲突处理页面禁用 cn_already_synced_to_ov 场景的 merge 操作
- 后端 resolve 接口拒绝将已存在 synced copy 的 CN 用户作为 merge 目标
- 补充对应控制器测试
Co-Authored-By: Codex <noreply@anthropic.com>
před 4 týdny
fengsilin
2f7a71d61e
fix(user-migration): 补齐主节点保护与导入校验
- 为 user-migrations 管理路由增加仅 master 节点可访问的保护
- 为导入创建用户补充用户名、显示名、邮箱长度校验及测试
- 调整测试环境部署脚本,自动写入 CN/OV 的 NODE_TYPE
Co-Authored-By: Codex <noreply@anthropic.com>
před 4 týdny
fengsilin
9aaa6baa4c
merge: user migration selective batches into master
# Conflicts:
# controller/user.go
# web/src/i18n/locales/en.json
# web/src/i18n/locales/zh-CN.json
před 1 měsícem
fengsilin
65e6a82d34
feat(user-migration): support selective batches and cancellation
Add candidate user selection and explicit_ids batch creation flow for overseas migration. Also add cancellable batches to release selected-user locks and extend backend, frontend, and e2e coverage for the new flow.
Co-Authored-By: Codex <noreply@anthropic.com>
před 1 měsícem
fengsilin
ca3f8765bb
test(user-migration): complete migration coverage and e2e flow
Co-Authored-By: Codex <noreply@anthropic.com>
před 1 měsícem
fengsilin
a72d76522f
fix(deploy): 部署脚本 tag 格式与 Makefile 对齐,加入 commit hash 和 dirty 标记
před 1 měsícem
fengsilin
de993c5605
feat(docker): 镜像 tag 加入 commit hash,未提交代码标记 dirty
格式:{时间}-{分支}-{短commit}[-dirty]
示例:202606051500-master-e9d5d51b(干净)
202606051500-master-e9d5d51b-dirty(有未提交改动)
před 1 měsícem
fengsilin
e9d5d51b37
fix(sync): 修复 Slave 端编辑同步用户时误报余额不可修改的问题
前端对同步用户用 SyncedQuota 替代 Quota 展示,但后端比较时
用的是数据库真实 Quota 字段,导致两者不同而触发拦截。
改为比较 SyncedQuota,只有真正修改额度时才拦截。
před 1 měsícem
fengsilin
2544556f5d
fix(ratio): 缓存读取倍率为 0 时前端不显示,补充 extraText 说明
před 1 měsícem
fengsilin
dce7631092
docs(ratio): 缓存创建倍率 extraText 补充设置为 0 时隐藏说明
před 1 měsícem
fengsilin
1c15ee996d
feat(ratio): 升级未设置倍率模型编辑弹窗,对齐可视化编辑器
- 将操作列「高级比例」按钮改为编辑图标按钮,打开完整编辑弹窗
- 编辑弹窗新增定价模式切换(按量计费/按次计费)
- 按量计费下支持按倍率设置和按价格设置两种子模式
- 按倍率:模型倍率、补全倍率
- 按价格:输入价格、输出价格($/1M tokens),自动计算倍率
- 高级比例区域:缓存读取、缓存创建、图片、音频输入、音频输出
- 修复 SubmitData 遗漏高级倍率字段保存的 bug(CacheRatio 等 5 个字段)
- 清理死代码(未调用的转换函数、残留 console.log)
před 1 měsícem
fengsilin
182ab5ff83
refactor(ratio): move advanced ratios to edit modal in unset models page
- Remove advanced ratio columns from the table
- Add 'advanced ratios' button in action column
- Add edit modal with Form.InputNumber fields (same as visual editor)
- Table stays clean, advanced settings only visible on click
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
před 1 měsícem