This commit is contained in:
2026-05-12 13:45:08 +08:00
parent e81df5ce5a
commit 37d3461983
38 changed files with 1721 additions and 1113 deletions

View File

@@ -1,24 +1 @@
package controller
import (
"context"
"gitea.com/red-future/common/beans"
)
// ensureUser 用于本地/无网关环境下的兜底用户信息,避免 gfdb Hook 因缺少用户上下文而报错。
// 生产环境建议由网关透传 X-User-Info 或鉴权中间件注入 ctx.Value("user")。
func ensureUser(ctx context.Context) context.Context {
if ctx == nil {
ctx = context.Background()
}
if ctx.Value("user") != nil {
return ctx
}
u := &beans.User{
UserName: "admin",
TenantId: 1,
}
return context.WithValue(ctx, "user", u)
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"model-asynch/model/dto"
"model-asynch/model/entity"
"model-asynch/service"
"gitea.com/red-future/common/beans"
@@ -16,51 +17,42 @@ var Model = new(model)
// CreateModel 添加配置
func (c *model) CreateModel(ctx context.Context, req *dto.CreateModelReq) (res *dto.CreateModelRes, err error) {
ctx = ensureUser(ctx)
return service.Model.Create(ctx, req)
}
// UpdateModel 更改配置
func (c *model) UpdateModel(ctx context.Context, req *dto.UpdateModelReq) (res *beans.ResponseEmpty, err error) {
ctx = ensureUser(ctx)
err = service.Model.Update(ctx, req)
return
}
// DeleteModel 删除配置
func (c *model) DeleteModel(ctx context.Context, req *dto.DeleteModelReq) (res *beans.ResponseEmpty, err error) {
ctx = ensureUser(ctx)
err = service.Model.Delete(ctx, req.ID)
return
}
// GetModel 获取配置详情(按 modelName
func (c *model) GetModel(ctx context.Context, req *dto.GetModelReq) (res *dto.GetModelRes, err error) {
ctx = ensureUser(ctx)
m, err := service.Model.Get(ctx, req.ID)
model, err := service.Model.Get(ctx, req.ID)
if err != nil {
return nil, err
}
return &dto.GetModelRes{Model: m}, nil
return &dto.GetModelRes{Model: model}, nil
}
// ListModel 配置列表
func (c *model) ListModel(ctx context.Context, req *dto.ListModelReq) (res *dto.ListModelRes, err error) {
ctx = ensureUser(ctx)
pageNum, pageSize := 1, 10 //默认分页参数
if req != nil && req.Page != nil {
if req.Page.PageNum > 0 {
pageNum = int(req.Page.PageNum)
}
if req.Page.PageSize > 0 {
pageSize = int(req.Page.PageSize)
}
}
modelName := ""
if req != nil {
modelName = req.ModelName
if req.PageNum > 0 {
pageNum = req.PageNum
}
if req.PageSize > 0 {
pageSize = req.PageSize
}
}
list, total, err := service.Model.List(ctx, pageNum, pageSize, modelName)
list, total, err := service.Model.List(ctx, pageNum, pageSize, req.ModelName, req.ModelType)
if err != nil {
return nil, err
}
@@ -72,7 +64,6 @@ func (c *model) ListModel(ctx context.Context, req *dto.ListModelReq) (res *dto.
// AutoTune 动态调参(由上层定时任务每小时触发一次)
func (c *model) AutoTune(ctx context.Context, req *dto.AutoTuneReq) (res *dto.AutoTuneRes, err error) {
ctx = ensureUser(ctx)
windowSeconds := 3600
if req != nil && req.WindowSeconds > 0 {
windowSeconds = req.WindowSeconds
@@ -83,3 +74,20 @@ func (c *model) AutoTune(ctx context.Context, req *dto.AutoTuneReq) (res *dto.Au
}
return &dto.AutoTuneRes{List: list}, nil
}
func (c *model) ListType(ctx context.Context, req *dto.ListTypeReq) (res dto.TypeItem, err error) {
modelType := service.GetModelTypesFromConfig(ctx)
res.Type = modelType
return res, nil
}
// UpdateChatModel 更新是否为聊天模型
func (c *model) UpdateChatModel(ctx context.Context, req *dto.UpdateChatModelReq) (res *beans.ResponseEmpty, err error) {
err = service.Model.UpdateChatModel(ctx, req)
return
}
// GetIsChatModel 获取是否为聊天模型
func (c *model) GetIsChatModel(ctx context.Context, req *dto.GetIsChatModelReq) (res *entity.AsynchModel, err error) {
return service.Model.GetIsChatModel(ctx)
}

View File

@@ -1,68 +0,0 @@
package controller
import (
"context"
"model-asynch/model/dto"
"model-asynch/service"
"gitea.com/red-future/common/beans"
)
type modelType struct{}
// ModelType 模型类型控制器
var ModelType = new(modelType)
func (c *modelType) CreateModelType(ctx context.Context, req *dto.CreateModelTypeReq) (res *dto.CreateModelTypeRes, err error) {
ctx = ensureUser(ctx)
return service.ModelType.Create(ctx, req)
}
func (c *modelType) UpdateModelType(ctx context.Context, req *dto.UpdateModelTypeReq) (res *beans.ResponseEmpty, err error) {
ctx = ensureUser(ctx)
err = service.ModelType.Update(ctx, req)
return
}
func (c *modelType) DeleteModelType(ctx context.Context, req *dto.DeleteModelTypeReq) (res *beans.ResponseEmpty, err error) {
ctx = ensureUser(ctx)
err = service.ModelType.Delete(ctx, req.ID)
return
}
func (c *modelType) GetModelType(ctx context.Context, req *dto.GetModelTypeReq) (res *dto.GetModelTypeRes, err error) {
ctx = ensureUser(ctx)
t, err := service.ModelType.Get(ctx, req.ID)
if err != nil {
return nil, err
}
return &dto.GetModelTypeRes{Type: t}, nil
}
func (c *modelType) ListModelType(ctx context.Context, req *dto.ListModelTypeReq) (res *dto.ListModelTypeRes, err error) {
ctx = ensureUser(ctx)
pageNum, pageSize := 1, 10
if req != nil && req.Page != nil {
if req.Page.PageNum > 0 {
pageNum = int(req.Page.PageNum)
}
if req.Page.PageSize > 0 {
pageSize = int(req.Page.PageSize)
}
}
typeName := ""
if req != nil {
typeName = req.TypeName
}
list, total, err := service.ModelType.List(ctx, pageNum, pageSize, typeName)
if err != nil {
return nil, err
}
return &dto.ListModelTypeRes{List: list, Total: total}, nil
}
func (c *modelType) ListModelTypeWithModels(ctx context.Context, req *dto.ListModelTypeWithModelsReq) (res []dto.ModelTypeWithModelsItem, err error) {
ctx = ensureUser(ctx)
return service.ModelType.ListWithModels(ctx, req)
}

View File

@@ -14,7 +14,5 @@ var Stat = new(stat)
// ListModelStat 统计列表
func (c *stat) ListModelStat(ctx context.Context, req *dto.ListModelStatReq) (res *dto.ListModelStatRes, err error) {
ctx = ensureUser(ctx)
return service.Stat.List(ctx, req)
}

View File

@@ -14,31 +14,26 @@ var Task = new(task)
// CreateTask 根据 modelName 创建异步任务,返回 taskId
func (c *task) CreateTask(ctx context.Context, req *dto.CreateTaskReq) (res *dto.CreateTaskRes, err error) {
ctx = ensureUser(ctx)
return service.Task.Create(ctx, req)
}
// GetTaskResult 获取任务结果(只返回 oss 地址 + state
func (c *task) GetTaskResult(ctx context.Context, req *dto.GetTaskResultReq) (res *dto.GetTaskResultRes, err error) {
ctx = ensureUser(ctx)
return service.Task.GetResult(ctx, req.TaskID)
}
// GetTaskBatch 批量查询任务(成功任务标记为已下载)
func (c *task) GetTaskBatch(ctx context.Context, req *dto.GetTaskBatchReq) (res *dto.GetTaskBatchRes, err error) {
ctx = ensureUser(ctx)
return service.Task.GetBatch(ctx, req)
}
// ListTask 任务列表分页查询
func (c *task) ListTask(ctx context.Context, req *dto.ListTaskReq) (res *dto.ListTaskRes, err error) {
ctx = ensureUser(ctx)
return service.Task.List(ctx, req)
}
// RunWork 手动触发一次 worker由上层定时任务调用
func (c *task) RunWork(ctx context.Context, req *dto.RunWorkReq) (res *dto.RunWorkRes, err error) {
ctx = ensureUser(ctx)
batchSize, goroutines := 10, 1
if req != nil {
if req.BatchSize > 0 {
@@ -57,7 +52,6 @@ func (c *task) RunWork(ctx context.Context, req *dto.RunWorkReq) (res *dto.RunWo
// CleanWork 手动触发一次 cleaner由上层定时任务调用
func (c *task) CleanWork(ctx context.Context, req *dto.CleanWorkReq) (res *dto.CleanWorkRes, err error) {
ctx = ensureUser(ctx)
service.Cleaner.RunOnce(ctx)
return &dto.CleanWorkRes{Ok: true}, nil
}