This commit is contained in:
2026-08-27 11:04:56 +08:00
parent 0ca8f4c3ab
commit bb7bac3dee
30 changed files with 171 additions and 260 deletions
+4 -12
View File
@@ -8,8 +8,8 @@ import (
// 模型训练体系接口(数据集 → 标注 → 训练 → 模型版本),组前缀 /api/v1/admin。
// 图片/标注/模型文件均在服务器磁盘(app.datasetDir),DB 只存元数据。
// 图片访问与 zip 导出为直接写响应体场景,由 controller 以 *ghttp.Request 方法实现
// (见 controller/admin.go 的 Image/ExportDataset 方法)。
// 图片访问为直接写响应体场景,由 controller 以 *ghttp.Request 方法实现
// (见 controller/admin.go 的 Image 方法)。
// ---------- 数据集管理 ----------
@@ -140,15 +140,7 @@ type AdminDatasetImageReq struct {
type AdminDatasetImageRes struct{}
// AdminDatasetExportReq 数据集 zip 导出(直写响应体下载;标注衔接与备份用
type AdminDatasetExportReq struct {
g.Meta `path:"/datasets/export" method:"get" summary:"导出数据集 zip" tags:"管理端"`
DatasetId int64 `json:"datasetId" v:"required|min:1" dc:"数据集 id"`
}
type AdminDatasetExportRes struct{}
// AdminDatasetCoverUploadReq 上传数据集封面(multipart 单文件;覆盖旧封面,存图片目录 cover<ext>
// AdminDatasetCoverUploadReq 上传数据集封面(multipart 单文件;覆盖旧封面,UUID 命名 jpg
type AdminDatasetCoverUploadReq struct {
g.Meta `path:"/datasets/cover" method:"post" summary:"上传数据集封面" tags:"管理端" mime:"multipart/form-data"`
DatasetId int64 `json:"datasetId" v:"required|min:1" dc:"数据集 id"`
@@ -367,7 +359,7 @@ type ModelCatalogItem struct {
Sha256 string `json:"sha256"`
Notes string `json:"notes"`
PublishedAt *gtime.Time `json:"publishedAt"`
DownloadUrl string `json:"downloadUrl"` // /download/models/<name>/latest.tflite
DownloadUrl string `json:"downloadUrl"` // /download/trainings/<name>.tflite
}
type ModelCatalogRes struct {
+2 -4
View File
@@ -2,16 +2,14 @@ package entity
import "github.com/gogf/gf/v2/os/gtime"
// LabelTask 标注任务:RF-DETR 预标注批量推理进度;候选框存
// datasets/<数据集名>/boxes.jsonYOLO 归一化 xywh + 置信度 + 建议类别)。
// Filenames 为选中图片列表(JSON 数组串;空 = 全量扫描)。
// LabelTask 标注任务:RF-DETR 预标注批量推理进度;标注结果直写
// dataset_image.labels_json,不落文件。Filenames 为选中图片列表(JSON 数组串;空 = 全量扫描)。
type LabelTask struct {
Id int64 `json:"id" orm:"id" description:"自增主键"`
DatasetId int64 `json:"datasetId" orm:"dataset_id" description:"所属数据集"`
Status string `json:"status" orm:"status" description:"running|done"`
Total int `json:"total" orm:"total" description:"待标注图片数"`
Done int `json:"done" orm:"done" description:"已处理数"`
BoxesFile string `json:"boxesFile" orm:"boxes_file" description:"候选框 JSON 相对路径"`
Filenames string `json:"filenames" orm:"filenames" description:"选中图片JSON数组(空=全量)"`
Error string `json:"error" orm:"error" description:"失败原因(部分失败/全部失败)"`
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"`
+12 -13
View File
@@ -3,19 +3,18 @@ package entity
import "github.com/gogf/gf/v2/os/gtime"
// ModelVersion 模型版本:每数据集独立版本序列(m1.0.0 递增,UNIQUE(dataset_id, version))。
// 模型文件不落表:发布即写当前生效副本 models/<数据集>/latest.tflite(无存档回退机制);
// 模型文件不落表:训练成功即直写 trainings/<数据集名>.tflite(无存档回退机制);
// labels 为类别名数组 JSON(App 多模型合并推理依赖)。
type ModelVersion struct {
Id int64 `json:"id" orm:"id" description:"自增主键"`
DatasetId int64 `json:"datasetId" orm:"dataset_id" description:"所属数据集"`
Version string `json:"version" orm:"version" description:"m1.0.0 递增"`
TrainingId int64 `json:"trainingId" orm:"training_id" description:"来源训练任务"`
ArtifactFile string `json:"artifactFile" orm:"artifact_file" description:"归档 zip 相对路径"`
Metrics string `json:"metrics" orm:"metrics" description:"JSON 指标"`
Labels string `json:"labels" orm:"labels" description:"JSON 类别名数组"`
Sha256 string `json:"sha256" orm:"sha256" description:"tflite 文件校验"`
SizeBytes int64 `json:"sizeBytes" orm:"size_bytes" description:"文件大小"`
IsLatest int `json:"isLatest" orm:"is_latest" description:"1=该数据集当前生效"`
Notes string `json:"notes" orm:"notes" description:"备注"`
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"发布时间"`
Id int64 `json:"id" orm:"id" description:"自增主键"`
DatasetId int64 `json:"datasetId" orm:"dataset_id" description:"所属数据集"`
Version string `json:"version" orm:"version" description:"m1.0.0 递增"`
TrainingId int64 `json:"trainingId" orm:"training_id" description:"来源训练任务"`
Metrics string `json:"metrics" orm:"metrics" description:"JSON 指标"`
Labels string `json:"labels" orm:"labels" description:"JSON 类别名数组"`
Sha256 string `json:"sha256" orm:"sha256" description:"tflite 文件校验"`
SizeBytes int64 `json:"sizeBytes" orm:"size_bytes" description:"文件大小"`
IsLatest int `json:"isLatest" orm:"is_latest" description:"1=该数据集当前生效"`
Notes string `json:"notes" orm:"notes" description:"备注"`
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"发布时间"`
}