0.11.0: 旗舰版功能补齐(License/登录记录/会话管理/角色管理/门户定时任务/模型配额/输出脱敏/供应链扫描/记忆管理/AI助手/真实概览)

- 新增迁移 000031-000034(登录日志/角色/模型配额/记忆)
- 新增包: license/memory/modelquota/assistant,扫描引擎
- 全部功能后端+前端+端到端验证通过(25 包单测)
This commit is contained in:
2026-08-13 11:37:18 +08:00
parent 9501751792
commit c22669c31d
43 changed files with 3672 additions and 254 deletions
+20 -4
View File
@@ -22,10 +22,19 @@ const maxUsageDocumentBytes = 2 << 20
type usageSession struct {
controller TokenQuotaController
reservation TokenReservation
fallback int64
onFinish func(TokenUsage)
once sync.Once
log *slog.Logger
// modelController/modelReservation 是模型级配额(可选,企业模型总配额)。
modelController ModelQuotaController
modelReservation any
fallback int64
onFinish func(TokenUsage)
once sync.Once
log *slog.Logger
}
// ModelQuotaController 抽象模型级配额控制器,避免 gateway 依赖 modelquota 包。
type ModelQuotaController interface {
Reserve(ctx context.Context, providerCode, model string, estimate int64, now time.Time) (any, error)
Commit(ctx context.Context, reservation any, actual int64) error
}
type TokenUsage struct {
@@ -64,6 +73,13 @@ func (s *usageSession) finish(usage TokenUsage) {
}
cancel()
}
if s.modelController != nil && s.modelReservation != nil {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
if err := s.modelController.Commit(ctx, s.modelReservation, usage.Total); err != nil && s.log != nil {
s.log.Warn("model quota commit failed", "error", err)
}
cancel()
}
if s.onFinish != nil {
s.onFinish(usage)
}