AI 网关切换 OpenAI 兼容面并移除 chat 端点,新增模型黑白名单
CI / test (push) Successful in 31s
Release / release (push) Successful in 54s

This commit is contained in:
2026-07-12 17:48:28 +08:00
parent 7706f59549
commit 489cb49cb3
34 changed files with 2602 additions and 2901 deletions
+15 -12
View File
@@ -261,11 +261,13 @@ type CompartmentCache struct {
// AiKey 是 AI 网关的访问密钥;明文不落库,仅存 SHA-256 与尾 4 位。
// Group 非空时该密钥只在同分组渠道内负载均衡(列名避开 SQL 保留字 group)。
type AiKey struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"uniqueIndex;size:64" json:"name"`
KeyHash string `gorm:"uniqueIndex;size:64" json:"-"`
Tail string `gorm:"size:4" json:"tail"`
Group string `gorm:"column:key_group;size:32" json:"group"`
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"uniqueIndex;size:64" json:"name"`
KeyHash string `gorm:"uniqueIndex;size:64" json:"-"`
Tail string `gorm:"size:4" json:"tail"`
Group string `gorm:"column:key_group;size:32" json:"group"`
// Models 是模型白名单(精确匹配模型名);空 = 不限,非空时网关仅放行列表内模型
Models []string `gorm:"serializer:json;type:text" json:"models"`
Enabled bool `json:"enabled"`
LastUsedAt *time.Time `json:"lastUsedAt"`
// ContentLogUntil 是内容日志开启截止时间;nil = 永关(默认,红线),
@@ -309,13 +311,14 @@ type AiModelCache struct {
// 弃用后仍可调用,直到 RetiredAt(按需推理退役,同步层已剔除过期项)。
DeprecatedAt *time.Time `json:"deprecatedAt"`
RetiredAt *time.Time `json:"retiredAt"`
// Unusable 标记该模型在此渠道不可按需调用(微调基座/区域未开放按需),
// 由探测、真实调用或同步后的后台验证习得:不参与网关列表/路由/探测候选;
// 任何同步都按 OCID 结转标记,已标记模型定期复检、恢复供给自动解除。
Unusable bool `json:"unusable"`
UnusableReason string `gorm:"size:200" json:"unusableReason,omitempty"`
// CheckedAt 是最近一次可用性验证时间;NULL 表示从未验证(同步后的后台验证以此为队列)。
CheckedAt *time.Time `json:"checkedAt"`
}
// AiModelBlacklist 是全局模型黑名单(按模型名):加入即从全部渠道缓存删除该模型,
// 同步与探测过滤不再入库;适用于微调基座等实际不可按需调用的模型,由用户手动维护。
type AiModelBlacklist struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `gorm:"size:96;uniqueIndex" json:"name"`
CreatedAt time.Time `json:"createdAt"`
}
// AiCallLog 是网关调用日志:仅元数据与 token 用量,绝不记录 prompt / 响应正文。