package common import ( "context" "crypto/sha256" "encoding/hex" "path/filepath" "github.com/gogf/gf/v2/frame/g" ) // 训练体系运行时数据布局(config.yml app.datasetDir,默认 ./workspace,挂载持久化、不提交 git): // // datasets// 数据集图片(平铺,文件名唯一,标注存 DB dataset_image.labels_json) // trainings/.tflite 某数据集当前生效模型(训练成功即直写,客户端固定下载,无存档回退) // // 训练机与 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) } // TrainingModelPath 某数据集当前生效模型文件(训练成功即从训练机直写,客户端固定下载) func TrainingModelPath(ctx context.Context, datasetName string) string { return filepath.Join(DatasetDir(ctx), "trainings", datasetName+".tflite") } // Sha256Hex 计算文件内容 SHA-256 十六进制(模型版本校验用) func Sha256Hex(data []byte) (string, error) { sum := sha256.Sum256(data) return hex.EncodeToString(sum[:]), nil }