// @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") }