Files
observer/server/biz/controller/admin.go
T
2026-09-08 22:29:00 +08:00

285 lines
12 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package controller
import (
"context"
"strings"
"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)
}
// NegativeLibrary 获取负样本库(无则创建)
func (c *cAdmin) NegativeLibrary(ctx context.Context, req *dto.AdminDatasetNegativeReq) (*dto.AdminDatasetNegativeRes, error) {
return service.Dataset.AdminNegativeLibrary(ctx, req)
}
// NegativeGenerate 负样本批量生成(异步任务,含 RF-DETR 空检剔除)
func (c *cAdmin) NegativeGenerate(ctx context.Context, req *dto.AdminNegativeGenerateReq) (*dto.AdminNegativeGenerateRes, error) {
return service.Dataset.AdminNegativeGenerate(ctx, req)
}
// UploadImages 上传图片
func (c *cAdmin) UploadImages(ctx context.Context, req *dto.AdminDatasetUploadReq) (*dto.AdminDatasetUploadRes, error) {
return service.Dataset.AdminUploadImages(ctx, req)
}
// GenerateImages AI 生成图片(异步任务,返回 taskId 供轮询进度)
func (c *cAdmin) GenerateImages(ctx context.Context, req *dto.AdminDatasetGenerateReq) (*dto.AdminDatasetGenerateRes, error) {
return service.Dataset.AdminGenerateImages(ctx, req)
}
// GenTaskQuery 生成任务进度查询
func (c *cAdmin) GenTaskQuery(ctx context.Context, req *dto.AdminGenTaskQueryReq) (*dto.AdminGenTaskQueryRes, error) {
return service.Dataset.AdminGenTaskQuery(ctx, req)
}
// GenPools VLM 重新生成数据集生成参数池
func (c *cAdmin) GenPools(ctx context.Context, req *dto.AdminGenPoolsReq) (*dto.AdminGenPoolsRes, error) {
return service.Dataset.AdminGenPools(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)
}
// CleanPreview 数据清洗预览(桶分布/候选清单/已排除清单)
func (c *cAdmin) CleanPreview(ctx context.Context, req *dto.AdminDatasetCleanPreviewReq) (*dto.AdminDatasetCleanPreviewRes, error) {
return service.Dataset.AdminCleanPreview(ctx, req)
}
// CleanApply 数据清洗执行(批量置/清排除标记)
func (c *cAdmin) CleanApply(ctx context.Context, req *dto.AdminDatasetCleanApplyReq) (*dto.AdminDatasetCleanApplyRes, error) {
return service.Dataset.AdminCleanApply(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 防浏览器缓存旧图;
// datasetId=0 时按 name+filename 直读——新建对话框预生成封面回显)
func (c *cAdmin) Cover(ctx context.Context, req *dto.AdminDatasetCoverReq) (*dto.AdminDatasetCoverRes, error) {
path, err := service.Dataset.CoverFile(ctx, req.DatasetId, strings.TrimSpace(req.Name), strings.TrimSpace(req.Filename))
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)
}
// GenCover 生成数据集封面(z-image 文生图;编辑对话框「AI 生成封面」按钮入口,datasetId=0 新建预生成)
func (c *cAdmin) GenCover(ctx context.Context, req *dto.AdminGenCoverReq) (*dto.AdminGenCoverRes, error) {
return service.Dataset.AdminGenCover(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)
}
// VlmReview VLM 藏匿位补检(两阶段标注第二阶段;VL 与图像生成显存互斥,批量补检须在生成空闲时执行)
func (c *cAdmin) VlmReview(ctx context.Context, req *dto.AdminImageVlmReviewReq) (*dto.AdminImageVlmReviewRes, error) {
return service.LabelTask.AdminImageVlmReview(ctx, req)
}
// ---------- 标注众包(2026-09-04 ----------
// CreateAnnotateTask 下发标注任务
func (c *cAdmin) CreateAnnotateTask(ctx context.Context, req *dto.AdminAnnotateTaskCreateReq) (*dto.AdminAnnotateTaskCreateRes, error) {
return service.Annotate.AdminCreateTask(ctx, req)
}
// ListAnnotateTasks 标注任务列表
func (c *cAdmin) ListAnnotateTasks(ctx context.Context, req *dto.AdminAnnotateTaskListReq) (*dto.AdminAnnotateTaskListRes, error) {
return service.Annotate.AdminListTasks(ctx, req)
}
// StopAnnotateTask 停用标注任务
func (c *cAdmin) StopAnnotateTask(ctx context.Context, req *dto.AdminAnnotateTaskStopReq) (*dto.AdminAnnotateTaskStopRes, error) {
return service.Annotate.AdminStopTask(ctx, req)
}
// AnnotateReview 批量审核标注(通过/拒绝)
func (c *cAdmin) AnnotateReview(ctx context.Context, req *dto.AdminAnnotateReviewReq) (*dto.AdminAnnotateReviewRes, error) {
return service.Annotate.AdminReview(ctx, req)
}
// ListAnnotateRecords 用户标注记录列表
func (c *cAdmin) ListAnnotateRecords(ctx context.Context, req *dto.AdminAnnotateRecordListReq) (*dto.AdminAnnotateRecordListRes, error) {
return service.Annotate.AdminListRecords(ctx, req)
}
// UnfreezeAnnotate 手动解冻标注资格
func (c *cAdmin) UnfreezeAnnotate(ctx context.Context, req *dto.AdminAnnotateUnfreezeReq) (*dto.AdminAnnotateUnfreezeRes, error) {
return service.Annotate.AdminUnfreeze(ctx, req)
}
// ListFalseTargets 假目标上报列表
func (c *cAdmin) ListFalseTargets(ctx context.Context, req *dto.AdminFalseTargetListReq) (*dto.AdminFalseTargetListRes, error) {
return service.FalseTarget.AdminList(ctx, req)
}
// FalseTargetImage 假目标裁剪图预览(直写响应体)
func (c *cAdmin) FalseTargetImage(ctx context.Context, req *dto.AdminFalseTargetImageReq) (*dto.AdminFalseTargetImageRes, error) {
path, err := service.FalseTarget.ImageFile(ctx, req.Id)
if err != nil {
return nil, err
}
r := ghttp.RequestFromCtx(ctx)
r.Response.ServeFile(path)
return &dto.AdminFalseTargetImageRes{}, nil
}
// ReviewFalseTargets 审核假目标上报(通过=入负样本库;拒绝=删文件)
func (c *cAdmin) ReviewFalseTargets(ctx context.Context, req *dto.AdminFalseTargetReviewReq) (*dto.AdminFalseTargetReviewRes, error) {
return service.FalseTarget.AdminReview(ctx, req)
}