Files
observer/server/common/workspace.go
T
2026-08-29 01:11:01 +08:00

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