4. 核心设计

4.1 统一设备画像结构

// 设备通信画像结构
type DeviceCommunicationProfile struct {
	DeviceID              string            // 设备唯一标识
	ChannelID             string            // 所属通道ID
	ProtocolType          string            // 协议类型
	SlaveID               interface{}       // 从站ID
	AvgResponseTime       time.Duration     // 平均响应时间
	MaxResponseTime       time.Duration     // 最大响应时间
	ErrorRate             float64           // 错误率
	StabilityScore        float64           // 稳定性得分 (0-1)
	OptimalTimeout        time.Duration     // 最优超时时间
	OptimalInterval       time.Duration     // 最优采集间隔
	RetryCount            int               // 重试次数
	BatchSize             int               // 批量读取大小
	ProtocolParams        map[string]interface{} // 协议特定参数
	LastUpdated           time.Time         // 最后更新时间
	CollectionSuccessRate float64           // 采集成功率
	AbnormalPointCount    int               // 异常点位数量
	ConsecutiveFailures   int               // 连续失败次数
	// RTT相关字段
	RTTSamples      []int64           // RTT采样数据
	RTTSampleWindow int               // RTT采样窗口大小
	EWMARTT         int64             // 指数加权移动平均RTT
	// MTU相关字段
	CurrentMTU      int               // 当前MTU值
	MaxMTU          int               // 最大MTU值
	MinMTU          int               // 最小MTU值
	// Gap合并相关字段
	CurrentGap      int               // 当前Gap值
	MaxGap          int               // 最大Gap值
	GapFillStrategy int               // Gap填充策略
	// 心跳相关字段
	HeartbeatInterval int             // 心跳间隔
	LastActivity    time.Time         // 最后活跃时间
}

4.2 智能适配接口

// 智能适配接口
type DeviceAdapter interface {
	// 获取设备画像
	GetProfile(deviceID string) (*DeviceCommunicationProfile, error)
	
	// 更新设备画像
	UpdateProfile(deviceID string, responseTime time.Duration, err error, successCount, failCount int)
	
	// 获取最优采集参数
	GetOptimalParams(deviceID string) (map[string]interface{}, error)
	
	// 标记设备状态
	MarkDeviceStatus(deviceID string, status string)
	
	// 获取设备状态
	GetDeviceStatus(deviceID string) string
	
	// 批量优化
	OptimizeBatchCollection(devices []string) []string
	
	// RTT统计
	UpdateRTT(deviceID string, rtt int64)
	
	// MTU协商
	NegotiateMTU(deviceID string) error
	
	// Gap优化
	OptimizeGap(deviceID string) int
}

4.3 协议适配器接口

// 协议适配器接口
type ProtocolAdapter interface {
	// 协议类型
	ProtocolType() string
	
	// 初始化设备参数
	InitDeviceParams(deviceID string) error
	
	// 调整协议特定参数
	AdjustProtocolParams(profile *DeviceCommunicationProfile) error
	
	// 验证设备响应
	ValidateResponse(deviceID string, response interface{}, err error) bool
	
	// 获取协议默认参数
	GetDefaultParams() map[string]interface{}
	
	// 获取协议MTU范围
	GetMTURange() (min, max int)
	
	// 计算最优Gap值
	CalculateOptimalGap(profile *DeviceCommunicationProfile) int
	
	// 构建心跳包
	BuildHeartbeatPacket(deviceID string) ([]byte, error)
}