// Package main 是猪场控制系统的入口点
// 负责初始化核心应用并管理其生命周期
// @title 猪场管理系统API
// @version 1.0
// @description 猪场管理系统API文档
// @host localhost:8086
// @BasePath /
package main

import (
	"os"
	"os/signal"
	"syscall"

	"git.huangwc.com/pig/pig-farm-controller/internal/config"
	"git.huangwc.com/pig/pig-farm-controller/internal/core"
	"git.huangwc.com/pig/pig-farm-controller/internal/logs"
)

func main() {
	// 初始化日志记录器
	logger := logs.NewLogger()

	// 加载配置
	cfg := config.NewConfig()
	if err := cfg.Load("config.yml"); err != nil {
		logger.Error("配置加载失败: " + err.Error())
		os.Exit(1)
	}

	// 创建核心应用实例
	app := core.NewApplication(cfg)

	// 启动核心应用
	if err := app.Start(); err != nil {
		logger.Error("应用启动失败: " + err.Error())
		os.Exit(1)
	}

	// 记录应用启动成功
	logger.Info("应用启动成功")

	// 等待中断信号以优雅地关闭应用
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
	<-sigChan

	// 停止核心应用
	if err := app.Stop(); err != nil {
		logger.Error("应用停止失败: " + err.Error())
		os.Exit(1)
	}

	// 记录应用停止成功
	logger.Info("应用停止成功")
}
