package main

import "time"

// CPU相关信息
type CPUMetrics struct {
	Model        string      `json:"model"`
	Cores        int         `json:"cores"`
	UsagePercent float64     `json:"usagePercent"`
	LoadAverages []float64   `json:"loadAverages,omitempty"`
	Temperature  float64     `json:"temperature,omitempty"`  // CPU温度(摄氏度)
	PerCoreUsage []CoreUsage `json:"perCoreUsage,omitempty"` // 每个核心使用率
}

type CoreUsage struct {
	Core    int     `json:"core"`
	Percent float64 `json:"percent"`
}

// 内存相关信息
type MemoryMetrics struct {
	TotalBytes  uint64  `json:"totalBytes"`
	UsedBytes   uint64  `json:"usedBytes"`
	FreeBytes   uint64  `json:"freeBytes"`
	UsedPercent float64 `json:"usedPercent"`
}

// 储存相关信息
type StorageMetrics struct {
	Mount       string  `json:"mount"`
	TotalBytes  uint64  `json:"totalBytes"`
	UsedBytes   uint64  `json:"usedBytes"`
	FreeBytes   uint64  `json:"freeBytes"`
	UsedPercent float64 `json:"usedPercent"`
}

// GPU相关信息
type GPUMetrics struct {
	Name               string  `json:"name"`
	MemoryTotalMB      int64   `json:"memoryTotalMB"`
	MemoryUsedMB       int64   `json:"memoryUsedMB"`
	UtilizationPercent float64 `json:"utilizationPercent"`
	Temperature        float64 `json:"temperature,omitempty"` // GPU温度(摄氏度)
	Status             string  `json:"status"`
}

// 网络相关信息
type NetworkInterface struct {
	Name       string  `json:"name"`
	IPAddress  string  `json:"ipAddress"`
	MACAddress string  `json:"macAddress"`
	RxBytes    uint64  `json:"rxBytes"` // 接收字节数
	TxBytes    uint64  `json:"txBytes"` // 发送字节数
	RxSpeed    float64 `json:"rxSpeed"` // 接收速度 bytes/s
	TxSpeed    float64 `json:"txSpeed"` // 发送速度 bytes/s
}

// 系统状态相关信息
type SystemStats struct {
	ProcessCount   int           `json:"processCount"`          // 进程数量
	PackageCount   int           `json:"packageCount"`          // 已安装软件包数量
	PackageManager string        `json:"packageManager"`        // 包管理器类型
	Temperature    float64       `json:"temperature,omitempty"` // 系统温度(摄氏度)
	DiskReadSpeed  float64       `json:"diskReadSpeed"`         // 磁盘读取速度 MB/s
	DiskWriteSpeed float64       `json:"diskWriteSpeed"`        // 磁盘写入速度 MB/s
	NetworkRxSpeed float64       `json:"networkRxSpeed"`        // 网络下载速度 MB/s
	NetworkTxSpeed float64       `json:"networkTxSpeed"`        // 网络上传速度 MB/s
	TopProcesses   []ProcessInfo `json:"topProcesses"`          // Top 5 进程
	DockerStats    DockerStats   `json:"dockerStats"`           // Docker 统计信息
	SystemLogs     []string      `json:"systemLogs"`            // 系统最新日志
}

// 服务器进程相关信息
type ProcessInfo struct {
	PID      int     `json:"pid"`
	Name     string  `json:"name"`
	CPU      float64 `json:"cpu"`
	Memory   float64 `json:"memory"`
	MemoryMB float64 `json:"memoryMB"` // 内存占用MB
	Command  string  `json:"command"`
}

// Docker相关信息（简化版）
type DockerStats struct {
	Available      bool     `json:"available"`      // Docker是否可用
	Version        string   `json:"version"`       // Docker版本
	Running        int       `json:"running"`       // 运行中的容器数
	Stopped        int       `json:"stopped"`       // 停止的容器数
	ImageCount     int       `json:"imageCount"`    // 镜像数量
	RunningNames   []string  `json:"runningNames"`  // 运行中的容器名列表
	StoppedNames   []string  `json:"stoppedNames"`  // 停止的容器名列表
	ImageNames     []string  `json:"imageNames"`    // 镜像名列表
}

// 操作系统相关信息
type OSInfo struct {
	Kernel       string `json:"kernel"`
	Distro       string `json:"distro"`
	Architecture string `json:"architecture"`
}

// 所有注册指标
type Metrics struct {
	Hostname      string             `json:"hostname"`
	Timestamp     time.Time          `json:"timestamp"`
	CPU           CPUMetrics         `json:"cpu"`
	Memory        MemoryMetrics      `json:"memory"`
	Storage       []StorageMetrics   `json:"storage"`
	GPU           []GPUMetrics       `json:"gpu"`
	Network       []NetworkInterface `json:"network"`
	System        SystemStats        `json:"system"`
	OS            OSInfo             `json:"os"`
	UptimeSeconds float64            `json:"uptimeSeconds"`
}
