Files
hr_data_analyzer/main.go
T
2026-05-04 16:20:46 +08:00

89 lines
2.6 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.
// @title 智能心率采集分析平台 API
// @version 1.0
// @description 智能心率采集分析平台后端服务,基于 Gin 框架提供心率采集、AI 分析、教案管理、设备管理等功能
// @host localhost:8081
// @BasePath /api/v1
// @securityDefinitions.apikey BearerAuth
// @in header
// @name Authorization
package main
import (
"hr_receiver/config"
"hr_receiver/controllers"
"hr_receiver/models"
"hr_receiver/mqtt"
"hr_receiver/routes"
"log"
)
func main() {
// 初始化配置
config.InitConfig()
// 连接数据库
config.ConnectDB()
config.DB.Debug()
// 自动迁移模型
config.DB.AutoMigrate(&models.TrainRecord{},
&models.TrainingData{},
&models.Belt{},
&models.HeartRate{},
&models.BeltAnalysis{},
&models.StepTrainRecord{},
&models.StepHeartRate{},
&models.StepStrideFreq{},
&models.RegressionResult{},
&models.User{},
&models.UserRegionBinding{},
&models.Kindergarten{},
&models.ProjectType{},
&models.ProductDefinition{},
&models.ProductPrototype{},
&models.ProjectProductTemplate{},
&models.ProductInventory{},
&models.ProductSuite{},
&models.AppFile{},
&models.AppFileShareCode{},
&models.MqttHeartRateRecord{},
&models.MqttStepCountRecord{},
&models.MqttGatewayStatusRecord{},
&models.MqttTrainingSessionRecord{},
&models.Gateway{},
&models.AIAnalysisRecord{},
&models.AIPricingConfig{},
)
if err := models.BackfillLegacyUserPermissions(config.DB); err != nil {
log.Printf("legacy user permission backfill failed: %v", err)
}
if err := models.EnsureDefaultAdmin(config.DB); err != nil {
log.Printf("default admin init failed: %v", err)
}
if err := models.EnsureDefaultAIPricing(config.DB); err != nil {
log.Printf("default ai pricing init failed: %v", err)
}
if err := models.EnsureDefaultProjectTypes(config.DB); err != nil {
log.Printf("default project types init failed: %v", err)
}
if err := models.EnsureDefaultProductDefinitions(config.DB); err != nil {
log.Printf("default product definitions init failed: %v", err)
}
if err := models.EnsureDefaultProductPrototypes(config.DB); err != nil {
log.Printf("default product prototypes init failed: %v", err)
}
if err := models.EnsureDefaultProjectProductTemplates(config.DB); err != nil {
log.Printf("default project product templates init failed: %v", err)
}
if err := mqtt.Start(config.DB, config.App.MQTT); err != nil {
log.Printf("mqtt listener start failed: %v", err)
}
mqtt.InitDebugService(config.DB, config.App.MQTT)
controllers.StartLessonPlanCleanupJob(config.DB)
// 启动服务
r := routes.SetupRouter()
r.Run(":8081")
}