feat: calculate when upload.
This commit is contained in:
@ -79,6 +79,33 @@ func (tc *StepTrainingController) CreateTrainingRecord(c *gin.Context) {
|
|||||||
return nil
|
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 {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user