From 8d8dd26a2c7537643ba0b75855883a6d2f652252 Mon Sep 17 00:00:00 2001 From: laoboli <1293528695@qq.com> Date: Tue, 5 Aug 2025 10:55:19 +0800 Subject: [PATCH] feat: calculate when upload. --- controllers/step_train.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/controllers/step_train.go b/controllers/step_train.go index f4ac3e5..a7b9471 100644 --- a/controllers/step_train.go +++ b/controllers/step_train.go @@ -79,6 +79,33 @@ func (tc *StepTrainingController) CreateTrainingRecord(c *gin.Context) { return nil }) + // ====== 新增部分:启动异步回归计算 ====== + go func() { + // 查询完整数据(需要关联的心率和步频数据) + var fullRecord models.StepTrainRecord + if err := tc.DB. + Where("train_id = ?", record.TrainId). + Preload("HeartRates", "heart_rate_type = ?", 1). // 只要有效心率 + Preload("StrideFreqs", "predict_value = ?", 1). // 只要有效步频 + First(&fullRecord).Error; err != nil { + log.Printf("训练记录%d查询失败,无法计算回归: %v", record.TrainId, err) + return + } + + // 检查数据是否满足计算条件 + if len(fullRecord.HeartRates) == 0 || len(fullRecord.StrideFreqs) == 0 { + log.Printf("训练记录%d缺少心率或步频数据,跳过回归计算", record.TrainId) + return + } + + // 计算并保存回归结果 + if _, err := tc.GetOrCalculateRegression(fullRecord.TrainId); err != nil { + log.Printf("训练记录%d回归计算失败: %v", fullRecord.TrainId, err) + } else { + log.Printf("训练记录%d回归结果已保存", fullRecord.TrainId) + } + }() + if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return