Files
observer/server/biz/controller/admin.go
T
2026-08-27 11:04:56 +08:00

190 lines
7.5 KiB
Go

package controller
import (
"context"
"github.com/gogf/gf/v2/net/ghttp"
"observer-server/biz/model/dto"
"observer-server/biz/service"
)
// cAdmin 后台管理端接口:薄透传;service 按表归入各表文件
// (订单→service.Order、授权→service.License、数据集→service.Dataset、
// 训练→service.Training、模型版本→service.ModelVersion、标注→service.LabelTask)。
// 独立 controller 聚合,避免同一 controller 挂客户端组 + 管理组时路由重复注册。
type cAdmin struct{}
var Admin = &cAdmin{}
// ---------- 订单/授权/App 版本(既有) ----------
// ListOrders 订单列表
func (c *cAdmin) ListOrders(ctx context.Context, req *dto.AdminOrderListReq) (*dto.AdminOrderListRes, error) {
return service.Order.AdminListOrders(ctx, req)
}
// ListLicenses 授权列表
func (c *cAdmin) ListLicenses(ctx context.Context, req *dto.AdminLicenseListReq) (*dto.AdminLicenseListRes, error) {
return service.License.AdminListLicenses(ctx, req)
}
// Grant 手动授权
func (c *cAdmin) Grant(ctx context.Context, req *dto.AdminGrantReq) (*dto.AdminGrantRes, error) {
return service.License.AdminGrant(ctx, req)
}
// Revoke 撤销授权
func (c *cAdmin) Revoke(ctx context.Context, req *dto.AdminRevokeReq) (*dto.AdminRevokeRes, error) {
return service.License.AdminRevoke(ctx, req)
}
// Remark 写账号备注
func (c *cAdmin) Remark(ctx context.Context, req *dto.AdminRemarkReq) (*dto.AdminRemarkRes, error) {
return service.License.AdminRemark(ctx, req)
}
// ListAppVersions 版本记录列表
func (c *cAdmin) ListAppVersions(ctx context.Context, req *dto.AdminAppVersionListReq) (*dto.AdminAppVersionListRes, error) {
return service.AppVersion.AdminListVersions(ctx, req)
}
// AddAppVersion 新增版本记录
func (c *cAdmin) AddAppVersion(ctx context.Context, req *dto.AdminAppVersionAddReq) (*dto.AdminAppVersionAddRes, error) {
return service.AppVersion.AdminAddVersion(ctx, req)
}
// DeleteAppVersion 删除版本记录
func (c *cAdmin) DeleteAppVersion(ctx context.Context, req *dto.AdminAppVersionDeleteReq) (*dto.AdminAppVersionDeleteRes, error) {
return service.AppVersion.AdminDeleteVersion(ctx, req)
}
// ---------- 数据集管理 ----------
// ListDatasets 数据集列表
func (c *cAdmin) ListDatasets(ctx context.Context, req *dto.AdminDatasetListReq) (*dto.AdminDatasetListRes, error) {
return service.Dataset.AdminListDatasets(ctx, req)
}
// CreateDataset 新建数据集
func (c *cAdmin) CreateDataset(ctx context.Context, req *dto.AdminDatasetCreateReq) (*dto.AdminDatasetCreateRes, error) {
return service.Dataset.AdminCreateDataset(ctx, req)
}
// UpdateDataset 更新数据集配置(封面/描述/AI 标注端点/训练机 SSH)
func (c *cAdmin) UpdateDataset(ctx context.Context, req *dto.AdminDatasetUpdateReq) (*dto.AdminDatasetUpdateRes, error) {
return service.Dataset.AdminUpdateDataset(ctx, req)
}
// DeleteDataset 删除数据集
func (c *cAdmin) DeleteDataset(ctx context.Context, req *dto.AdminDatasetDeleteReq) (*dto.AdminDatasetDeleteRes, error) {
return service.Dataset.AdminDeleteDataset(ctx, req)
}
// UploadImages 上传图片
func (c *cAdmin) UploadImages(ctx context.Context, req *dto.AdminDatasetUploadReq) (*dto.AdminDatasetUploadRes, error) {
return service.Dataset.AdminUploadImages(ctx, req)
}
// GenerateImages AI 生成图片
func (c *cAdmin) GenerateImages(ctx context.Context, req *dto.AdminDatasetGenerateReq) (*dto.AdminDatasetGenerateRes, error) {
return service.Dataset.AdminGenerateImages(ctx, req)
}
// ListImages 数据集图片列表
func (c *cAdmin) ListImages(ctx context.Context, req *dto.AdminDatasetImagesReq) (*dto.AdminDatasetImagesRes, error) {
return service.Dataset.AdminListImages(ctx, req)
}
// DeleteImages 删除图片
func (c *cAdmin) DeleteImages(ctx context.Context, req *dto.AdminDatasetImagesDeleteReq) (*dto.AdminDatasetImagesDeleteRes, error) {
return service.Dataset.AdminDeleteImages(ctx, req)
}
// Image 图片访问(直写响应体:service 校验归属返回路径,controller 输出二进制)
func (c *cAdmin) Image(ctx context.Context, req *dto.AdminDatasetImageReq) (*dto.AdminDatasetImageRes, error) {
path, err := service.Dataset.ImageFile(ctx, req.DatasetId, req.Filename)
if err != nil {
return nil, err
}
r := ghttp.RequestFromCtx(ctx)
r.Response.ServeFile(path)
return &dto.AdminDatasetImageRes{}, nil
}
// UploadCover 上传数据集封面
func (c *cAdmin) UploadCover(ctx context.Context, req *dto.AdminDatasetCoverUploadReq) (*dto.AdminDatasetCoverUploadRes, error) {
return service.Dataset.AdminUploadCover(ctx, req)
}
// Cover 封面访问(直写响应体;URL 不随封面更换变化,必须 no-store 防浏览器缓存旧图)
func (c *cAdmin) Cover(ctx context.Context, req *dto.AdminDatasetCoverReq) (*dto.AdminDatasetCoverRes, error) {
path, err := service.Dataset.CoverFile(ctx, req.DatasetId)
if err != nil {
return nil, err
}
r := ghttp.RequestFromCtx(ctx)
r.Response.Header().Set("Cache-Control", "no-store")
r.Response.ServeFile(path)
return &dto.AdminDatasetCoverRes{}, nil
}
// DeleteCover 删除数据集封面
func (c *cAdmin) DeleteCover(ctx context.Context, req *dto.AdminDatasetCoverDeleteReq) (*dto.AdminDatasetCoverDeleteRes, error) {
return service.Dataset.AdminDeleteCover(ctx, req)
}
// ---------- 训练编排 ----------
// ListTrainings 训练任务列表
func (c *cAdmin) ListTrainings(ctx context.Context, req *dto.AdminTrainingListReq) (*dto.AdminTrainingListRes, error) {
return service.Training.AdminListTrainings(ctx, req)
}
// StartTraining 发起训练
func (c *cAdmin) StartTraining(ctx context.Context, req *dto.AdminTrainingStartReq) (*dto.AdminTrainingStartRes, error) {
return service.Training.AdminStartTraining(ctx, req)
}
// TrainingDetail 训练任务详情
func (c *cAdmin) TrainingDetail(ctx context.Context, req *dto.AdminTrainingDetailReq) (*dto.AdminTrainingDetailRes, error) {
return service.Training.AdminTrainingDetail(ctx, req)
}
// CancelTraining 取消训练
func (c *cAdmin) CancelTraining(ctx context.Context, req *dto.AdminTrainingCancelReq) (*dto.AdminTrainingCancelRes, error) {
return service.Training.AdminCancelTraining(ctx, req)
}
// PublishTraining 发布模型版本
func (c *cAdmin) PublishTraining(ctx context.Context, req *dto.AdminTrainingPublishReq) (*dto.AdminTrainingPublishRes, error) {
return service.Training.AdminPublish(ctx, req)
}
// ---------- 预标注 ----------
// ListLabelTasks 预标注任务列表
func (c *cAdmin) ListLabelTasks(ctx context.Context, req *dto.AdminLabelTaskListReq) (*dto.AdminLabelTaskListRes, error) {
return service.LabelTask.AdminListLabelTasks(ctx, req)
}
// StartLabelTask 发起预标注
func (c *cAdmin) StartLabelTask(ctx context.Context, req *dto.AdminLabelTaskStartReq) (*dto.AdminLabelTaskStartRes, error) {
return service.LabelTask.AdminStartLabelTask(ctx, req)
}
// LabelTaskDetail 预标注任务详情(工作台数据)
func (c *cAdmin) LabelTaskDetail(ctx context.Context, req *dto.AdminLabelTaskDetailReq) (*dto.AdminLabelTaskDetailRes, error) {
return service.LabelTask.AdminLabelTaskDetail(ctx, req)
}
// LabelWorkbench 标注工作台数据(无历史任务时直接用数据集图片 + 已确认标注)
func (c *cAdmin) LabelWorkbench(ctx context.Context, req *dto.AdminLabelWorkbenchReq) (*dto.AdminLabelWorkbenchRes, error) {
return service.LabelTask.AdminLabelWorkbench(ctx, req)
}
// SaveLabel 保存单张图标注
func (c *cAdmin) SaveLabel(ctx context.Context, req *dto.AdminLabelSaveReq) (*dto.AdminLabelSaveRes, error) {
return service.LabelTask.AdminLabelSave(ctx, req)
}