Commit Graph
148 Commits
Author SHA1 Message Date
qian 9e8293cf05 fix(ticket):工单只显示管理员显示名,不显示用户名 2026-09-07 22:18:27 +08:00
qian 80b4754208 fix(model):修复模型结构体未设置导致查询出错 2026-09-06 23:02:34 +08:00
qian 72fb0318f5 fix(permissions):修复租户端的权限漏洞 2026-09-05 00:31:14 +08:00
qian a247b3a53b feat(notify):添加通知显示 2026-09-04 01:03:53 +08:00
chengqian e703c9a044 fix(permissions):修复后端权限漏洞 2026-09-03 15:05:31 +08:00
qian 9d61abda86 fix(permissions):修复权限相关问题 2026-09-03 00:46:57 +08:00
qian 8d4e8744d5 fix(help):修复帮助文档问题 2026-09-02 23:56:49 +08:00
chengqian 652c6903f6 fix(permissions):修复提权漏洞 2026-09-02 19:43:42 +08:00
qian e800cd4b05 fix(setting):移除安全配置中的无用配置 2026-09-01 21:34:45 +08:00
qian df78724773 fix(setting):修复注册限流不生效的问题 2026-09-01 21:20:22 +08:00
chengqian fdd1bc7653 feat(role):权限管理功能 2026-09-01 20:32:35 +08:00
chengqian f129221942 fix(billing):修复货币符号固定未更随系统设置变化问题 2026-09-01 16:20:49 +08:00
chengqian 0372d4fff5 feat(role):新增用户权限功能 2026-09-01 15:47:10 +08:00
qian 211148a0af improve(workbench):优化工作台页面 2026-08-31 23:29:21 +08:00
qian a2beb8230a fix(relay):修复转换层层数据断层导致连接中断没有正确计费的问题 2026-08-31 22:19:35 +08:00
chengqian bdfd1b6567 feat(ui):管理后台新增工作台,可便捷查看告警信息 2026-08-31 20:07:15 +08:00
chengqian 8c8b63da77 fix(email):修复邮件相关功能 2026-08-31 16:21:20 +08:00
qian cd019cf817 feat(billing):新增本位币设置,初始化时可选择全局货币单位,一旦设置就不能修改 2026-08-29 10:22:47 +08:00
qian 0964d9014b fix(update):修复在线更新检测后缓存问题导致无法正常更新 2026-08-28 22:23:00 +08:00
chengqian 96bcd3e46f fix(channel):修复渠道更新key后无法立即生效 2026-08-28 16:55:28 +08:00
qian e8dfe9499d improve(log):优化日志输出 2026-08-27 23:36:20 +08:00
chengqian dd02bf4ac3 feat(admin): 渠道列表/详情展示最差模型,暴露被均值摊薄的单模型故障
渠道健康分是各模型 succ_ewma 的均值,单个模型全挂会被其余健康模型摊薄——10 个
健康模型 + 1 个挂掉仍能算出 90 分绿灯,而这恰是模型级熔断要隔离的典型场景。
补一个最差项:ChannelRuntimeStates 遍历目录快照时顺带取每个渠道 succ_ewma 最小的
模型,按 succ^α×100 折算为与渠道分同口径的健康分。

不落库、不加列:catalog 内存快照已逐 (渠道,模型) 持有 SuccEwma,遍历它即可,零额外
I/O;数据是调度器同源的 5 秒刷新值,比 5 分钟落盘快照更新鲜。取最小值也天然免疫冷
模型问题——无上报的模型读作满分 1.0,永远不会被选为最差项。

byModel 是 map,遍历顺序随机,同分时按模型名取小者打破平局,否则全部模型满分时
每次请求返回的模型名都会跳变。

前端:列表页健康度列在最差项低于 80(健康档)时补一行「⚠ 模型名 分数」,详情页
健康度字段同理;disabled / testing 渠道不在目录快照,不展示。
2026-08-27 21:59:45 +08:00
chengqian 1f3489c37d docs(dispatch): 修正健康度列注释与过时文档,清理两个僵尸字段
chn_health_scores 的列注释仍写着健康体系重写前的加权公式(成功率×0.40 + 延迟分×0.25
+ 稳定性×0.20 + 连续失败分×0.15),而实际实现是 avg(succ_ewma)^α×100。注释经
gf gen dao 流入 entity/do/dao,是全链路唯一会主动误导后来人的地方。迁移 000017 改写
health_score / success_rate / latency_ms / calculated_at 的 COMMENT 为实际口径。

stability_score / consecutive_failures 自重写后从未被更新,只在建渠道和重置健康度时
写入常量,趋势图与调度均不消费,却仍通过 HealthTrendPoint 返给前端。改为:注释标注
【已废弃】、代码停止写入与查询、从趋势接口响应中移除。保留列不删除以免破坏历史快照;
chn_health_snapshots.stability_score 为 NOT NULL 且无默认值,迁移补 DEFAULT 0,
否则代码停写后插入会失败。

docs/reference/多项目渠道调度对比.md 的 team-api 部分描述的是重写前的实现(引用的
relay/scheduler/、internal/logic/relay/health.go 均已删除),加时效声明并指明现行口径。

注意:迁移执行后需重跑 gf gen dao 刷新 entity/do/dao 中的列注释。
2026-08-27 21:59:44 +08:00
chengqian 4f07b64ac7 fix(admin): 模型级健康分统一为 succ^α 口径,探测/重置结果即时落盘
能力列表的模型级健康分用线性 succ×100,而调度 healthFactor、维护快照落盘、健康变化
日志三处都用 succ^α×100。前端两处共用同一套 80/50 阈值,于是 succ=0.89 时模型行显示
89「健康」、渠道行显示 79「降级」,同一个渠道点进去自相矛盾。改为经
dispatchadapter.HealthAlpha() 取当前生效策略的 α(策略支持热更新,不硬编码 2)。
该入口刻意不走 Coordinator(),避免管理后台读接口有装配整个调度引擎的副作用。

渠道测试与重置健康度后请求即时重算快照:维护循环 5 分钟一轮,此前测试成功后 Redis
立刻变、能力列表(直读 Redis)立刻变,唯独渠道健康分要等下一轮,看起来像「测试没
生效」。重置单模型的分支此前完全不写 chn_health_scores,展示分永远停在旧值,一并修复。
2026-08-27 21:59:43 +08:00
chengqian 3035fa118c fix(dispatch): 修复 HMGET 判空失效导致冷渠道健康分被读成 0
ReadRuntime 用 `!vals[0].IsNil()` 判断 HMGET 结果是否存在,但 gredis 把 Redis
nil 数组元素包装成非 nil 空 gvar(IsNil() 恒为 false、Float64() 静默返回 0),
导致所有从未被真实流量访问过的渠道×模型被读成健康 0 分而非默认满分 1.0:管理
后台渠道健康度全线坍缩(如某渠道 (1.0+0)/2 → 0.5²×100=25 长期不动),调度侧
healthFactor 同样归零,冷模型路由权重被压死。

GET/HGET 单值回复的 IsNil() 正常,仅数组回复有此坑;仓库内 HMGET 调用点仅
ReadRuntime 与 readBreaker 两处,后者因默认值 BreakerClosed 恰为零值而侥幸
无害,一并改为按字符串判空。

- ReadRuntime:TrimSpace 判空 + ParseFloat 值域校验(succ 取 0<f<=1,EWMA
  由正数衰减而来不会精确到达 0,精确 0 视为异常数据)
- 回归测试:key 不存在须回落默认值、空串/非法值/精确 0 防御
- 通用规则写入 goframe-conventions.md 框架使用错误记录

同时补齐探测与健康分的可观测性(本次排查绕行三次的直接原因是全链路静默):

- [ChannelProbe] 探测全流程:轮次起止、模型与上游映射、结果、是否上报健康
- [ChannelHealth] 健康分变化:EWMA 变化点(Outcome.Probe 区分探测/真实流量
  来源)、快照落盘含各模型 succ 明细、维护轮次覆盖摘要
- 快照落库失败由 Debug 升为 Warning(此前静默,健康分冻结无从定位)
- 探测目标不在调度目录时告警(该场景健康分不落盘且渠道不参与调度)
- 变化类日志按「分数实际移动」触发,稳态降为 Debug,避免生产流量刷屏
2026-08-27 21:59:42 +08:00
chengqian d2e3794e3a fix(channel):修复渠道健康分数一直下降的问题 2026-08-26 16:49:25 +08:00
chengqian ccdb314ecd Merge remote-tracking branch 'origin/dev' into dev 2026-08-20 11:45:46 +08:00
qian 40e91d9450 feat(channel):新增渠道调试日志功能 2026-08-20 10:34:15 +08:00
qian 5cae607d19 feat(channel):允许禁用的渠道进行模型测试操作 2026-08-20 01:03:48 +08:00
qian ee96a5b866 feat(model):优化模型价格设置功能 2026-08-20 01:03:48 +08:00
qian add95ca5ab feat(model):模型定价分时功能 2026-08-20 01:03:47 +08:00
chengqian 54ccfb9b80 feat(usage):用量记录添加统计信息 2026-08-19 20:54:52 +08:00
chengqian 330d02f19d feat(channel):渠道详情页显示模型监控信息 2026-08-19 18:34:21 +08:00
qian 8a7f0f2760 Merge branch 'main' into feat/responses
# Conflicts:
#	docs/reference/goframe-conventions.md
#	internal/logic/admin/channel.go
#	web/tenant/src/views/service/ApiKeysPage.vue
2026-08-18 23:02:33 +08:00
qian 9a3ce06775 improve(ui):优化后台图表显示效果 2026-08-18 22:37:42 +08:00
qian 3073c6fd5e fix(channel):修复渠道修改base url地址后不匹配问题 2026-08-18 00:29:37 +08:00
martin 77cb3d0a01 feat(update):优化版本解析,移除 v 前缀 2026-08-15 16:08:12 +08:00
qian 36b8450d06 fix(toast):修复提示信息描述重复问题 2026-08-15 00:45:11 +08:00
chengqian a090fdd601 fix(channel):修复渠道权重被设置为0的问题 2026-08-14 18:47:45 +08:00
chengqian 85ccf083d2 fix(channel):修复渠道权重被设置为0的问题 2026-08-14 18:27:25 +08:00
chengqian bf7123148e feat(model):responses协议和chat的优化处理 2026-08-14 18:14:11 +08:00
chengqian b5a1770018 feat(model):支持responses协议 2026-08-14 16:24:58 +08:00
qian 540817a6a7 feat(channel):新增渠道调度状态显示 2026-08-08 09:09:07 +08:00
qian bc2f202f4f fix(channel):修复ali百炼渠道路径拼接问题 2026-08-08 02:03:31 +08:00
qian 780cd26be8 fix(db):修复数据库查询结果为空的问题 2026-08-08 01:19:52 +08:00
qian 6cf68b14b3 feat(wallet):管理后台钱包一键释放所有被冻结资产 2026-08-05 23:46:53 +08:00
qian 99cb57dcd2 refactor(wallet):预扣冻结金额完全走redis,提升数据库并发能力 2026-08-05 23:38:15 +08:00
qian c7d15d82a4 improve(admin):优化管理功能搜索条件 2026-08-04 22:50:57 +08:00
qian a73cf411a5 improve(ui):统一调整表格页面,将总数统计显示在左下角 2026-08-04 22:23:29 +08:00
chengqian 6ca1726298 fear(wallet):管理后台在租户钱包里面显示被冻结的资金 2026-08-04 14:35:58 +08:00