Files
observer/server/common/workspace.go
T
2026-08-26 18:15:54 +08:00

46 lines
1.7 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 common
import (
"context"
"crypto/sha256"
"encoding/hex"
"path/filepath"
"strconv"
"github.com/gogf/gf/v2/frame/g"
)
// 训练体系运行时数据布局(config.yml app.datasetDir,默认 ./workspace,挂载持久化、不提交 git):
//
// datasets/<name>/ 数据集图片(平铺,文件名唯一,标注存 DB dataset_image.labels_json
// models/<name>/ latest.tflite 当前生效副本(无存档,客户端固定下载)
// trainings/<taskId>/ 训练产物(best.tflite + artifact.zip
//
// 训练机与 Go 服务器异机时,数据集经 training 通道同步(见 common/training_runner.go)。
// DatasetDir 训练体系运行时数据根目录:config.yml app.datasetDir(默认 ./workspace
func DatasetDir(ctx context.Context) string {
return g.Cfg().MustGet(ctx, "app.datasetDir", "./workspace").String()
}
// DatasetImagesDir 某数据集图片目录
func DatasetImagesDir(ctx context.Context, datasetName string) string {
return filepath.Join(DatasetDir(ctx), "datasets", datasetName)
}
// DatasetModelsDir 某数据集模型目录
func DatasetModelsDir(ctx context.Context, datasetName string) string {
return filepath.Join(DatasetDir(ctx), "models", datasetName)
}
// TrainingArtifactsDir 某训练任务产物目录(拉回的 best.tflite + artifact.zip
func TrainingArtifactsDir(ctx context.Context, taskId int64) string {
return filepath.Join(DatasetDir(ctx), "trainings", strconv.FormatInt(taskId, 10))
}
// Sha256Hex 计算文件内容 SHA-256 十六进制(模型版本校验用)
func Sha256Hex(data []byte) (string, error) {
sum := sha256.Sum256(data)
return hex.EncodeToString(sum[:]), nil
}