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>
2 недель назад
fengsilin
139b6a6075
feat: store relay capture records as json
2 недель назад
fengsilin
65551e8003
refactor: prepare relay capture json helpers
2 недель назад
fengsilin
19d55dc255
docs: design relay capture json storage
2 недель назад
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>
2 недель назад
fengsilin
696c549a66
feat(video): add doubao aiping video pricing support
Co-Authored-By: Codex <noreply@anthropic.com>
2 недель назад
fengsilin
99168a9660
test: stabilize model pricing e2e runtime
3 недель назад
fengsilin
aeff58b122
test: stabilize model pricing generator e2e
3 недель назад
fengsilin
5451d801f3
test: cover model pricing e2e workflow
3 недель назад
fengsilin
a4b824952f
test: make model pricing tab selector clickable
3 недель назад
fengsilin
32014dde92
test: add model pricing e2e selectors
3 недель назад
fengsilin
eaae02e767
test: ignore e2e artifacts
Co-Authored-By: Codex <noreply@anthropic.com>
3 недель назад
fengsilin
75285bcabd
test: align playwright runtime with chromium
Co-Authored-By: Codex <noreply@anthropic.com>
3 недель назад
fengsilin
b976b486af
test: avoid shell by default in e2e process helper
Co-Authored-By: Codex <noreply@anthropic.com>
3 недель назад
fengsilin
568a91dfcf
test: harden e2e helper error handling
Co-Authored-By: Codex <noreply@anthropic.com>
3 недель назад
fengsilin
eb285055ac
test: harden e2e process cleanup
3 недель назад
fengsilin
32603ba385
docs(test): video pricing table test plan with mock server design
Co-Authored-By: Claude <noreply@anthropic.com>
3 недель назад
fengsilin
b91d07b0da
test: add e2e process helpers
3 недель назад
fengsilin
9837e80fac
test: add e2e scripts
3 недель назад
fengsilin
cf2c47b826
docs: add e2e test foundation plan
3 недель назад
fengsilin
915efefaec
docs: add e2e test foundation design
3 недель назад
fengsilin
3ac94e2e6f
test(task-pricing): cover model pricing api and remix snapshots
3 недель назад
fengsilin
19bdae5509
fix(stream): default non-positive streaming timeout
3 недель назад
fengsilin
089bc88015
docs(task-pricing): document video pricing table testing
3 недель назад
fengsilin
43b0bf293d
test(task-pricing): cover video usage billing flows
3 недель назад
fengsilin
b36edf7f43
feat(ui): add model multidimensional pricing editor
3 недель назад
fengsilin
aff3284d02
feat(ui): add model pricing config utilities
3 недель назад
fengsilin
f3778e3931
test(task-pricing): cover doubao usage parsing
3 недель назад
fengsilin
285323d765
feat(task-pricing): expose model pricing rules api
3 недель назад
fengsilin
3a52f31608
feat(task-pricing): gate channels for matrix usage billing
3 недель назад
fengsilin
db8eacd558
feat(task-pricing): persist matrix billing snapshots
3 недель назад
fengsilin
8f2b014366
feat(task-pricing): add matrix lookup decisions
3 недель назад
fengsilin
ae1e68792a
feat(task-pricing): resolve pricing dimensions from task requests
3 недель назад
fengsilin
b4301a53ae
feat(task-pricing): validate and cache model pricing rules
3 недель назад
fengsilin
95060ea0aa
feat(task-pricing): add pricing config and decision types
3 недель назад
fengsilin
8f89828ca3
fix(user-migration): 禁止冲突用户非法合并
- 前端冲突处理页面禁用 cn_already_synced_to_ov 场景的 merge 操作
- 后端 resolve 接口拒绝将已存在 synced copy 的 CN 用户作为 merge 目标
- 补充对应控制器测试
Co-Authored-By: Codex <noreply@anthropic.com>
1 месяц назад
fengsilin
2f7a71d61e
fix(user-migration): 补齐主节点保护与导入校验
- 为 user-migrations 管理路由增加仅 master 节点可访问的保护
- 为导入创建用户补充用户名、显示名、邮箱长度校验及测试
- 调整测试环境部署脚本,自动写入 CN/OV 的 NODE_TYPE
Co-Authored-By: Codex <noreply@anthropic.com>
1 месяц назад
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
1 месяц назад
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>
1 месяц назад
fengsilin
ca3f8765bb
test(user-migration): complete migration coverage and e2e flow
Co-Authored-By: Codex <noreply@anthropic.com>
1 месяц назад
fengsilin
a72d76522f
fix(deploy): 部署脚本 tag 格式与 Makefile 对齐,加入 commit hash 和 dirty 标记
1 месяц назад
fengsilin
de993c5605
feat(docker): 镜像 tag 加入 commit hash,未提交代码标记 dirty
格式:{时间}-{分支}-{短commit}[-dirty]
示例:202606051500-master-e9d5d51b(干净)
202606051500-master-e9d5d51b-dirty(有未提交改动)
1 месяц назад
fengsilin
e9d5d51b37
fix(sync): 修复 Slave 端编辑同步用户时误报余额不可修改的问题
前端对同步用户用 SyncedQuota 替代 Quota 展示,但后端比较时
用的是数据库真实 Quota 字段,导致两者不同而触发拦截。
改为比较 SyncedQuota,只有真正修改额度时才拦截。
1 месяц назад
fengsilin
2544556f5d
fix(ratio): 缓存读取倍率为 0 时前端不显示,补充 extraText 说明
1 месяц назад
fengsilin
dce7631092
docs(ratio): 缓存创建倍率 extraText 补充设置为 0 时隐藏说明
1 месяц назад
fengsilin
1c15ee996d
feat(ratio): 升级未设置倍率模型编辑弹窗,对齐可视化编辑器
- 将操作列「高级比例」按钮改为编辑图标按钮,打开完整编辑弹窗
- 编辑弹窗新增定价模式切换(按量计费/按次计费)
- 按量计费下支持按倍率设置和按价格设置两种子模式
- 按倍率:模型倍率、补全倍率
- 按价格:输入价格、输出价格($/1M tokens),自动计算倍率
- 高级比例区域:缓存读取、缓存创建、图片、音频输入、音频输出
- 修复 SubmitData 遗漏高级倍率字段保存的 bug(CacheRatio 等 5 个字段)
- 清理死代码(未调用的转换函数、残留 console.log)
1 месяц назад
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>
1 месяц назад
fengsilin
1fdf0a3f47
feat(ratio): add advanced ratio fields to unset models editor
- Add cache/image/audio ratio columns to the table
- Add advanced ratio fields to the add model modal
- Update data init, submit, and addModel to handle new fields
- Use formRef to read InputNumber values (same fix as visual editor)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 месяц назад
fengsilin
d36a686f6b
fix(ratio): preserve 0 as valid value for advanced ratio fields
- Replace || with ?? in addOrUpdateModel to keep 0 values (0 || '' = '')
- Add null check in SubmitData to avoid writing undefined
- Fix formRef value reading to preserve 0 vs empty distinction
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 месяц назад
fengsilin
c824381642
fix(ratio): read advanced ratio values from form on submit
Form.InputNumber values were not synced to currentModel state via
onChange, so the advanced ratio fields were always empty when saving.
Now reads values directly from formRef in onOk handler.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 месяц назад